That Odd World (#adventurejam): day#1-2-3
06
Anche se sono rimasto fino a questo momento in silenzio stampa forse vi interesserà sapere che, sì, ho iniziato a lavorare per tentare di partecipare a Adventure Jam – bel contest che sfida i partecipanti a realizzare un gioco di avventura (di qualunque tipo) in due settimane o meno. Dopo i primi tre giorni non sono ancora sicuro di potere davvero supporre di arrivare alla fine con qualcosa di completo e giocabile, ma come per 7DRL la sfida mi servirà anche per mettere brevemente nero su bianco i dietro le quinte della lavorazione, sperando che possa risultare una lettura utile (o anche solo curiosa) per chi volesse cimentarsi in futuro in un compito del genere.
Day#1: suppongo che se non fossi un programmatore la prima cosa che avrei pensato di fare sarebbe stata quella di mettere giù in modo completo la storia – la trama del gioco con puzzle e dettagli. Ma tenendo conto del fatto che non ho a disposizione un team di artisti per supportare le mie eventuali brillanti idee ho preferito procedere in modo più pragmatico, segnandomi solo qualche aspetto della trama, e concentrandomi invece maggiormente su come avrei poi potuto trasformarla in un videogioco – consapevole che i miei limiti tecnici condizioneranno anche la storia e che quindi è il caso di dettagliarla solo quando sarò in grado di capire cosa posso fare. Le alternative che ho valutato sono state quelle di 1) fare un gioco di 3D – rischiando però confronti troppo improbabili con le tante ottime cose in circolazione 2) di fare un gioco in 2D con un approccio vettoriale (alla Another World o, più semplicemente Every Day The Same Dream di Molleindustria) – idea con molto potenziale, ma che prevedeva la necessità di realizzare anche un editor 3) di fare un gioco in 3D con un approccio disegno+vettori e mi sono per questo riguardato Spriter e Spine, sapendo che su carta avrei fatto cose più velocemente o 4) fare un gioco 2D “vintage” direttamente in digital art.
Qualche mese fa avevo iniziato un altro progetto in digital art – in 2D senza profondità, con grafica super lowres ispirato da The Last Door – e per quel progetto (non completato, almeno non ancora) mi ero fatto un po’ di esperienza con Aseprite (che ho acquistato) e questa cosa, unita al desiderio di provare a realizzare un videogame vagamente simile a quelli che ho amato negli anni ottanta, mi ha fatto propendere per la scelta numero quattro, con l’idea però di andare appunto verso un approccio alla Maniac Mansion / Zak McKracken, non utilizzando quindi (se non in piccola parte) quanto già aggiunto al mio framework multipiattaforma per The Forgotten One.
Day#2: scelto il *tipo* di gioco da realizzare c’era da affrontare la cosa più complessa, ovvero quella di disegnare un personaggio (in realtà più d’uno) da muovere all’interno del gioco. Per questo scopo mi sono studiato tutto quello che ho trovato in giro (versioni originali e fan-art/deluxe di giochi classici, più nuovi giochi fatti con AGS – che ha un po’ di risorse, insieme a OpenGameArt, e alcuni tutorial molto utili) e poi mi sono messo a fare prove con Aseprite. Lo scopo non era solo quello di avere uno spritesheet animato, ma di trovare un metodo per riuscire a realizzare una sequenza di spritesheet animati in relativamente poco tempo e quindi, dopo varie prove, ho scelto di avere 4 frame di animazioni per la camminata verso il basso, 4 per la camminata verso l’alto e 5 per quella verso sinistra/destra (questa è stata chiaramente la più complessa da realizzare e non sono ancora sicuro che 5 soli frame siano davvero ok). La risoluzione di riferimento è 320×200 (in realtà un po’ meno – per via della GUI su schermo) e i personaggi sono 24×70 pixel. Una volta realizzato qualcosa di accettabile (almeno accettabile per me) ho “destrutturato” gli sprite, separando (intanto) testa e corpo, e scrivendo codice per ricostruirli. In questo modo da uno spritesheet ne ho ottenuti rapidamente (per cominciare) tre e, se dovessi volere aggiungere un frame di animazione per la camminata laterale, potrei comunque fare le modifiche e riottenere gli spritesheet completi in poche ore.
Altro problema importante, per una avventura grafica, sono i fondali. Anche qui mi sono guardato parecchi screenshot di giochi classici, e mi sono letto parecchi tutorial. In teoria in molti siti specificano come sia possibile ottenere pixel art partendo da una foto o un disegno (non digitale), ma in pratica per ottenere qualcosa che poi si misceli bene con gli sprite disegnati su computer serve un lavoro molto lungo. Ho quindi capito (credo) come dovrei fare, ma avendo comunque perso troppo tempo ho cercato qualcosa di adatto per l’introduzione, ci ho lavorato sopra poco e sono passato oltre, confidando di riuscire a fare meglio in un secondo momento, ma tenendo conto che mancano ancora dei punti importanti prima di potere davvero pensare di essere partito.
Day#3: giorno del codice. Giornata in cui ho iniziato a mettere insieme la grafica che ho disegnato e il fondale temporaneo per iniziare a vedere qualcosa muoversi su schermo. Rispetto al 2D di The Forgotten One qui ci sono mille cose in più da gestire. Non siamo in 3D ma abbiamo alcune problematiche simili. Lo schermo deve scrollare sinistra-destra come nell’altro gioco, ma gli elementi su schermo devono essere ordinati in fase di disegno in base alla profondità, le animazioni sono di più (come tipologia) eccetera eccetera. In più mi serve una mappa per sapere DOVE i personaggi possono muoversi e (e questo non l’ho ancora fatto) devo anche aggiungere un algoritmo non solo per le controllare le collisioni (in parte fatto, legato alla mappa) ma anche per decidere il percorso necessario per arrivare da A a B nell’area di gioco in modo da tenere conto degli ostacoli.
Mi sono scritto quello che ancora mi serve, e ho messo insieme un primo esperimento. Su schermo, nel pub della prima scena (che nel gioco sarà, almeno da scaletta, NON interattiva – perché serve per il prologo) ho messo 3 personaggi (quello comandato dall’utente, un amico e il barista) e i due non giocanti al momento di limitano a seguire con lo sguardo il personaggio mosso dall’utente – che si può muovere liberamente tenendo però conto dei bound di gioco dati dal bancone e da una struttura sulla sinistra.
Ah, last but not least, ho anche provato a mettere su schermo gli elementi della GUI per interagire con il mondo di gioco – tutto molto classico, con icone però e non scritte. Vedremo se servirà altro (oltre all’inventario).
Che dire? Forse speravo – dopo i primi tre giorni – di essere leggermente più avanti di così, ma qualche cosa c’è. Ancora codice per un giorno o due, e poi grafica e storia insieme per procedere con il gioco. SE arriverò a lunedì prossimo con la trama completa e almeno 4-5 scene non solo abbozzate forse posso sperare di arrivare alla fine con qualcosa di giocabile.
Vedremo :-) Intanto, se vi va, fatemi gli auguri .-)