Vai al contenuto

2024

(FrameN)X.

Sono sicuramente un po' paxxerella per iniziare nuovi progettini mezzi complicati ancora prima di finire i precedenti, ma che ci voglio fare? Quantomeno, a 'sto giro ho effettivamente portato #FrameNX, il programma iniziato ieri, ad uno stato di completezza, tant'è che da ora penso non avrò alcun intoppo ad usarlo... e quindi l'ho anche rilasciato già stasera pubblicamente con tanto di README quasi logorroico (il link di stamattina era privato): https://octt.itch.io/framenx 🪟

La UI è ancora grezza, ma ho migliorato i messaggi a schermo, aggiungendo avvisi a scomparsa quando si verifica un errore o viene fatta un'azione (qualcuno l'ho dimenticato però oooops, dovrò metterlo, ma poca roba). Funziona in ogni caso solo con la tastiera, perché il mouse è dannoso e #programmare le hitbox sarebbe uno sbattimento in più per nessun buon motivo, dato che comunque questa per ora è una #applicazione solo PC. (Ormai si sta costruendo una lore dietro questa interfaccia, ops.) ☠️

In realtà sotto la scocca quella UI è comunque più complicata di quanto sembra, anche se è relativamente semplice, perché in primis già solo per le notifiche ho dovuto implementare tutto un sistema di coda... poi ho dovuto mettere il rendering video su un thread separato, perché l'accesso alla camera rallentava tutto il loop e quindi avrebbe inficiato sulla lettura degli input... ma spostarmi su un thread di sfondo ha introdotto non pochi casi limite strani che ho dovuto sistemare con ancora più codice... Comunque relativamente poco #codice, perché il #Python è simpatico e non è stato creato da gente che vuole vedere gli altri programmatori impiccarsi. 🦍

Btw, ho continuato a trovare altri problemi in #Pygame... Innanzitutto, un bug strano con lo stack dei joystick (cioè controller da gioco in generale, direi che il nome è scelto malino) che fa si che questi non mandino più eventi dopo essere stati inizializzati se non se ne tiene qualche reference nel codice (come una variabile assegnata che non muore), come se fossero levati dal garbage collector altrimenti... stranissimo. E poi, il fatto che per riprodurre il suono di dispositivi di input audio, tra metodi non wrappati e quindi richiamabili solo con la API grezza di SDL2, stack audio buggato in generale e comandi che letteralmente non sortiscono effetto, altri comandi che invece causano segfault alla chiusura del #programma... mi pare di stare programmando con una tempesta di raggi cosmici addosso. Ciò non lo gradisco. 😾

framionx..

Ieri ho effettivamente provato un po' il #gaming Switch dal 3DS in portatilità, alla fine, e... che dire. 7/10. Certo, ogni tanto la connessione fa scherzetti e il gioco inizia a freezare per un po', ma nel complesso si gioca con un lag accettabile e un video senza strani artefatti, veramente apprezzabile. Devo però capire perché in certi rari momenti il client crasha completamente invece di riuscire a ristabilire la connessione, e temo anche la batteria del 3DS si appiattisca troppo velocemente con questa #applicazione... ma vabbè, a sistema consolidato potrei anche usare il telefono. 🐚

Visto che voglio provare meglio il setup, mi sono portata avanti e ho fatto un programmino per #PC che legge direttamente gli input del gamepad virtuale e li invia alla #console; quindi, eliminando quegli altri due programmi necessari, sostituendoli con uno solo. La finestra inoltre visualizza il video da dispositivi di cattura standard, e quando lo implementerò riprodurrà anche audio, quindi sostituirà anche il riproduttore multimediale... per ora non ho ancora la scheda di cattura HDMI, quindi devo ancora usare SysDVR, ma almeno mi mostra il video della webcam (che mi serve per navigare nei menu di sistema, il DVR non lo trasmette), quindi già scendo da 4 app e finestre a solo 2. ✨️

Implementare la lettura degli input del controller, e l'invio al demone sys-botbase tramite socket TCP, è stato un po' intricato, ma alla fine il codice è venuto pulito, i tasti rimappabili tramite file config, e sorprendentemente sembra tutto ben funzionante dal primo momento... Nel senso, i comandi sembrano rispondere bene senza particolari accorgimenti; anzi, anche meglio di NXController, perché io invio direttamente i valori degli stick analogici alla console, mentre lui deve leggere valori rimappati alla tastiera e quindi tutti digitali. In effetti non ci avevo pensato quando mi era venuta questa #idea, ma effettivamente ho migliorato la mia #UX anche in questo modo, ora ho input più precisi. 🤏️

Volevo inizialmente usare Ren'Py, ma ho subito scoperto che non include funzioni per accedere ai dispositivi video, né tantomeno ha la classe camera nella sua implementazione di #Pygame, quindi... ho usato semplicemente Pygame, e in poche righe di codice funziona già tanta roba, anche se la UI non è delle migliori. Dovrò investigare se davvero non ci sarebbe stato verso di usare l'altro engine oppure si, perché potrebbe tornare utile in futuro. Ancora versione molto WIP, diversi bug da sistemare, ma almeno l'ho già caricata qui... poi creerò anche dei pacchetti standalone (che includono già #Python e le librerie) per Windows e Linux. L'ho chiamato #FrameNX comunque, meglio evitare qualunque pretesto di violazione del trademark di #Nintendo per il nome #Switch... 🚨️

Ma, ovviamente, non era un mio #progetto secondario se non saltava fuori un #problema inaspettato mentre programmavo e testavo... il codice che controlla la versione dell'OS di pygame.camera è rotto su Windows Server, e quindi l'inizializzazione fallisce... evviva. L'ho identificato e sistemato subito, ho anche inviato la PR #4221, quindi non è stato un vero problema, però... che cazzo, non è possibile che tutto quello che finisce in mano a me si rompe... trovare bug in librerie così utilizzate e famose senza fare nulla di particolare non è roba da tutti, eppure ormai siamo ad uno a settimana, e chissà cosa mi riserva il futuro. 💣️

renprovine

Oggi ho un altro po' sperimentato con #RenPy, e la questione si fa sempre più #interessante... è evidente che questo #engine è così potente e flessibile da essere utilizzabile anche per ben più di semplici visual novel. È quasi un Pygame ma estremamente cross-platform già fuori dalla scatola, con tantissime cose di base già implementate, ed astrazioni comode (tra cui il suo dialetto di #Python) che anche da sole tappano sotto certi aspetti il buco tra stato del programma ed interazioni con gli utenti... devo assolutamente provare a realizzarci qualche esperienza interattiva anche di tipo diverso. 😳️

A parte essere una scusa per provare le varie cose del caso a livello di programmazione, ho fatto un progetto di testing per... testare, appunto. L'ho messo nella scatolina dell'altro giorno come promesso assieme a tutto il resto, ma ecco anche il link diretto alla versione web: ...Miscellanea Testing. Il nome è tutto un programma, si, ma mai quanto la musica di sottofondo che parte appena si entra nel menu interno dell'applicazione (aka quando si fa partire la visual novel, che in questo caso non è tale però lol)... per ovvi motivi è la versione strumentale, ma vi sfido a indovinarla solo ascoltando, la conoscete sicuramente. Potete notare già una delle robe che il motore rende estremamente facile, nel modo in cui la canzone viene loopata, se fate attenzione. 💥️

Comunque a parte l'atmosfera che ho realizzato in giro per le schermate (che suppongo sia una #feature), per ora l'unica cosa che c'è è questo stress #test. Mi serviva un qualche minimo strumento per valutare meglio le prestazioni di Ren'Py in diversi ambienti di esecuzione, e online non ho trovato nulla, quindi ho arrangiato io qualcosa con un po' di codice condiviso da altri utenti, un po' scritto da me (quello che disegna il grafico bianco, che indica il tempo passato da un frame al precedente), e tante tante cose inutili che si muovono a schermo solo per spremere CPU e GPU. E, tra l'altro, proprio per via del setup che avviene dietro le quinte per tutti quei fiocchi di neve (ancora non ho capito però perché e come risolvere), tutto il #programma impiega una significativa quantità di tempo anche solo a partire, specialmente su browser mobile... dovrò sistemare per non sclerare, uff. 💀️

chiaro di luna

Aggiornamenti sulla questione chiaro di luna, anche se sicuramente questo non sarà l'ultimo post a riguardo: a meno che ciò che ho appena ora finito di architettare dovesse saltare per aria, già dopodomani proverò questo setup regolarmente fuori casa, sul campo, e ciò decreterà se effettivamente è una buona #soluzione per il #gaming oppure ho preso l'ennesima cantonata... 👀

Sia ieri sera in cui non l'ho detto bene riguardo il fisso, sia stasera per fare la #configurazione sul portatile (più ideale per questo caso d'uso, consuma meno e il WiFi è forse un po' più stabile), ho dovuto copincollare dei comandi dalla documentazione di #Sunshine per far funzionare il gamepad virtuale. Una volta fatto ciò, per giochi come SuperTuxKart non c'è bisogno di fare oltre, ma per altra roba invece ho dovuto usare AntiMicroX per mappare gli input del controller ad input di tastiera. Nel mio caso, mi serve per inviare gli input ad NXController. 🪰

Quest'ultimo programmino ha qualche difetto, tipo che la sua finestra deve stare in focus per leggere gli input (io la metto nell'angolino in modo che non copra il gioco) e che la mappatura dello stick va cambiata dai tasti freccia ad altri, perché altrimenti per qualche ragione non funziona bene; però il suo lavoro lo fa, e via WiFi invia tutti gli input alla console #Switch sulla LAN. E dall'altro lato, il video della #console è trasmesso al PC tramite USB con SysDVR, ed arriva praticamente perfetto e con zero latenza... roba che importa poco, perché tanto in ogni caso io ci metto lo streaming da sopra. 🐌

Insomma, è un po' complicato usare Switch come server di #cloudgaming, ma con il PC così correttamente configurato si può fare... e quindi in giro anziché portarmi la console grossa e pesante mi porto il #Nintendo #3DS (o, in realtà, anche solo il telefono, dipende). Da un certo punto di vista è meglio comunque questa configurazione rispetto ad eseguire giochi nativi PC perché, a parte che dovrei usare per forza il fisso in quel caso, i giochi su PC (a meno di non emulare Switch, ma a quel punto perché non usare la reale?) sono un estremo dolore da gestire quando hai sia la sfiga di usare Linux, che quella di non poterli comprare. Quindi vabbè. 🏴‍☠️🏴‍☠️

Sempre ammesso che le prestazioni siano godibili in giro, spero solo che la preparazione da fare ogni volta prima di uscire di casa per #giocare non sia mentalmente troppa... in teoria sul PC posso usare uno script per aprire in automatico tutto, e l'unica cosa che dovrei ricordarmi di fare è accendere lui e collegare #NintendoSwitch, quindi spero non sia eccessivo. (...Ah e poi, anche piazzare la console sotto alla webcam del portatile come in foto, perché altrimenti non riesco a navigare nei menu, SysDVR non mirrora quelli... ma questo è un problema che risolverò con la scheda di cattura da €4.) 🙏

luna gaming

Beh, qualcuno a quanto pare ha portato #Moonlight al (new) #3DS: https://github.com/zoeyjodon/moonlight-N3DS. Il #porting che avrei sempre voluto fare, ma che non c'è mai stato verso, ora è reale, e alla faccia di chi lo credeva impossibile... perché gira persino infinitamente meglio del client per Switch. È vero che qui la risoluzione è molto inferiore, ma lì anche abbassando al minimo era tutto quasi ingiocabile, tra stutter e artefatti di compressione a non finire. Qui il bitrate è ottimo, e il framerate meh ma comunque più che utilizzabile. Ovviamente, è trasmesso anche l'audio. 🐔

Sarebbe una buona idea per evitare di far ricadere a prendere polvere il mio #new3DSXL, che quando si corrompono i salvataggi mi passa sempre la voglia di giocare, ma usandolo semplicemente come client per lo #streaming dei #giochi in cloud non dovrei più preoccuparmi. È molto più ideale una #console come quella per questo scopo, rispetto ad un telefono, per via dei tasti fisici. Dovrò effettivamente vedere come si comporta su rete mobile quando sono in culandia, o magari in bus in autostrada, tutti questi casi più specifici che però sono quelli che davvero devono funzionare, altrimenti è tutto inutile... sarebbero quelli i momenti in cui mi interesserebbe il #gaming pazzo. 🐙

Ora ho potuto provare solo a casa con #SuperTuxKart sul mio PC (server Sunshine), e appunto per i miei gusti riesco a giocare, sul WiFi. Però, l'ho provato con la linea 4G sempre qui, e... beh, con qualsiasi cosa che non sia il mio telefono a fare da hotspot funziona bene (ma in giro non funzionerà così bene), però ho appena scoperto che con lo Ximi stuttera ogni 2 secondi, rendendo l'esperienza non esattamente ingiocabile, ma comunque a dir poco infuriante; ho cambiato varie opzioni della rete mobile, ma niente. Questa è [la volta buona che compro davvero il Kaiosofonino](../../../2024/03/19/adrode-trolling-sempre-peggio.md), cazzarola, se 'sto rottame che mi ritrovo non è buono manco a fare da hotspot... 😩

renpiscatola

Non fate caso al nuovo buco nel postaggio, ieri come avevo promesso ho tradotto The Question di Ren'Py e inviato la pull request, chissà quando pure questa verrà unita all'upstream quindi... a giudicare da come sono state gestite le traduzioni in passato lì, avverrà o a giorni o giusto per la prossima release. Per il Tutorial ora non so quando riuscirò a completare la traduzione, ma comunque, ho fatto caso al fatto che entrambe le novel dimostrative non sono messe online per essere testate senza scaricare l'SDK, e non credo che altri lo abbiano già fatto, quindi... perché no? Possono tornare utili per #reference al volo da qualunque dispositivo. 🌚️

Allora ho deciso di creare una paginetta #collezione per raccogliere queste ultime due cose, anche per sperimentare di più con #RenPy, più altre che avrei già in mente, che sicuramente torneranno utili nel breve futuro. Quattro cose in programma da esplorare sono: il bundling dei giochi in file HTML standalone, la generazione di pacchetti per piattaforme diverse tramite web (e nello specifico, la generazione di pacchetti nativi a partire dal binario HTML), miglioramenti radicali alla schermata di caricamento web, e l'adattamento dello schermo a qualsiasi rapporto d'aspetto. E posso metterle tutte in ordine su: https://octt.itch.io/a-renpy-demo-box/. 🎰️

Ho caricato la #pagina su Itch, come avevo accennato, perché so già che per alcune di queste robe dovrò andare oltre il limite di 100 MB per file delle pagine Git, e a parte il mio server in casa (dove ho poco spazio libero) non saprei quindi dove mettere tutto. Ma forse è buono, è capace che più gente la trovi e ne goda, che ne so... E, per evitare di impazzire caricando due volte gli ZIP per permettere il download a chi vuole, ho deciso di usare JSZip per aggiungere un tastino che, beh, scarica lato client tutti i file del server e li zippa per gli utenti; molto lmao in quanto creare cartelle compresse a livello 9 con un linguaggio interpretato non è velocissimo (potrebbero servire da decine di secondi a minuti), ma funziona bene. ✨️

E, come se non avessi già cacciato troppe scuse in questa storia, ne ho approfittato per rendere bellina la pagina provando qualche tecnica per me nuova: il coso si chiama A Ren'Py Demo Box, quindi mi sembrava più che giusto creare una letterale scatola di cartone, da cui esce un foglio di carta con una lista di link, usando le trasformazioni 3D del #CSS... c'è voluto un pochino. Spero che lo sfondo animato preso in prestito sia sufficientemente strano da creare la giusta atmosfera, soprattutto in aiuto con la scatolina, ma non fate caso al fatto che su mobile la scritta in basso è tagliata... su desktop appare giusta, pezzi. 😤️

renpitoniche traduzioni

Ecco anche oggi un'ennesima, più che mezza, giornata spesa a fare cose non previste, perché "non ci si può mettere a far qualcosa senza che qualcos'altro non vada fatto prima". Avevo accennato vagamente che a 'sto giro avrei un'idea effettivamente cavalcabile per fare una #visualnovel, ma per qualche motivo adesso sono finita ad aggiornare tutte le #traduzioni in italiano di Ren'Py (proprio il motore), sistemando le tantissime stringhe scritte male e aggiungendone alcune mancanti... ho iniziato stamattina, e ho finito un'ora fa. (💀️)

  • In pratica, avevo pensato di creare una novel giusto per il gusto, una specie di demo, perché altrimenti le idee buone non mi vengono... e ho detto: anziché fare una roba proprio inutile, sarebbe ganzo farne una che magari fa proprio da tutorial a #RenPy, andando a puntate dalle cose semplici ad altre sempre più complesse, dove la storia non ha da essere mirabolante perché è giusto un contorno grazioso. Ho visto in giro, e praticamente nessuno pare aver fatto questa cosa come la intendo io, quindi ho pure campo libero... 😳️
  • Però in effetti ho pensato, dopo aver notato che la novella Tutorial ufficiale inclusa proprio con l'SDK Ren'Py non esiste in #italiano, che sarebbe una buona cosa magari prima lavorare a tradurre quella, così ne approfitto anche per imparare alcuni dei tanti dettagli dell'engine che dovrò in ogni caso padroneggiare, se proprio ho voglia di creare il mio personale walkthrough... In realtà però, inizierei prima dall'altro gioco incluso, The Question, perché anche quello non esiste in italica lingua, ma dura una manciata di minuti e quindi è un buon antipasto prima del #lavoro più grosso, anche se cambia poco ai fini della mia #deriva... 🌊️
  • La cosa è che, iniziando a tradurre, non essendosi i file di #traduzione della GUI automaticamente riempiti dai sorgenti dell'engine (credo sia normale anche se strambo), ho dovuto guardarli qualche minuto per capire che semplicemente copiarli a mano sarebbe stato sufficiente a non dover riscrivere a manina tutte le stringhe comuni... però a quel punto ho notato quanto erano imperfette in molti punti, quante fossero un pelino inconsistenti, quante tradotte da una macchina e brutte da fare schifo, e anche quante mancassero proprio; nel programma SDK soprattutto, ma anche nelle parti del motore che i giocatori vedono sempre, e quindi... mi sono messa di forza e in queste ore ho fatto il lavorone che qualcuno non faceva bene da anni, per l'italiano, ahimé. 😵️

Non mi capita spesso tanto quanto sento che vorrei di riuscire a contribuire al software #opensource, inteso come progetti più grandi di me (non solo i personali, insomma) che beneficiano tante persone non solo in teoria ma anche in modo evidente nella pratica, quindi quando l'occasione arriva è bene non farmela sfuggire. Ho già inviato la pull request al santissimo Tom, probabilmente il merge dimensionale dei branch avverrà a breve: https://github.com/renpy/renpy/pull/5486. ...E quindi ora potrò finalmente tradurre i due giochini invece, yee, come se non avessi già lavorato abbastanza oggi. 🗿️

sitocti momenti

Un po' meh il fatto che anche ieri non ho postato, sta andando tutto alla deriva, ma è che fino ad oggi pomeriggio non ero a casa, e quindi, non solo tra una cosa e l'altra il tempo è passato, ma poi non è successo niente di condivisibile. Però, visto che non avevo granché modo e/o voglia per i miei soliti passatempi pesanti, avendo con me solo il tablet come oggetto in più del solito, ho approfittato dei vari momenti morti per risolvere alcune di quelle più noiose e scoccianti piccole faccende per il mio sitarello #OctoSpaccHub:

  • Mi sono presa sorprendentemente un po' di tempo (più di 2 ore...) per tentare di disegnare delle icone per 3 (non ancora tutte) delle mie #webapp che sono lì messe a disposizione... fatte partendo da altre icone e non da zero stavolta, e per quanto non sono comunque per nulla dei capolavori, forse sono almeno un po' meglio di cosa esce [quando provo a disegnare io qualcosa partendo da zero](../../../2024/03/28/pwgoduriaaaa.md) assoluto. 🥲️
  • Ho implementato anche finalmente lo script Service Worker per il #sito, in modo da permettere alle pagine di andare in cache offline, facendo quindi funzionare le app anche senza #Internet, che è un requisito senza il quale non potrei in tutta onestà considerarle veramente complete e meglio delle native... ma ora oh si, avoja. 🗡️
    • Cosa in parte correlata e in parte no, che in realtà però ho fatto una settimana fa (lol): il Worker viene registrato solo per il dominio principale (hub.octt.eu.org), mentre non per tutti gli altri (sono vari) da cui lo stesso sito è accessibile. Su quelli (esempio, qui) appare un avviso in cima ad ogni pagina che ricorda di spostarsi, e c'è un link, ma nessun redirect automatico, perché così gli altri domini possono fungere da costante backup, non si sa mai.
  • Ho aggiunto un (1) nuovo link alla barra scorribile in basso (quello della mia pagina Itch.io, perché forse ho in programma qualcosa di utile, ma questa sarà un'altra storia), che quindi è diventata talmente larga da scrollare anche sul mio desktop e sul tablet in orizzontale, e quindi ho potuto notare quanto è fastidioso il fatto che faccia di continuo avanti e indietro ogni mezzo secondo senza neanche un frame di pausa... per cui l'ho migliorata, facendo ad ogni cambio di direzione scattare un delay (che era già programmato, ma veniva prima usato solo come pausa al passaggio di mouse o dito). Ne ho anche approfittato e allargato il padding, perché su dispositivi touch era un po' difficile trascinare per scorrere a mano. 💈️
  • Infine, non meno importante: non so perché, qualche neurone sarà scattato a caso per colpa dei raggi cosmici, ma ieri sera senza motivo mi è tornata in mente una delle musichette che fanno da sottofondo al menu di selezione di alcuni famicloni... e le voci mi hanno detto che ci starebbe benissimo su una pagina web che è praticamente un menu di selezione per le mie cose. Quindi, detto fatto, "Slum" di Mighty Final Fight è stata messa... (Ovviamente, di default è mutata, non ci sono saltispaventi.) ❤️‍🔥️

E qualcosa ho fatto anche per la #SalaMuseoGames, actually: oltre ad aver finalmente risolto tutti i problemi riguardo DDLC (mancava poco e sarebbe diventata una saga), e aver aggiunto altri giochi, ho implementato un tasto per allargare gli embed senza andare a schermo intero, nascondendo la sidebar che si vede sui display larghi. Ma ci sono ancora tante e tante cose da sistemare lì sopra (soprattutto in termini di PWA), voi non avete proprio idea... ☠️

doki doki pazzia club

[sc name=quote-embed-post]2024/04/25/doki-doki-browser-club/[/sc]

Bene, come dire, oggi con questa storia di #RenPy ho a dir poco esagerato... perché in realtà, dopo aver detto che me ne sarei lavata le mani, ho comunque cercato di vedere della roba, perché avevo scoperto altri #problemi non proprio ignorabili. È servito? Sni. ☠️

La prima cosa è che su mobile la tastiera su schermo non funziona, perché è implementata in modo strano, prima che cambiassero e la facessero effettivamente bene. Quindi, sul mio porting di DDLC non si riuscirebbe neanche ad iniziare il gioco, perché non si può inserire il proprio nome nel momento in cui il programma lo chiede, a meno di collegare una tastiera fisica, che è pazzia. Con un po' di ingegno e tanta sperimentazione, però, ho effettivamente risolto il problema: premendo un tasto dedicato nel menu contestuale, faccio apparire un <input> a schermo, dove l'utente può digitare con la propria tastiera virtuale normalmente, e il codice che ci sta dietro legge gli eventi per ricostruirli e inviarli al <canvas> che esegue il gioco. È un po' una #hack ma sostanzialmente funziona bene. 🕳️

E poi... ho scoperto che in realtà no, le immagini che impiegano una vita a caricare si rifiutano proprio di farlo finché non avviene (oltre al passaggio di abbastanza scene di dialogo, ma va un po' a caso) un evento di re-rendering totale, che ho individuato succedere in due casi: quando si preme il tasto destro per far scomparire l'HUD, oppure quando la finestra viene ridimensionata. Ora, chiamatemi scema, ma ho provato a mettere mano nella parte del codice che triggera un resize, perché quella del render è proprio dentro il codice WASM e quindi non c'è umanamente verso, ma... non sono arrivata a granché, dopo un po' di prove. Ho tentato una strategia diversa, cioè simulare un doppio click col mouse ad ogni click dell'utente, ma farlo troppo veloce non fa ri-renderizzare nulla, e farlo troppo lentamente spacca le interazioni degli utenti... E quindi ho anche provato a sfruttare un iframe di servizio per poter fare ridimensionamenti della finestra ad ogni click (no, non basta lo styling), ma ci sono le stesse problematiche riguardo la velocità (eccetto che qui l'eccesso causa flash dello schermo, aiuto!). 🐞️

E in tutto questo, nonostante abbiano dimostrato di fare release totalmente rotte una dopo l'altra, i RenPyisti si sono rivelati anche abbastanza efficienti: la mia #issue di prima ha non solo avuto delle risposte, ma qualche ora fa è già stata creata una pull request per sistemare il problema, incredibilmente. (Ma io ancora mi chiedo, come è possibile che sono stata io a individuarlo?) Però, loro non hanno una CI normale per creare le build, e io a compilare da sorgente sul mio PC non ci sono riuscita (ed ecco perché volevo a tutti i costi ficcare i miei workaround nel codice già compilato anziché provare a fare un fix per bene prima), quindi dovrò per forza aspettare che creino loro la prossima nightly... domani, probabilmente?! Vabbè, per ora tenetevi il giochino sistemato in parte, è già meglio di nulla; ho anche aggiunto un ulteriore tasto al menu contestuale per fare refresh visivo su mobile, dove il right click non si può fare. 🤥️

doki doki browser club

La mia #sidequest di scovare e archiviare app e #giochi di valore per il #browser, seguendo la filosofia del binario universale e tutti i mazzi annessi, certe volte mi porta si a complicarmi un po' le giornate, ma non credevo di arrivare persino a scontrarmi con bug breaking di motori di #gioco famosi e utilizzatissimi... È la maledizione per cui in mano a me si rompe sempre tutto, anche se in questo caso no, è tutto già rotto da tempo, solo che nessuno lo sapeva bene. 🤢️

In pratica, ieri mi è venuta l'idea di caricare alcune VN sulla #SalaMuseoGames, considerando sia che RenPy supporta la creazione di build web da un bel po', e che in genere è molto facile ricompilare e portare giochi fatti con questo #engine. Infatti, ho già provato a portare diversi giochi gratuiti presi da Itch.io, e al netto di #difficoltà inaspettate per alcuni (che magari racconto la prossima volta), in linea di massima non ci sono mai #rogne con i giochi in RenPy 8. 💟️

Però volevo portare una #visualnovel in particolare, ovviamente: #DokiDokiLiteratureClub! ...e ops, questa è dei tempi di RenPy 6 addirittura, e non c'è verso di farla girare sotto le v8 (basata su Python 3 anziché 2.7, era ora). Sulle versioni 7.x.x per fortuna sembra venir eseguita a modino, ma... la compatibilità web lì è in "beta" (cosa che ho scoperto va letta come "totalmente rotta lmao") e quindi sono subentrati problemi immediatamente. O meglio, ho compilato con la più recente v7 (7.7.1), e sembrava tutto funzionare, finché non ho aperto la pagina su Linux o Android per scoprire che crashava tutto al caricamento per via di uno strano errore del video, e solo su Firefox nella mia VM Windows si riusciva a giocare (quindi binario universale un corno). 🚧

Ho cercato e cercato tra changelog e pagine di aiuto, ma non c'ho capito granché, a parte che hanno cambiato tipo il sistema video ad un certo punto... eppure RenPy 8 funziona senza problemi. Ho verificato che solo fino alla v7.4.11 i giochi (qualsiasi) girano ovunque, invece dalla v7.5 appare la rogna. Alla fine, me ne sono dovuta lavare le mani: mi sono impegnata solo a scrivere bene una #issue sul GitHub, e ora se la vedranno loro a fixare questa immondizia, te saludo!!! https://github.com/renpy/renpy/issues/5478 (leggete lì se vi interessa il tecnico). Il problema è che quest'altra versione funziona solo su Firefox, e ha un #bug strano per cui la musica di sottofondo non carica quando cambia la traccia, quindi pensavo di dovermi rassegnare e aspettare ora... 🦧

Però poi, dopo aver ancora letto, ho visto che RenPy < v7.4.7 usa FFmpeg per l'audio, "quindi magari"... e, sicuro abbastanza, con v7.4.6 la musica funge. E, casualità, non c'è manco il bug con i motori WebKit! Però pare ci sia un altro #problema, ossia che le immagini fanno veramente fatica a caricare, a volte impiegano decine di secondi... non è gravissimo, perché alla fine se aspetti si caricano, però magari vedrò se posso sistemarlo comprimendo gli assets per farli stare tutti nel game.zip < 100 MB, anziché farli streammare separatamente. Comunque, forza, potete già fare il #gaming su https://gamingshitposting.github.io/SalaMuseoGames/2024/04/24/doki-doki-literature-club/ 👽️