Verum: The Mall

Verum: The Mall è uno strategy videogame per PC che ho sviluppato, in collaborazione con mio fratello, occupandomi della parte di programmazione software e computer grafica 3D. Ho utilizzato principalmente le librerie Three.JS, e GLSL come game engine e Angular 10 come framework per le interfacce utente.

Lo scopo del gioco e quello di mettere l'utente nei panni del manager di un centro commerciale con la particolarità di non essere dotato dei convenzionali strumenti informativi dei videogiochi strategici, i quali mostrano in tempo reale tutte le informazioni. L'utente dovrebbe riuscire a gestire la complessa amministrazione della "mini-città" attraverso gli strumenti che un "vero" manager ha a disposizione, quali le relazioni con i suoi consiglieri, i rapporti a scadenza temporale, le comunicazioni verabli e scritte, i rumors; tutti veicoli informativi soggetti ad alterazioni, ritardi, eventi esogeni (come avviene nel mondo reale) o correlati alla qualità del lavoro, a sua volta condizionato, per esempio, da budget, stato d'animo dei dipendenti, e così via. Per questo motivo le informazioni possono essere, per esempio, errate, o non sincronizzate con la realtà dei fatti. Inoltre anche i comandi impartiti dall'utente sono a loro volta soggetti a questa "imperfetta verosimilità". Lo scopo era quindi quello di creare una sorta di "intelligenza artificiale" in grado di replicare virtualmente i fattori casuali che determinano la qualità delle informazioni in ricezione dall'utente e la compietezza dei comandi che quest'ultimo ordina. Ciò avrebbe dovuto creare una distinzione importante dai giochi tradizionali di strategia in cui le informazioni sono (quasi) sempre complete, non possono essere distorte e i comandi impartiti dall'utente sono immediati, in tempo reale ed eseguiti meccanicamente. Questa pseudo intelligenza artificiale si articola attraverso una fitta rete di interdipendenze e correlazioni casuali tra i valori degli attributi, i comandi e gli eventi scatenati dai vari "elementi" del gioco. Tali meccaniche sono state ingegnerizzate anche con l'aiuto di software per la realizzazione di diagrammi progettuali quali draw.io.

La logica di codice che governa le relazioni e le fitte interconnessioni tra gli attributi degli elementi di gioco è scritta in Javascript e implementata all'interno dei service di Angular. Il framework Angular funge da orchestratore tra game engine, logiche di calcolo e interfaccia grafica. La dist risultante dalle build è compilata utilizzando Electron al fine di realizzare gli eseguibili compatibili con i vari sistemi operativi. Gli attributi degli elementi di gioco sono valorizzati dal risultato di equazioni e formule più o meno complesse in cui fattori sono a loro volta i valori degli attributi di altri elementi correlati a quello in oggetto e calcolati antecedentemente nel corso delle sequenze di ricalcolo.

Il render engine è basato sul WebGLRenderer attraverso interfacce Three.JS; tale scelta verrà replicata anche per la realizzazione di Forging History.

Il progetto, rivelatosi troppo ambizioso per la forza lavoro di cui disponevamo, è stato accantonato ancora privo di molte logiche procedurali che si stimava di realizzare, sebbene già parzialmente sviluppato.

Logica di dati: sequenze di ricalcolo

Un timer di gioco governa lo scorrere del tempo. L'utente può decidere a che velocità far scorrere il tempo o può anche metterlo in pausa.

Griglia virtuale di costruzione

La costruzione della griglia di costruzione è stata una delle sfide tecnicamente più interessanti che ho affrontato nella realizzazione di questo progetto.

Proceduralità degli eventi

Crowd procedurale

Previous Post Next Post