Siccome alcune cose stanno cambiando nella mia vita, ho dovuto imparare un linguaggio di programmazione. E quale migliore stimolo per motivarsi, se non lo sviluppo di un videogioco? Per la sua struttura, anche il più semplice richiede l’esercizio e lo studio di diverse competenze(organizzative e logiche) che a mio parere ben si sposano con il mio intento didattico.
E, proprio perché si tratta di imparare, vorrei fare una premessa per ricordare prima di tutto a me stesso che si tratta di un progetto con queste finalità specifiche. E quindi, per quanto io possa esserci affezionato, devo trattarlo per quello che è. Tutto ciò per disinnescare eventuali e poco fondati ottimismi.
In ogni caso, spero che le seguenti riflessioni, che mi passano per la mente ogni volta che metto mano sul codice di programmazione, possano risultare interessanti.
L’idea
Il progetto doveva essere bilanciato, nella sua complessità. Se fosse stato troppo semplice non avrei imparato nulla, ma con una mole di lavoro troppo complicata mi sarei avvitato inutilmente senza andare da nessuna parte.
Dopo una lunga serie di cambiamenti in corso d’opera e riprogettazione da zero, alla fine sono arrivato ad un compromesso soddisfacente: un librogame che non si basasse semplicemente sulla scelta di bivi ma che implementasse al suo interno statistiche, oggetti e tiri di dado per creare un’avventura dinamica. Nulla che il cartaceo non abbia già fatto, sia chiaro, ma che risulta molto interessante quando sei tu a doverlo realizzare.
Ho chiamato il progetto con un nome brutto e tamarro, che potrebbe andare benissimo per un generico cabinato degli anni ‘80: Dungeon Busters.
Il giocatore potrà scegliere tra diversi personaggi - ciascuno con propri talenti, abilità ed equipaggiamento iniziale - e districarsi per le varie avventure che il gioco presenterà. Ho deciso di adoperare degli eroi “prefabbricati” perché sono stato da sempre affascinato da Dungeons&Dragons (pur non avendoci mai giocato) e nel corso della mia vita ho scritto diversi personaggi i cui archetipi e storie porto con me tuttora. Molto utile, quando devi darti una scusa per finire Dark Souls quindici volte.
Paradossalmente, l’aspetto narrativo rimane ancora quello più problematico: scrivere una campagna per un gioco di ruolo costa tempo e risorse. Troppe, per un progetto che nasce senza molte ambizioni e con finalità didattiche. Ogni personaggio che ho scritto ha un suo background che lo caratterizza - nella migliore tradizione ruolistica - ma tradurlo in una storia giocabile non è così scontato ed immediato. Questo problema mi richiedeva di pensare ad un compromesso che mi permettesse di continuare con la costruzione di Dungeon Busters senza intoppi e senza sacrificare troppo la possibilità di dargli un taglio più personale.
Roguelike o non roguelike, questo è il problema
Che siano odiati o ammirati come giochi, i roguelike risultano sempre affascinanti da un punto di vista progettuale. Credo che vedere come il software che hai programmato riesca a comporre un mondo possa darti una enorme soddisfazione come sviluppatore. Un po’ meno al giocatore, ed infatti io non sono un particolare amante dei roguelike, perché molto spesso si basano su meccaniche eccessivamente punitive il cui avvenimento o non avvenimento è gestito unicamente dal caso.
Tuttavia, come idea di base da cui partire risulta tuttora l’idea più efficiente e stimolante da cui posso partire. Cercare di bilanciare o attenuare l’aspetto casuale del roguelike non è di certo un compito facile, così ho dovuto fare un po’ di brainstorm e scavare nel mio bagaglio ludico per trovare qualcosa da cui poter prendere spunto (in realtà, per le finalità che ho, potrei anche dire “copiare”).
Sotto quest’ottica, World of Horror di panstasz si è rivelato un ottimo manuale per un totale neofita come me. Il gioco è esattamente quello che avrei voluto realizzare io, ma in una chiave horror lovecraftiana. Inoltre, il suo modo di gestire l’elemento casuale/procedurale mi sembra andare nella direzione giusta, anche se ad onor del vero richiede ancora molto bilanciamento.
Gli eventi del gioco, infatti, pur presentandosi in maniera procedurale hanno delle scelte predefinite e, con la giusta accortezza, il giocatore è in grado di fare damage control pianificando le proprie mosse. Se, ad esempio, sto utilizzando un personaggio con knowledge bassa, sicuramente non mi arrischierò a battezzare quella scelta che mi richiede un roll su quella determinata statistica. Non è un sistema di certo perfetto, ma in qualche modo riesce a premiare il giocatore che con la sua esperienza riesce a pianificare la run a dispetto degli avvenimenti avversi.
Conclusioni e roadmap
Alla fine, quella sopra è la direzione che ho deciso di sviluppare, con qualche aggiustatina. L’idea è quella di creare quattro grandi contenitori, corrispondenti ai luoghi della nostra avventura, nei quali inserire i singoli eventi che andranno a comporre la run del giocatore una volta selezionato il proprio personaggio. Questi posti per il momento hanno internamente dei nomi generici: foresta, città, dungeon, castello; ma pensavo anche di inserire scenari specifici per ogni singolo personaggio oppure legati alla loro classe o razza.
Lo scopo di questa modalità “roguelike” sarebbe uscire indenni da questi quattro luoghi per arrivare alla fine dell’avventura. Si potrebbe vedere il tutto come un gioco da tavolo in cui ad ogni turno il giocatore deve pescare una carta “imprevisti” da diversi mazzi.
Fortunatamente, il grosso del lavoro per fare funzionare “l’engine” di gioco è stato fatto e la struttura base per “muovere” Dungeon Busters funziona senza troppi inciampi, ma mancano ancora importanti aspetti sui quali devo ancora ragionare. Al momento, ciò che mi rallenta di più è il design della UI: non avendo alcuna nozione al riguardo, il più delle volte il risultato non mi soddisfa e sono costretto a riprogettare tutto o modificare alcune parti. Questo molto spesso porta a dover aggiustare parte del codice, alzando il rischio di bug catastrofici.
Non ho ancora chiuso nel cassetto la possibilità di ideare una modalità “classica” in cui si gioca una campagna predefinita, ma questo si vedrà solo quando il progetto avrà una forma meno evanescente.