Decompilare i giochi classici per CPC

Ciao a tutti.

Ho pensato di fare un esperimento.

Ho caricato lo snapshot di un famoso gioco isometrico su Claude e poi gli ho chiesto (con alcuni criteri molto specifici) di decompilare il gioco dallo snapshot e riscriverlo completamente in BlitzMax, con l’intenzione che tutto (menu, in-game, suoni, ecc.) funzionasse esattamente come nel gioco originale.

Porca miseria. In poco più di un’ora era pronto, e il risultato è sbalorditivo.

Il codice BlitzMax ottenuto è facile da seguire e commentato.

Per chiunque fosse interessato, questo era il mio prompt (utilizzando l’impostazione Low di Claude Opus 5.5):

ciao.
decompila questo.

vorrei che venisse convertito per blitzmaxNG 0.165.3.61.

Porta l’INTERO programma in blitzmax.
Codice molto semplice, pulito, facile da seguire e totalmente non ottimizzato.
Cerca di creare un suono equivalente per ogni suono del programma.
Fallo girare in una finestra da 1280x800, con il display del cpc scalato a 4x.

niente ottimizzazione.
niente fronzoli.
solo un porting diretto 1:1.

niente stranezze con la memoria per scorrere i dati, solo semplici array dove possibile.
la regola d’oro è mantenere il codice blitzmax IL PIÙ SEMPLICE POSSIBILE, e il più leggibile e facile da seguire possibile.

sul serio, niente cose elaborate o «sofisticate» in alcun modo!

3 Mi Piace

… E il risultato?

Ricordo BlitzBasic e i miei primi tentativi di creare un remake di Asphalt :slight_smile:

Qualche immagine da mostrare?

Ecco alcune immagini.

[MODIFICA] Ops, ho lasciato il puntatore del mouse sopra la finestra durante l’acquisizione delle immagini!

1 Mi Piace

In pratica lo stesso gioco, i remake saranno più facili da creare.

Ho provato con i sorgenti del mio gioco Bitume a migrare al mio framework C++ con Direct2D (un aggiornamento del framework Direct3D che avevo usato per il remake di Hurlements per Windows). E naturalmente funziona.

1 Mi Piace

Ancora una volta, un altro tipo di gioco che stavo cercando di ricreare a mano in un progetto (creando una sorta di framework isometrico per CPC)… Cercando di imparare strada facendo (ho persino recuperato un articolo di Jon Ritman a riguardo da leggere). E l’IA può semplicemente fornirmi il codice, se voglio.

Ma va bene così, è solo «un’implementazione» tra le tante… Posso continuare ad andare avanti piano piano (senza fare pasticci).

Avevi intenzione di modificarlo e usarlo come base per un altro gioco? O è solo per il gusto di farne il porting?

Mi ha sempre incuriosito capire come venissero creati i giochi isometrici, soprattutto visti i limiti dell’hardware di allora. E il codice in BlitzMax è chiarissimo, si segue e si impara con estrema facilità. L’IA mi ha dato la possibilità concreta di esaminarlo e di comprenderne a fondo il funzionamento.

E devo proprio ammetterlo: Jon Ritman è un genio assoluto! Il rapporto di causa-effetto tra gli oggetti di gioco, le interazioni tra personaggi e oggetti, personaggi e superfici, nonché tra personaggi e personaggi, ha una profondità e delle sfumature davvero straordinarie. Non mi ero mai reso conto di quanto «Head Over Heels» fosse effettivamente geniale. Non è solo un capolavoro a livello di gameplay, ma anche di pura programmazione.

«Head Over Heels» è il mio gioco per CPC preferito in assoluto, quindi dare un’occhiata dietro le quinte ha un valore davvero speciale per me. Quasi quasi chiedo a Claude di fare il porting di Rasputin la prossima volta…

1 Mi Piace

Non conosco il gioco Rasputin, per quanto riguarda i giochi isometrici, Fairlight mi ha colpito molto.

Mmm. Fairlight è una scelta interessante…

Rasputin.

Questo è stato fatto con GTP 6.1 Sol.

Non sono sicuro che l’energia dello Scudo e della Spada venga visualizzata correttamente. Non importa.

La prossima volta proverò Fairlight.

Come si confronta GTP 6.1 con Claude.AI?

Claude sembra un po’ più adatto per questo genere di cose, ma farò Fairlight sia con Claude che con GPT.

Il codice BlitzMax generato da ciascuno potrà poi essere confrontato.

Primo tentativo di Claude (ma ora devo aspettare che il mio utilizzo si resetti tra 2 giorni).

Purtroppo il personaggio del giocatore è un pasticcio di pixel e nessun tasto di controllo lo fa muovere.
Non appena il mio limite di utilizzo si resetterà, continuerò a lavorarci.

Il rendering della stanza va già bene e non ci sono problemi di prestazioni in questo tipo di conversione.

1 Mi Piace