Ho scritto questo post quasi due mesi fa. Sono riuscito a rimandarne la pubblicazione promettendomi di farlo solo quando avrei avuto per le mani qualcosa di concreto di cui parlare. Cavescape, nome che sostituisce il precedente Caves & Creatures, è il mio primo, basilare, motore per lo sviluppo di un roguelike. Parlo di motore o engine (parecchio più cool) perché l’obiettivo del progetto è imparare e sviluppare un framework, più che tendere a un prodotto finito. Come è già stato per Adventurescape, l’engine per librogame digitali, del quale abbiamo parlato un bel po’ di tempo fa. Il codice Java/Android in quel caso è bello che pronto nell’hard disk, con tanto di una versione giocabile di Fuga dall’Altrove. Sta bene lì e vi saluta tutti.
Tag: programmazione
Generazione procedurale 2D in Javascript
Fuori si sta per scatenare il primo temporale del mese, con mia immensa soddisfazione, e nel frattempo me ne sto chiuso qua dentro, col ventilatore a palla e il gatto che lo guarda tra il curioso e l’impaurito. Pronto a raccontare qualcosa del nuovo passo compiuto sul cammino della generazione procedurale.
Ho già accennato qualcosa sull’argomento, che è molto vasto e complesso, e del quale vi lascio la definizione di Wikipedia: In computer graphics, procedural generation is generating content algorithmically rather than manually. In video games this means graphic content for a game can be created by the host computer, instead of prerendered artwork being included with game package.
Quindi, generazione di contenuti tramite un algoritmo e non pescandoli da un lavoro fatto in precedenza.
Cosa si genera in maniera procedurale? Qualsiasi cosa, o quasi. Abbiamo ormai sempre più spesso esempi di videogame con contenuti di questo tipo, ma ad esempio per le texture (i “motivi” che ricoprono oggetti nei giochi, dando loro un maggior realismo, spaziando dal terreno alle case, dalle foglie degli alberi a fumo e fiamme) questo è un metodo in uso già da molti anni.
In questo caso il vantaggio è ovvio, a fronte di una maggiore potenza di calcolo richiesta, non si devono memorizzare le texture che verranno visualizzate nel gioco.
Pathfinding demo
E quando ben pensi di poter andare tranquillo… c’è che mi sono divertito a sviluppare qualcosa di un po’ più interattivo, mentre continuo a studiare generazione procedurale, e ne è uscito un demo simpatico che illustra qualche caratteristica del pathfinding, nell’implementazione Javascript di cui vi parlavo ieri.
Ora, non credo che questo blog diventerà mai un sito sulla programmazione, avrei già in testa un articolo o due su argomenti molto diversi, spero nella prossima settimana. Aggiungere una nuova sezione è deleterio, direbbero i SEO oriented.
Ma noi qua ce ne freghiamo, e se buttare giù un migliaio di righe di codice dà soddisfazione, val la pena condividere i risultati.
Continua…
Pathfinding in Javascript
Ultimo articolo del mese, un maggio dedicato ad argomenti ludici, sospeso tra la storia di Dungeons & Dragons (arrivata in tempo per l’uscita della nuova versione “Next”) e la guida a Pixel Dungeon.
Articolo tecnico oggi, per la – credo – seconda volta nella vita del blog. Si torna a parlare di programmazione, dopo un accenno agli sviluppi del motore Java per i libri game, di quasi due anni fa (andato perduto nel cambio di piattaforma blog, temo).
Ci riprovo, partendo dal solito spunto.
Nel mio caso vale il detto giocando si impara.
O, meglio, giocando vien voglia di imparare.
L’ispirazione di questi giorni è proprio Pixel Dungeon e il genere roguelike.
Capita così, da sempre. Vedo qualcosa e mi chiedo come faccia a funzionare. E se sarei in grado di farla (magari meglio, ché altrimenti non c’è sfida).
Bastano poche partite, qualche giro sul web, i due argomenti che solleticano la mia curiosità sono:
– la creazione procedurale, costruire ambienti, che sia un sotterraneo o una città, in maniera casuale con funzioni che seguano determinate regole
– il pathfinding, la possibilità di determinare il percorso (se esiste) che unisce due punti di un certo insieme di nodi, ottimizzando risorse quali distanza percorsa e tempo di elaborazione
Continua…
Fantasmi, mostri e un Commodore 64
Il Vecchio Magazzino è da sempre fonte di scoperte sui miei stessi interessi.
Scatoloni di fumetti.
Vecchissimi videogame (ne avevamo già parlato).
Faldoni di racconti mai completati.
Una vecchia valigetta piena di boccette di colore secco, pennelli induriti e miniature che vanno dal fantasy di Dragonlance alla fantascienza venata di orrore degli Space Marines (del Caos) di Warhammer 40.000.
E ovviamente libri. E tra questi una decina di manuali d’informatica. Manuali. Che a dirlo sembra impossibile oggi. Una volta se non sapevi le cose potevi anche aprire Internet Explorer 1 o magari Netscape, sul tuo Pentium, ma era tempo buttato.
C’era solo il metodo classico: gita allo scaffale e ricerca nel Manuale di Programmazione. Enormi, elefantiaci manuali. Ne ho uno di Python grosso che neanche il Trono di spade, la saga intera.
Continua…
AdventureScape su Android e altre novita’
Partiamo da una novità che c’entra poco e avviciniamoci per gradi all’argomento del post. C’è meno roba nel menu lassù in alto! Notato? Seguendo gli insegnamenti dell’amico Bruce, ho tolto pezzi e semplificato, e ora c’è un’unica pagina dei download dove troverete tanta roba gratis (o wishwere, se vogliamo coniare un termine nuovo). Software (Librogame Creator e KDP Sales Manager, giochi (ho riesumato il vecchio party game horror Infection) e i PDF della fanzine The Arkham Gazette (che c’era voluto tanto lavoro per farla, era un peccato lasciarla lì dimenticata per sempre).
Dopo il giro per il sito facciamo un salto al caldo, dove l’amico Mauro continua a parlare (oltre che della bella Tenerife) di giochi & C, citando in un articolo anche gli sviluppi dei miei software per la scrittura di testi interattivi. Quindi fatevi un giro sul suo blog Caponata Meccanica (tropical edition) e poi continuiamo.
Ed eccoci qua.
Secondo articolo dedicato ad AdventureScape, il motore per libri interattivi che sto sviluppando in Android. Dopo averne visto qualche scorcio in un post di febbraio, rieccoci per vedere come procedono i lavori. Un post che serve forse più a me che a chi legge, visto che almeno in Italia dubito che creare “hype” per qualcosa come i libri game digitali possa essere utile, vista la scarsa propensione generale alla lettura (a parte per lo zoccolo duro di appassionati, certo). E ti chiedono “ma perché lo fai?” e la risposta è sempre la stessa, mi diverto (programmare e scrivere, occorre dirvi che sono tra le mie principali passioni di sempre?) imparo cose nuove utili per il mio lavoro e poi ho sempre voluto creare un gioco e ormai quasi ci sono. E devo dirlo è davvero una bella sensazione. Vada come vada, raggiungere un obiettivo che si aspetta da così tanto tempo è sempre esaltante.

La prima implementazione di AdventureScape sarà come dicevo un LG che già trovate da scaricare in versione eBook, con qualche modifica ai paragrafi di gioco. Ci saranno quindi nuove scelte, soprattutto durante gli scontri. Questi mirano a diventare qualcosa di più narrativo e complesso, scelta che avevo fatto già ai tempi di Obscura Genesi (ma lì, dovendo il giocatore tener a mente decine di variabili, rendeva troppo pesante il gioco).
Altre novità, rispetto la versione di un mese fa, sono gli effetti sonori, una grafica migliorata, la pagina delle istruzioni (il solito “manuale” che è sempre tra le ultime cose fatte da chi programma 😀 ), l’inventario interattivo, la copertina (tratta dal libro originale, a cura di Davide Marescotti), alcune illustrazioni (tratte da lavori fatti per le mie fanzine da Christian Fermo) e l’introduzione di nuovi comandi per il meta linguaggio del libro interattivo.
Il libro è già in test, nelle capaci mani di un esperto del settore. Perché ora viene la parte più complicata: la ricerca di bug nella codifica del libro e il test della App su più dispositivi, tablet, smartphone, per essere sicuro che la leggibilità sia buona ovunque. A tal proposito a breve inizierò a reclutare tester, che abbiano tempo e voglia di farsi un giro nell’Altrove e darmi un loro parere su quanto fatto.
Insomma, inizio a vedere la luce alla fine del tunnel.
E ciò è buono, perché dopo un anno ci voleva, serve a mantenere alto l’entusiasmo per i pochi mesi che ormai separano l’App dal diventare definitiva. E magari aggiungere qualche altra “piccola modifica” che lo so come sono e difficilmente mi accontento.
Ma ci siamo. Quasi.
Prossimamente sui vostri smartphone
Nei giorni scorsi, nel mentre preparavo l’articolo sui roguelike, leggevo articoli ed ero costretto a testare questo tipo di giochi (come sempre un duro lavoro che bisogna fare) sono tornato a sfogliare il forum di Librogame’s Land, la community nella quale bazzicavo quando hanno avuto origine l’editor per libri interattivi, LibroGame Creator, il racconto lovecraftiano Fuga dall’Altrove (scaricabile gratis da tra i miei ebook, ancora in attesa del sequel) e il malloppo fanta horror Obscura Genesi (che proprio in questi giorni è stato gentilmente recensito su facebook da un lettore, cose che come sempre fanno piacere a chi scrive/crea anche se il libro ormai penso sia scomparso dagli store).
Ne è venuto fuori un discorso sugli sviluppi dei libri interattivi e su quello che è il destino di Librogame Creator il cui sviluppo sembra fermo da anni. Dico sembra perché dal 2012 in qua ho portato avanti nel solito pochissimo tempo libero una sua nuova versione, adattata a uno scopo unico: permettermi di sviluppare un formato di LG che fosse giocabile sugli smartphone. Sì, esattamente come fanno già molte altre App, soprattutto (bene) in lingue inglese e poco (e male) in lingua italiana (ne ho testata qualcuna e i testi sono piuttosto brutti da vedere e da giocare).
C’è voluto circa un anno e mezzo. E ho pensato di scriverne due righe, per tirare un po’ le somme, un post pseudo tecnico che leggeranno in 4 e capiranno in 2. Me compreso.
A cosa è servito un anno e mezzo di lavoro?
- ideare un nucleo di istruzioni per un “linguaggio di programmazione” della narrazione dei libri game; progettare il parser di un linguaggio, per quanto limitato sia nella sua grammatica, è stata la parte più complessa del lavoro;
- sviluppare il nuovo formato di file (ora un database SQLite);
- modificare LGC perché permettesse l’inserimento delle istruzioni nel “linguaggio” e le entità sulle quali questo avrebbe operato (oggetti, locazioni, attributi di gioco e quanto altro serve);
- sviluppare il motore Java, più generico possibile, che andasse a tradurre il meta linguaggio dei capitoli del libro game in qualcosa di interattivo (una decina di classi che implementano un pattern MCV);
- sviluppare una App Android che implementi il motore Java, con modifiche minime;
- aggiungere una grafica minima che renda visivamente l’App almeno decente;
- scrivere un libro game di prova per testare queste feature (adattarne uno esistente, in realtà, operazione che si è tradotta in tre tentativi di cui due falliti perché troppo complicati)
A ben vedere è una lista niente male (ed è strano perché in giro vedo gente che dice quanto sia “facile e veloce” fare una cosa del genere, ma si tratta quasi sempre di persone che vedono la programmazione da molto, molto lontano).
E non è ancora finita. In questi giorni sto iniziando i test del LG, una versione interattiva del mio Fuga dall’Altrove, e incredibile a dirsi ma c’è ancora molto da fare.
Inserite le cose base, potendo giocare, salvare e continuare, avere un “segnalibro” che simuli il solito dito che teneva traccia del paragrafo precedente nel caso si fosse fatta la scelta sbagliata, implementato l’inventario interattivo e con la possibilità di scriptare gli oggetti per fargli fare in pratica qualsiasi cosa, c’è ancora molto lavoro.
Intanto la grafica, che da minima deve diventare migliore, all’altezza almeno di quanto si trova in giro. Risolvere qualche bug minimo, e tanti tanti test per migliorare ancora. E se le cose procedono con questo ritmo non ci si arriverà prima dell’estate (di quest’anno dai).
Cosa avverrà a quel punto? Beh c’è ancora da affrontare tutta la parte sul mettere le proprie App sul market di Google, che si porterà via il suo tempo e alla fine Fuga dall’Altrove in versione Android ci finirà, gratuitamente.
Una volta che questo progetto pilota avrà fatto il suo dovere, col bagaglio tecnico accumulato e la struttura completata, l’idea è di mettersi a lavorare su qualcosa di più lungo e nuovo, da completare per l’anno successivo. Magari un bel libro game horror, un adattamento semplificato della fantascienza di Obscura Genesi o uno sword & sorcery cupo e sanguinolento.
Ma stiamo correndo già troppo, per ora stiamo ancora tentando di fuggire dagli orrori lovecraftiani celati nei sotterranei della città, verso l’Altrove…
The X(html) marks the spot to dig
“So forget any ideas you’ve got about lost cities,
exotic travel, and digging up the world.
Eve do not follow maps to buried treasure
and “X” never, ever, marks the spot.”
— Indiana Jones
Secondo post nello sviluppo di jLGC, che procede, lo sviluppo non il post, più rapidamente di quanto riesca a scriverne. Il problema che presento l’ho risolto già una decina di giorni fa, e la trasformazione dall’originale RTF (contenuto nei file del vecchio Libro Game Creator) in codice XHTML, necessario a creare le pagine per costruire i file ePub, è ormai testata e consolidata. Gli eBook creati da jLGC passano pure il test di EpubCheck validation, con somma soddisfazione.
Il principale dubbio sulla conversione era come mantenere intatti i link ai paragrafi, senza utilizzare una codifica fissa (ad es. HTML), in modo da poter facilmente identificare i link ed esportarli ogni volta nella maniera corretta (interni a un singolo file HTML, tra più file HTML, tra i file XHTML dell’ePub,…). Per fare questo ho adottato una codifica a TAG personalizzata. Alle funzioni di esportazioni viene dato in pasto questo e un template di sostituzione, adattabile al formato di file che si va a creare.
Continua…