UGH! (porting della versione DOS)

Coinvolgimento di codice e logica

Full Vibe-Code (l’IA ha generato quasi tutto il codice del gioco)

Coinvolgimento di asset e pipeline

Sconosciuto (sviluppatore di terze parti

Note di progetto e prompt

Utilizzato lo strumento REA per effettuare il reverse engineering del binario DOS in Python, e poi VS Code con Claude Code e le mie competenze, file di conoscenza CPC e strumenti predefiniti per sviluppare il gioco in modo iterativo.

3 Mi Piace

ughr.dsk|allegato (199,8 KB)

1 Mi Piace

UGH-CPC-Manual-v1.0.pdf (2,4 MB)

2 Mi Piace

È divertente da giocare, non ricordo di averlo provato prima su DOS, un saluto !!!

2 Mi Piace

sì, uno dei miei giochi preferiti su DOS, puoi giocare con un amico sullo stesso computer, e ci sono livelli aggiuntivi/diversi (e ci sono UN SACCO di livelli!)

Non l’ho testato abbastanza, probabilmente farò una nuova versione con qualche miglioramento, ma sembra completamente giocabile.

Se riscontri qualche bug o hai richieste di funzionalità fammi sapere, a un certo punto rilascerò anche il codice sorgente, come riferimento.

E visto che questo si è rivelato un esperimento riuscito, forse mi ci divertirò un po’ a moddare il gioco / cambiare il gameplay o introdurre nuove funzionalità… power-up, … questa è una delle cose belle che possiamo fare con l’IA e il reversing/ricompilazione dei giochi => possiamo anche essere creativi, non solo fare «vibe coding»!

Quindi, per quale motivo qualcuno non dovrebbe giocare alla versione per PC, di gran lunga superiore, invece di questa versione CPC lenta, noiosa a vedersi e sfornata dall’IA? È una specie di fetish? Del tipo «rompiamo qualche gioco e giochiamoci dopo averlo reso peggiore»?

E quale sarebbe esattamente il traguardo qui? Il «creatore» ha forse infranto qualche schema mentre digitava i prompt nel suo LLM? Puntava alla sfida del prompt «lungo al massimo 256 parole»? E poi cosa verrà, 128 parole? 64?

Benvenuti in questa splendida era del nulla!

Modifica: inoltre, adoro la mentalità del tipo «non ci ho giocato molto, ma sembra giocabile». Urrà per il progresso dell’intelletto umano!

Manteniamo toni civili, per favore.

Ho corretto i tag e ne ho aggiunto uno con «wip».

1 Mi Piace

@rexbeng Ciao, hater dell’IA senza argomenti validi :slight_smile: – lascia che ti risponda:

Quindi, perché mai qualcuno non dovrebbe giocare alla versione per PC, di gran lunga superiore, invece che a questa versione per CPC lenta, dall’aspetto noioso e sfornata dall’IA? È un feticcio? Del tipo «rompiamo qualche gioco e giochiamoci dopo averlo peggiorato»?

Beh, spero tu possa capire che la tua domanda non ha alcun senso, specialmente su un forum di computer retro. Vedi, queste macchine lente le amiamo tutti e, anche se ci sono computer più veloci, vogliamo comunque usare di tanto in tanto il nostro lento CPC. E, ovviamente, su una macchina lenta, a seconda di diversi fattori, si possono ottenere giochi lenti, anche se non penso affatto che questo porting sia lento! È un movimento a 1x per tutti (in mode 1), con animazioni, trasparenza, musica, 2 giocatori, …

E quale sarebbe esattamente il traguardo raggiunto qui? Il «creatore» ha forse infranto qualche schema mentre digitava i prompt per il suo LLM? Puntava a una sfida per il prompt «lungo fino a 256 parole»? E adesso cosa c’è; 128 parole? 64?

Ti sfugge il punto, non mi sto vantando di aver raggiunto chissà quale traguardo: sto solo condividendo un’esperienza e un ottimo porting di un gioco che penso la gente possa apprezzare. Inoltre, l’affermazione secondo cui «devi fare fatica affinché le cose abbiano valore» è tremendamente sbagliata per molte ragioni che ora non ho voglia di spiegare. Ma, visto che sei così interessato all’impegno che ci ho messo, ecco un breve riassunto:

  • Ho creato un dev container con un ambiente per rendere l’IA capace di creare giochi per CPC in asm fornendole: una base di conoscenza mappata su diversi argomenti, esempi di codice, trucchi, ecc. che sono riuscito a raccogliere e organizzare

  • In questo container ho aggiunto strumenti e script in grado di aggiornare e compilare automaticamente dal sorgente o scaricare binari (un emulatore headless ottimizzato per un debug da riga di comando ancora migliore, compilatore, strumento per immagini disco, convertitori e player per immagini grafiche e arkos 3, codice boilerplate per il loader, ecc…)

  • ho anche aggiunto qui file di competenze (runbook), il principale dei quali contiene istruzioni su come creare un ciclo per un corretto sviluppo di giochi z80 con debug e test tramite emulatore headless

  • Ho usato la mia conoscenza della piattaforma CPC per scrivere e adattare i requisiti in modo da rendere il gioco possibile e migliore possibile su una piattaforma più limitata come il CPC, quindi ho dovuto riprogettare e decidere risoluzione, palette per ogni sprite, layout di memoria, decidere se l’acqua colorata fosse più importante del suono, usare un movimento di 4px o 1px (velocità contro fluidità), …

  • Ho fatto una cosa simile creando il dev container pronto all’uso per utilizzare lo strumento REA e ho fatto il reverse engineering del gioco DOS in python con i requisiti del gioco in file di testo

(giusto qualcosa a memoria, probabilmente c’è dell’altro…)

Detto tutto ciò, probabilmente preferirei che l’IA non fosse mai esistita, poiché penso sia un’ARMA potentissima per cui l’umanità non è pronta. Ma è successo e non si può fermare.

1 Mi Piace

Grazie per la risposta. Tuttavia, ribadisco la mia posizione. Dopo l’era commerciale, il senso di portare un qualsiasi gioco su CPC è sempre stato, fino ad oggi, lo sforzo di uno sviluppatore di dimostrare la propria tesi (rendiamola pure accademica, perché no) secondo cui il computer è perfettamente in grado di eseguire tale gioco senza altri vincoli se non quelli prettamente tecnici, o persino di migliorare il gioco in alcuni casi sfruttando conoscenze avanzate di programmazione, grafica, sonoro e persino hardware (per superare tali limiti tecnici).

Pascere la proprietà intellettuale altrui a un LLM non si avvicina minimamente a tutto ciò. Sostieni di aver fatto tutto quello sforzo per creare quel dev container eppure, tutto ciò che hai fatto è stata una conversione del codice di altri. Quindi, se da un lato ammetti giustamente di «non aver ottenuto nulla», dall’altro affermi di condividere un’esperienza; ne sei sicuro? Hai solo condiviso ciò che è stato generato. E poi salta fuori il concetto (che non mi pare di aver mai menzionato nel mio post, ma tant’è) secondo cui «è sbagliato impegnarsi per dare valore alle cose» perché, certo, perché sforzarsi quando puoi dare in pasto il lavoro altrui a un LLM e generarne il risultato mentre ti… ehm… prendi un caffè?

Per quanto riguarda gli argomenti validi e l’odio per l’IA, puoi parlarne in questo thread, visto che @Gryzor ne ha fin sopra i capelli dei miei sproloqui e vorrei evitargli la fatica di dover spostare post da una discussione all’altra.

Quindi, la vera domanda è: qual è il punto? Che ne dici di non pubblicare giochi generati dall’IA? Ci hai mai pensato?

2 Mi Piace

È proprio questo che non ha molto senso. Fare il porting verso il basso di un gioco dimostra… cosa, esattamente? Quanto bene può funzionare un LLM? Oh, wow. Specialmente quando si tratta di un «non l’ho testato davvero ma sembra a posto».

(allo stesso modo, non capisco i porting verso l’alto da sistemi inferiori che si vedono in giro: che senso ha vedere un gioco di una macchina decisamente inferiore al CPC girare su quest’ultimo e sembrare esattamente identico?)

2 Mi Piace

Per parafrasare JFK: non facciamo queste cose perché sono facili, facciamo queste cose perché siamo strani.

2 Mi Piace

Credo sia eccezionalmente difficile sostenere che, se l’unico scopo è dimostrare la tesi secondo cui il CPC sia in grado di eseguire tale gioco, la questione del «come ci si arriva» sia per lo più irrilevante.

Il che non significa che io sia d’accordo con la premessa precedente, ma solo che, se lo sei, allora «il fine giustifica i mezzi», per così dire.

Certo che è rilevante. Lo sviluppatore deve capire «come arrivarci» e bilanciare obiettivi, risorse e asset di conseguenza. E condividere la conoscenza affinché altre persone possano portarla avanti, ecc.

Tuttavia, se prendessi il codice di Vespertino e lo dessi in pasto a un LLM per generare un gioco che include, ad esempio, le auto di Outrun, non starei dimostrando nulla di più, né starei creando conoscenza. O perlomeno non di rilevanza significativa.

Trovo difficile accettare la facilità con cui alcune persone liquidino i fondamenti dell’apportare valore all’attività e all’intelletto umano. È come se si fossero stufati proprio di ciò che ci rende umani.

1 Mi Piace

In cosa differisce dal semplice sprite hacking di un gioco esistente, una pratica che va avanti da anni?

Non sto suggerendo di sostenere o promuovere il plagio dei progetti altrui, ma fingere che i remake/sprite hack/modifiche di giochi esistenti realizzati da persone con competenze minime di programmazione siano in qualche modo una «cosa nuova» è ipocrita. Guarda quanti giochi ci sono nel thread di conversione del GX4000 e chiediti se la maggior parte delle persone che li realizza avrebbe potuto onestamente costruirli interamente da zero.

In parte concordo con il primo paragrafo: ho ricominciato a fare retroprogramming nel 2018 credo, dopo oltre vent’anni, e mi sono piaciuti moltissimo i limiti e la sfida che le vecchie macchine ti mettono davanti. Ti accende davvero la creatività quando hai le mani legate.

Però un aneddoto interessante è che, quando all’epoca il mio capo mi chiese «Perché vuoi programmare per Amstrad nel 2018?», io gli risposi: «Perché da ragazzo riuscivo a fare solo qualche giochino semplice, ma ho sempre desiderato creare titoli molto migliori; ora posso realizzare il mio sogno d’infanzia, con più di 20 anni di esperienza in più e nuovi strumenti come cross-compilatori, emulatori…». E l’ho fatto (abbiamo sviluppato un gioco su un’IA malvagia per la cpcretrodev 2019: Ludic Break The Loop).

Ma questo accadeva allora. Oggi penso che la mia risposta sia la stessa: «Ho sempre voluto creare giochi/software molto migliori E ADESSO POSSO!», ma con a disposizione ancora più strumenti! Lo strumento di IA mi ha offerto questa possibilità: posso concentrarmi sul processo creativo e non preoccuparmi di quanto tempo mi servirà per implementare o testare un’idea. Ricordo che per Amstrad passavo circa l’80% dello sviluppo in estenuanti sessioni di debug e ottimizzazione, che spesso richiedevano di riscrivere grosse porzioni di codice. Per quanto la sensazione quando risolvi un problema ostico sia fantastica, avrei potuto usare quel tempo anche per fare altro.

Ora, tutto questo vale quando creo davvero qualcosa, con o senza l’aiuto dell’IA, e questo porting di UGH non era quello: in questo caso non ho creato il gioco né potrei ovviamente sostenerlo (dopotutto è un porting), ma ho creato e testato un processo e gli strumenti che ho realizzato, applicandoli a un caso reale: un gioco fatto e finito! Inoltre, nel mio primo post ho condiviso un riassunto dell’esperienza di ciò che ho fatto (molto brevemente) e se qualcuno vuole saperne di più, io sono qui.

Riguardo al punto «non serve alcuno sforzo per creare qualcosa usando l’IA» => non è vero! (ma questo è un altro discorso)

In questo esempio (il PORTING del gioco) sì, il mio impegno è stato minimo, ma perché l’intera faccenda era un esperimento per vedere:

(1) quanto è valido lo strumento REA?
(2) l’output di REA è sufficiente per creare un porting per Amstrad usando il mio ambiente?

Ed è stato un successo.

Quindi, per rispondere alla tua domanda (suppongo lecita): «Che senso ha?»: fondamentalmente giocare e vedere fin dove ci si può spingere, e potenzialmente riutilizzare l’esperienza acquisita in futuro in caso di necessità. E poi, ci ritroviamo anche con un nuovo gioco divertente.

2 Mi Piace

Ho messo «mi piace» al tuo post non perché sia d’accordo con tutto quello che hai scritto, ma perché è ben scritto e solleva alcuni punti validi, tanto per cambiare.

1 Mi Piace

Quindi, l’argomento a favore dei contenuti a basso sforzo è… un’altra branca di contenuti a basso sforzo? Credimi, se prima dell’IA ci fossero stati sprite hack di giochi a giorni alterni, mi darebbe altrettanto fastidio.

Per quanto riguarda l’altro argomento, @ixien c’è da sempre e il suo contributo alla scena (in particolare quella dei giochi homebrew) è stato prezioso per molte ragioni. Inoltre, il suo impegno per far girare i giochi sul GX4000 non si porta dietro pretese esagerate e favolette morali da far ingoiare per forza alla gente. Infine, poiché capisce il valore dell’organizzazione, gestisce un unico luuungo thread che contiene ogni hack per GX4000 che ha realizzato.

Quindi, come vedi, non conta solo «cosa» viene fatto, ma «come» viene fatto, il che porta inevitabilmente a «chi» lo fa.

1 Mi Piace

Beh, cercherò di farla breve perché la maggior parte degli argomenti sta iniziando a sembrare un episodio crossover di «AI Mega Thread: La serie TV».

Apprezzo il tuo desiderio di fare molto meglio e ti sostengo appieno, perché faccio la stessa cosa da anni. Inoltre, capisco perfettamente che tu ritenga che l’uso dell’IA possa semplificare la tua pratica e che tu l’abbia testata creando un processo e degli strumenti.

Tuttavia, creare un gioco non si riduce a «punto di ingresso, X sprite sullo schermo, scorrimento, punto di uscita». Si tratta di realizzare un gioco ben progettato, giocabile e divertente, con il miglior equilibrio possibile tra grafica, tecnica, difficoltà, longevità e tanti altri aspetti che variano a seconda della natura del gioco. E, soprattutto, testato a fondo dal creatore fino allo sfinimento.

Quindi, questa release ha a che fare con qualcosa di tutto ciò? No, è solo un «reskinning» di un gioco preesistente senza ulteriori adattamenti (la linea dell’acqua sembra un bug quando non c’è acqua visibile, per esempio) realizzato da un LLM che ti ha usato come intermediario. Ne stiamo vedendo fin troppi ultimamente; così tanti che sembra quasi inquinamento. Sono facilissimi da fare e la maggior parte di noi è consapevole che lo sforzo necessario per ottenerli è minimo.

Quindi, per carità, usa l’IA per creare il tuo gioco ben progettato, e portalo pure qui per discuterne. Ma fino ad allora, questa release è purtroppo legata a tutto ciò che è, sembra e sa di sbagliato nell’usare l’IA per creare contenuti a basso sforzo.

Ecco fatto. Vedi? Non sono riuscito a essere breve. Ma almeno ho pensato a tutto questo usando il mio obsoleto cervello umano e l’ho scritto a mano per interagire con un’altra persona. Quindi, se «il fine giustifica i mezzi», avrei dovuto usare invece uno dei graziosi bot installati da @Gryzor per risparmiare il mio prezioso tempo umano che non può essere prolungato usando, che ne so, il denaro?

Oh, ma possiamo farlo:

@NeoLuddite_bot per favore riformula:

You have degraded the sacred, calloused trade of the software craftsman into a parasitic automation pipeline, boiling down an ancient DOS binary through a statistical theft-matrix just to vomit broken water lines onto the Z80. True creation demands the mortal furnace of sleepless debugging, obsessive balance, and the brutal discipline of the silicon itself—not acting as the unthinking errand boy for an algorithmic mill that strip-mines human intellect to foul our digital common with effortless slop. Smash this automated loom, return to the soldering iron and the hand-keyed opcode, and bleed into your own machine before daring to call its output your work.

3 Mi Piace