Contra torna su Amstrad CPC 6128 con scrolling continuo

Coinvolgimento di codice e logica

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

Coinvolgimento di asset e pipeline

Strumenti di build / Script di conversione degli asset

Note sul progetto e prompt

Claude

Gryzor (Ocean / Konami, 1987) è l’adattamento per Amstrad CPC di Contra. Il gioco ha un’ottima grafica, ma lo sfondo non ha mai avuto uno scorrimento reale; avanzava invece a scatti di mezza schermata, mettendosi brevemente in pausa ogni volta.

CONTRA 6128 è una versione rielaborata del gioco originale per Amstrad CPC 6128, caratterizzata da uno scorrimento fluido e continuo dello sfondo.

Cosa è cambiato

Scorrimento continuo nella giungla e nel livello finale: lo sfondo segue il giocatore invece di avanzare a scatti di mezza schermata.
Risalita fluida della cascata: lo scatto di un terzo di schermata dell’originale è stato sostituito da un movimento animato verso l’alto.
Niente più pause durante le transizioni di schermata.
Visualizzazione pulita: ogni frame viene preparato fuori dallo schermo e poi mostrato all’istante.
Nuova schermata dei titoli e nuovo titolo: CONTRA.

Cosa è rimasto invariato

La grafica, i nemici, le regole e il ritmo di gioco sono identici all’originale.
I livelli a schermata fissa (i corridoi della base) sono esattamente gli stessi del gioco del 1987.
È inclusa la musica originale della versione da 128KB: premi ESC nella schermata dei titoli per passare dagli effetti sonori alla musica.

5 Mi Piace

Caspita, Gryzor è una vera e propria pietra miliare nel mondo del CPC. Vedere un’IA modificarlo solo tramite dei prompt è una dimostrazione enorme dei suoi progressi.

Niente più pause durante le transizioni di schermata.

Ci sono stati grandi passi avanti, ovviamente, ma a mio parere non c’è mai stata una vera “pausa”: il gameplay rimaneva “fluido” per me (nel senso che non c’erano attese). Certo, il salto di schermata comportava che dovevi in qualche modo sapere in anticipo dove sarei atterrato, ma c’era comunque una sovrapposizione ed era il tipo di limite che si accettava a quei tempi, soprattutto considerato che per il resto il gioco era praticamente impeccabile.

Un’impresa davvero impressionante da parte di Claude Fable. Grazie a M. Louvet per averci provato e per averlo condiviso con tutto il mondo!

2 Mi Piace

Caspita, è davvero impressionante!

Che fine ha fatto quella vecchia demo tecnica di Gryzor apparsa tantissimo tempo fa?

Ti riferisci a Gryzor Reloaded?

Mm, penso di sì?

Le novità della versione 1.1

Questo aggiornamento risolve alcuni problemi di gameplay riscontrati durante il gioco con la versione 1.0 e aggiunge un pulsante per il salto.

Correzioni al gameplay

  • I nemici compaiono al momento giusto. Nella versione 1.0, con il nuovo scrolling fluido, alcuni nemici apparivano troppo tardi, in particolare le torrette integrate nello scenario e le capsule bonus da distruggere. Ora ogni nemico appare nell’esatto momento in cui la sua porzione di scenario entra nella schermata, nello stesso punto del gioco originale.
  • La capsula d’arma volante è tornata. La capsula che vola da dietro all’inizio del primo livello, contenente l’arma a ventaglio (spread gun), veniva rimossa dallo scrolling prima di poter raggiungere lo schermo. Ora attraversa lo schermo proprio come faceva nel 1987.
  • L’ingresso della base si riapre. Alla fine del primo livello, la porta distrutta viene ora sostituita correttamente dal buco, invece di far ricomparire la porta chiusa.
  • Niente più nemici scomparsi. Il gioco ha spazio solo per sette nemici alla volta. Nell’ultimo livello, la versione 1.0 poteva perderne uno quando quello spazio era pieno; ora i nemici attendono che si liberi un posto invece di sparire.

Novità

  • Salto con il secondo pulsante. Il secondo pulsante di fuoco del joystick ora fa saltare il giocatore, anche mentre spara. Premere verso l’alto fa comunque saltare come prima, e alto + fuoco permette sempre di mirare verso l’alto.
  • Numero di versione mostrato in basso a sinistra nella schermata del titolo.
1 Mi Piace

il cosa scusa? :smiley:

Sììì… quel fluido NON è affatto fluido, anzi, è proprio l’opposto. È uno scorrimento terribile.

E quando lo schermo si riempie di sprite e proiettili (specialmente quando spari con l’arma a ventaglio), il frame rate crolla completamente. A differenza della versione originale in cui i FPS erano stabili.

Bel tentativo, comunque.

2 Mi Piace

Nella prossima versione vedrai che ci azzecca eheh :laughing:

Penso invece che lo scrolling vada bene, il gioco è più giocabile.

Ben fatto!

La parte più interessante di tutto ciò è la rapidità con cui sono riusciti a estrarre e astrarre gran parte della logica di gioco, oltre agli asset. Farlo scorrere su un CPC era probabilmente chiedere troppo (non per niente l’originale non lo fa), ma essere arrivati a questo punto così in fretta significa che potrebbe essere più fattibile puntare all’hardware del Plus — che è più che all’altezza — senza dover riprogettare tutto da capo.

1 Mi Piace

Lo sprite dell’eroe sembra tremare quando c’è lo scrolling. Mi farebbe venire il mal di testa.
Forse uno scroll a spinta (pushscroll) sarebbe meglio, come in Ghosts’n’Goblins? Non saprei.

Sul CPC sarebbe il frame rate a fare da limite (se parliamo di via software, il metodo più veloce che ho analizzato è quello di Ocean usato in Batman, 2 pixel in orizzontale, 2 righe in verticale), e ci vogliono circa 2 frame per disegnare le tile. Sprite e gameplay vanno poi ad aggiungersi al tempo CPU per ogni aggiornamento. Lo scroll di Shinobi è simile ma non così veloce, Extreme è buono ma anche questo non è veloce uguale, mentre altri giochi spesso sono più lenti e/o scelgono di ridurre l’area per cercare di mantenere un minimo di fps.

Gli scroll via software sembrano fare tutti byte per byte e alcuni, come Golden Axe, usano persino uno scroll basato sui caratteri.

Quello di Ocean spesso copre anche una porzione maggiore di schermo. La dimensione del riquadro è pensata proprio per limitare il tempo di rendering delle tile e farlo rientrare in 2 frame :wink:

Non spiegherò qui come fa Ocean perché l’IA non sa come sia stato realizzato e non voglio regalarlo in giro; si tratta di codice umano davvero intelligente (ma per via del modo in cui lo fanno, non possono avere un riquadro in una modalità grafica diversa rispetto all’area di gioco principale…). Con questo mi riferisco al team interno di Ocean, non a uno studio terzo a cui hanno appaltato il lavoro.

Con lo scroll via software puoi disegnare gli sprite sopra le tile e non devi preoccuparti di ripristinare lo sfondo sottostante, come invece serve fare con lo scroll hardware.

Sembra che questa versione di Gryzor usi lo scroll hardware, ma a quella velocità è decisamente troppo rapido per il movimento degli sprite che avviene pixel per pixel, quindi ci sarà sempre dell’oscillazione; oppure, se vuoi evitare quel tipo di effetto, puoi fare come Ghosts and Goblins: quando ti avvicini al bordo, fai scorrere un’ampia sezione per ridurre al minimo la frequenza dei salti della schermata.

La risposta classica dell’IA è: «muovi pixel per pixel in questo modo e lascia pure che oscilli, è accettabile e non si nota», proprio come vediamo qui… Su MSX1 e con uno scroll continuo come in Salamander sì, ci può stare perché gli sprite si integrano bene, ma non in questo modo.

Anche con lo scroll software ci potrebbe essere qualche piccolo scatto, perché spesso lavora byte per byte in orizzontale. Si potrebbe realizzare uno scroll software pixel per pixel, ma pochissimi giochi lo fanno e sono sicuro che non sarebbe veloce. (A dire il vero non ci ho ancora provato, è una cosa da aggiungere alla mia lista di esperimenti).

Con lo scroll hardware orizzontale, il registro CRTC R3 ti dà la stessa velocità del software (ma a quel punto ti ritrovi con il sfarfallamento ai lati), e comunque non è abbastanza fluido quando gli sprite si muovono pixel per pixel; potresti fare pixel per pixel via hardware e con il double buffering (per evitare il flickering), ma dovresti ridurre la dimensione dello schermo per far rientrare tutte le schermate nella memoria principale — a meno che non lo sviluppi solo per il Plus.

Quindi per Gryzor all’epoca hanno scelto la soluzione migliore per ottenere un fps ragionevole, un movimento pixel per pixel e un gioco divertente.

(Sì, ho provato un sacco di metodi diversi per lo scrolling, sia software che hardware. Se il movimento del personaggio segue la velocità dello scroll hardware — incluso R3 — allora non hai scatti e lo scroll può essere continuo e non a scatti come Ghosts and Goblins; ma non appena rallenti il personaggio al di sotto della velocità dello scroll hardware, devi scendere a compromessi proprio come fa G&G).

8 Mi Piace

Questo mi ha fatto pensare: se le persone lo desiderano, potremmo creare una categoria chiusa, inaccessibile ai bot, da destinare a discussioni del genere.

Mamma mia quanto ne sa @Arnoldemu, sono davvero impressionato, quante cose si imparano :distorted_face::distorted_face::distorted_face::distorted_face: