Ogni tanto, quando ho bisogno di staccare dal lavoro, dai bug e dalle mie infinite ricerche sull'intelligenza artificiale, cambio completamente attività.
C'è chi esce a fare una passeggiata, chi guarda un film, chi si mette a giocare.
Io, invece, mi metto a sviluppare videogiochi.
Non so se sia esattamente il modo migliore per riposare il cervello, ma per me è una delle cose più divertenti che esistano.
Uno dei progetti su cui torno spesso è Atlas of the Void, un gioco strategico spaziale online che sto sviluppando nel tempo libero.
E come succede spesso con i miei progetti, quella che doveva essere una cosa relativamente semplice si è trasformata in qualcosa di decisamente più ambizioso.
Un universo che esiste anche quando non ci sei
L'idea di partenza era creare un gioco strategico spaziale, un po' nello spirito di OGame, ma con una differenza fondamentale.
Non volevo semplicemente costruire basi, aspettare che finissero i timer e accumulare risorse. Volevo un universo che sembrasse davvero vivo.
Un universo persistente, dove le cose continuano a succedere anche quando il giocatore non è collegato.
I pianeti producono e consumano risorse. Le flotte viaggiano nello spazio. Le colonie sviluppano la propria economia e possono attraversare periodi difficili. Le civiltà crescono, si incontrano, commerciano e combattono.
E soprattutto, l'universo non deve aspettare il giocatore per esistere.
Mi piace immaginare qualcuno che torna dopo qualche giorno e scopre che la situazione intorno al proprio impero è cambiata.
Magari una rotta commerciale è diventata pericolosa. Una colonia ha problemi di stabilità. Oppure una spedizione ha portato a una scoperta interessante.
Non tutte queste situazioni sono già complete nel gioco, ma è la direzione che guida lo sviluppo.
Esplorare deve essere una vera avventura
Una delle cose che non mi hanno mai convinto completamente di molti giochi strategici spaziali è che, dopo un po', l'universo diventa soltanto una tabella di coordinate.
Clicchi, invii una flotta, aspetti e ricevi un risultato.
In Atlas voglio qualcosa di più interessante.
La galassia è un luogo da esplorare, non soltanto uno sfondo.
Ci sono sistemi stellari, pianeti con caratteristiche differenti, asteroidi, risorse, relitti e fenomeni cosmici.
Le risorse dei pianeti non sono infinite. Prima o poi, se vuoi continuare a crescere, devi guardare oltre il tuo mondo.
Atlas of the Void - uno sguardo all'universo di gioco.
E qui comincia la parte divertente.
Puoi costruire navi specializzate per esplorare, cartografare, estrarre minerali, recuperare detriti, trasportare risorse o fondare nuove colonie.
Ogni nave ha un ruolo e le capacità di una flotta dipendono dalle unità che la compongono.
Ma la cosa che mi interessa di più è rendere la conoscenza dell'universo una risorsa strategica.
Non dovresti sapere automaticamente cosa esiste dall'altra parte della galassia.
Devi scoprirlo, osservarlo, conservarne le informazioni e magari ottenerle da altri giocatori.
Sto lavorando anche su questa idea: sensori, segnali, cartografia e informazioni che possono diventare preziose quanto le risorse fisiche.
Immaginate di intercettare una comunicazione nello spazio, capire dove sta viaggiando una flotta e organizzare un'imboscata.
Oppure scoprire una regione sconosciuta e venderne la mappa a un'altra civiltà.
È questo il tipo di situazioni che vorrei far emergere dalle meccaniche del gioco.
Atlas of the Void - uno sguardo all'universo di gioco.
Da un piccolo pianeta a una civiltà galattica
Naturalmente non poteva mancare la costruzione del proprio impero.
Si parte da un pianeta, con infrastrutture, risorse e capacità tecnologiche limitate.
Poi si costruiscono industrie, centrali energetiche, centri di ricerca, cantieri navali e altre strutture.
Si sviluppano nuove tecnologie, si costruiscono navi più avanzate e si iniziano a esplorare nuovi mondi.
Ma non volevo che la progressione fosse soltanto una corsa a chi possiede la miniera di livello più alto.
Per questo ho introdotto anche un sistema di crescita ispirato alla scala di Kardashev, che distingue civiltà planetarie, stellari e galattiche.
L'idea è che il passaggio da un'era all'altra non sia soltanto un numero.
Deve cambiare quello che la civiltà è realmente in grado di fare: costruire nuove categorie di navi, utilizzare infrastrutture più avanzate, espandersi ulteriormente e ottenere capacità che prima sembravano irraggiungibili.
Nel gioco esiste già una progressione con ricerca, requisiti, bonus e sblocchi.
E c'è un altro aspetto interessante: un impero più grande non è automaticamente un impero più facile da governare.
Più territori significano più produzione e più possibilità, ma anche più rotte da proteggere, colonie da mantenere e problemi da gestire.
Un impero può essere enorme e, allo stesso tempo, estremamente fragile.
Atlas of the Void - uno sguardo all'universo di gioco.
E poi c'è la grafica... perché anche l'universo deve essere bello!
Qui ammetto di essermi lasciato prendere parecchio.
Volevo che Atlas fosse piacevole anche soltanto da guardare.
Non mi bastava una mappa nera con qualche puntino bianco.
Ho lavorato su galassie generate proceduralmente, con bracci stellari, nebulose colorate, polveri cosmiche, regioni luminose e stelle distribuite nello spazio.
La visualizzazione utilizza anche WebGL, con rendering procedurale che permette di esplorare la galassia a differenti livelli di zoom.
E quando ci si avvicina a un sistema stellare, entrano in gioco i corpi celesti, le orbite e le loro caratteristiche.
Ma una delle parti che mi diverte di più è la rappresentazione dei pianeti e delle città.
Ho creato illustrazioni differenti per ambienti planetari e civiltà, con architetture, atmosfere e stili visivi propri.
E non volevo che fossero soltanto immagini immobili.
Nelle scene delle città ho aggiunto piccoli dettagli animati: luci che si accendono, navette che attraversano il cielo, movimento sulle rotte, nebbia atmosferica e vapore che sale dagli impianti.
Sono dettagli semplici, ma insieme rendono la scena molto più viva.
Una città non deve necessariamente avere una grafica 3D gigantesca per trasmettere la sensazione di essere abitata.
A volte bastano alcune luci, un po' di movimento e una bella atmosfera.
E devo dire che passare dalla ricerca AI a disegnare nebulose, città futuristiche e astronavi è un cambio di attività davvero piacevole.
Atlas of the Void - uno sguardo all'universo di gioco.
La parte difficile? Far funzionare un intero universo
Ovviamente, come sviluppatore, non potevo limitarmi alla grafica.
Il gioco gira nel browser e utilizza Elixir, Phoenix LiveView e PostgreSQL, insieme a JavaScript e WebGL per la visualizzazione.
Una delle sfide più complicate è gestire un universo persistente senza trasformare il server in una macchina che calcola inutilmente ogni singolo oggetto a ogni istante.
Ci sono galassie, sistemi, orbite, flotte, economie, costruzioni, ricerche e tanti eventi che devono rimanere coerenti nel tempo.
E poi c'è la sincronizzazione tra server e browser.
Se una flotta sta viaggiando, il giocatore deve vederla muoversi correttamente. Se cambia qualcosa nel mondo, le informazioni devono aggiornarsi senza dover ricaricare continuamente tutto.
E se un giocatore non conosce una certa regione, il client non dovrebbe semplicemente ricevere tutte le informazioni dell'universo.
Quindi bisogna pensare anche a visibilità, cache, aggiornamenti incrementali e gestione dei dati.
Insomma, anche un gioco che sembra semplice dall'esterno può nascondere una quantità assurda di problemi tecnici.
E naturalmente, risolvendo uno di questi problemi, spesso mi vengono altre tre idee da implementare.
Un classico.
Il gioco che vorrei riuscire a creare
Atlas of the Void è ancora un progetto in sviluppo.
Ci sono già parecchi sistemi implementati, dalla simulazione dell'universo all'economia, dalle flotte alla ricerca tecnologica, fino alla rappresentazione grafica.
Ma ci sono anche tante idee che voglio ancora sperimentare, migliorare e collegare tra loro.
La mia ambizione non è semplicemente creare un altro gioco dove bisogna aspettare ore per costruire una nave più potente.
Vorrei costruire un mondo dove i giocatori possano inventare strategie che io stesso non avevo previsto.
Dove esplorare possa essere importante quanto combattere.
Dove una scoperta possa cambiare il destino di una civiltà.
E dove persino un impero apparentemente invincibile possa avere problemi che non si risolvono semplicemente costruendo altre cento astronavi.
Un gioco semplice da iniziare, ma con un universo abbastanza profondo da continuare a sorprendere.
Non so ancora quanto tempo ci vorrà per arrivare alla versione che ho in mente.
Per ora continuo a svilupparlo, sperimentare e divertirmi.
E sì, lo so: probabilmente dovrei trovare un hobby che non richieda scrivere altre migliaia di righe di codice.
Ma quando hai la possibilità di costruire un intero universo, è difficile resistere.
Stay curious. Keep building.