Ciao,
ho usato i miei ultimi crediti su Claude per creare una versione di Galaga per CPC e ci sto lavorando per renderla giocabile.
Come al solito con tutti i miei progetti Claude, voglio che siano un progetto cpcteleraNext completo e funzionante, così da poter capire e, soprattutto, fare modifiche.
Un piccolo teaser mentre è in corso una ricompilazione con ottimizzazione completa.
Solo per informazione, per realizzare questa versione ho usato tutti i miei crediti Cloud, compresi i 100$ gratuiti inclusi (promozione per testare il Cloud).
Il gioco funziona con 64KB sui CPC classici e non ha caricamenti successivi.
Quasi tutto il codice è in C e utilizza la libreria cpcteleraNext, ma per problemi di velocità e dimensioni della memoria alcune funzioni specifiche sono state scritte in assembler.
Beh, è un’ottima dimostrazione di ciò che si può fare con cpcteleraNext (e Claude.IA)
Il gioco è leggermente semplificato, ma la maggior parte delle funzionalità del gioco originale è presente.
Il mio obiettivo principale era renderlo giocabile.
Allora forse era proprio questo che si percepiva nel tuo post? Questo, insieme alla struttura (sezioni in markdown), lo faceva sembrare proprio una risposta dell’IA copiata e incollata. E ad essere del tutto sincero, dopo aver dato una lettura veloce al post e aver avvertito quell’aria da IA, non l’ho letto davvero fino in fondo, quindi mi è sfuggito il … ho chiesto a Claude di … Errore mio.
Non fraintendermi, però. Non sono contrario all’uso dell’IA per fare ricerche (lo faccio spesso anch’io), ma secondo me, quando si condividono i risultati online, dovrebbe essere chiaramente segnalato come tale (e non nascosto da qualche parte a metà post).
Caspita — sembra davvero favoloso e lo apprezzo molto — ma è chiaramente piuttosto lento. Se si riuscisse a migliorarne la velocità, sarebbe fantastico!
L’ho appena caricato su hardware reale — un altro problema che ho riscontrato è l’assenza del raggio da parte dei boss Galaga nei livelli 1 e 2. Li lascio volutamente indietro per raddoppiare la navicella per il Challenging Stage, ma il raggio non compariva — se restano diversi boss Galaga, almeno uno di loro dovrebbe averlo. È una parte fondamentale del gioco.
Può essere sicuramente più veloce — le formazioni e il Challenging Stage — anzi, quando rimangono solo pochi personaggi sullo schermo, poi va persino troppo veloce.
Quindi questo gioco è davvero notevole per essere una versione creata da un’IA: è un po’ lento, ma è giocabile e ha un bel look.
Tuttavia, mi è concesso essere un po’ critico e dire che una cosa del genere potrebbe scoraggiare i programmatori umani dal realizzarne una versione che funzioni meglio? Un po’ come è successo per le traduzioni IA dei retrogaming (che funzionano, ma perdono lo spirito del testo originale), accusate di aver scoraggiato le vere traduzioni umane, dato che alcune persone pensano che non ne valga la pena visto che esiste già una traduzione accurata, anche se non granché.
Questa nuova versione ha sicuramente delle cose da sistemare (magari potesse non riprodurre la musica d’avvio all’inizio di ogni livello!), ma ha azzeccato parecchi aspetti. È troppo lenta, certo, ma fa davvero la sua figura. La semplice separazione dei colori da giallo a bianco funziona benissimo. È un ottimo proof of concept. Mi chiedo quanto possa diventare più veloce.
I file sprite sono pre-shiftati e compilati? Se lo schermo fosse 32x32, le routine degli sprite potrebbero essere un po’ velocizzate. Ci sarebbero al massimo circa 40 sprite sullo schermo, ma più tipicamente una ventina. Potrebbero essere tutti disegnati senza maschera ed eliminare la propria scia da soli, invece di essere completamente cancellati a ogni frame.
Un altro problema… Galaga ha in realtà un numero enorme di sprite. A occhio e croce circa un’ottantina. Ma se si contano le varianti di palette, si sale a circa 150. Inoltre, devono essere specchiati in orizzontale, in verticale e in entrambi i modi, quindi 600. Sembra che ogni astronave del gioco abbia 32 frame di rotazione. E poi, se li pre-shifiti per il CPC, si arriverebbe a 2400 sprite. Argh.
Non vengono usati tutti contemporaneamente, però. Alcuni non li ho mai visti, quindi non sono sicuro che siano effettivamente nel gioco o solo nello sprite sheet. Si potrebbe magari inventare qualcosa di astuto con del codice self-modifying per creare degli stampi per gli sprite.
Penso che la cosa si possa ridurre a 12 astronavi x 32 rotazioni, dimenticandosi della maggior parte delle varianti di palette, arrivando così a “soli” 384. Rinunciando agli sprite compilati, si possono ribaltare in verticale abbastanza facilmente, quindi la metà. Facendoli muovere in orizzontale solo a passi di 2 pixel, si dimezza il numero di pre-shift… e si torna a 384. Sono tutti 16x16, quindi 16x4 byte = 64 byte ciascuno. Quindi ok, 24k di dati sprite per le astronavi…?
Forse si potrebbe anche ridurre il numero di rotazioni a 16.
Visivamente è davvero bello, ma i nemici sembrano puntare alla tua nave in modo decisamente troppo aggressivo: la loro unica modalità di attacco è «mira alla nave del giocatore», il che riduce di molto la giocabilità.
E sebbene ci sia un rallentamento quando gli alieni compaiono inizialmente sullo schermo, diventano incredibilmente veloci una volta che iniziano a scendere verso di te!