La Matematica di miliardi di mondi diversi

By | 5 settembre 2016

Siete convinti che la Matematica sia noiosa, grigia e senza scopo? C’è una notizia per voi che vi farà venire un paio di dubbi a riguardo.

Il 12 Agosto 2016 è stato pubblicato un videogioco chiamato “No Man’s Sky” ad opera della software house indipendente Hello Games.

La particolarità di questo videogioco è che permette di esplorare 18.446.744.073.709.551.616 pianeti. Ogniuno con una propria flora, fauna, clima e morfologia.

no-mans-sky-featured-imageIl numero scritto è giusto, non è un errore di battitura. Si tratta di 2^64, o come dicono gli anglosassoni, 18 quintilioni (1,8 moltiplicato 10^19). Comunque un numero al quale non siamo abituati, troppo grande per qualsiasi pratica quotidiana.

Cosa succede di preciso in questo videogioco? Il giocatore impresona un esploratore con il compito di volare su quanti più pianeti possibili e accumulare informazioni da inviare ad un atlante galattico. Nel frattempo deve anche creare avamposti per migliorare il suo veicolo e lasciarsi travolgere dalla bellezza un po’ psichedelica delle innumerevoli specie animali e vegetali che incontrerà sui vari pianeti.

Tutto quello che il giocatore farà su ogni pianeta influenzerà quello che altri giocatori troveranno, perchè No Man’s Sky è un gioco multiplayer: le azioni dei giocatori si riflettono sugli altri anche se, allo stato attuale, non è possibile una interazione diretta (per i giocatori più esperti, non è ancora un MMORPG).

Come hanno fatto i ragazzi alla Hello Games a realizzare l’equivalente di una galassia colma di pianeti straboccanti di vita (a differenza della nostra) e tutto comodamente contenuto in pochi gigabytes?

Ma con la Matematica, ovviamente! Il trucco risiede nella “programmazione procedurale” portata a livelli raffinatissimi e con la geometria frattale che permette la creazione di panorami di complessità incredibile e di realismo mozzafiato con relativa facilità. La Hello Games non ha rilasciato praticamente nulla sui loro algoritmi usati, anche perchè c’è una amichevole guerra con un altra software house, la Frontier Development che un anno e mezzo fa ha rilasciato Elite:Dangerous, un altro videogioco simile ma più focalizzato sulla interazione tra utenti che non solo sulla esplorazione.

La programmazione procedurale è uno stile di programmazione che prevede l’utilizzo di “blocchi” di codice che si scambiano informazioni sottoforma di costanti o di variabili.

Quale è il vantaggio di questo tipo di programmazione rispetto a quella classica?
Il vantaggio risiede nel fatto che questi blocchi, debitamente progettati e programmati, si prendono l’oneroso compito di “programmare” a loro volta pezzi di videogioco man mano che ce ne è bisogno evitando ai programmatori in carne ed ossa di scrivere milioni di linee di codice, risparmiando loro tempo e, nel caso di piccole software house senza troppe risorse, soldi.

I videogiochi procedurali sono quindi più “piccoli” come dimensioni e in genere consumano meno risorse.

E non sono neanche tanto nuovi, come idea. Se vogliamo fare una carrellata storica, dobbiamo ricordare giochi come Rogue (1980), Tetris (1984), Diablo (1996), Dwarf Fortress (2006), Minecraft (2009) fino ad arrivare al più recente Elite:Dangerous (2014) che è l’ultimo capitolo di una quadrilogia della saga Elite iniziata nel 1984 con un videogioco seminale, Elite della Firebird che ha usato un algoritmo procedurale a sua volta. Tutti creati con algoritmi procedurali.

Rogue è talmente famoso per aver usato questo tipo di programmazione che “roguelike element” è diventato sinonimo di “elemento procedurale” nello slang dei programmatori!

No Man’s Sky quindi porta a nuovi livelli l’arte della programmazione. Ogni pianeta, animale, pianta è codificata in un algoritmo e quindi “portato in vita” se un giocatore si avvicina, modificato se il giocatore interagisce con questi, ricodificato e “messo via” quando il giocatore si allontana.
A dir poco stupefacente!

Ma non è finita qui.

No Man’s Sky fa abbondante uso di geometria frattale per generare gli stupendi panorami. E ricordiamoci che ne deve generare qualche miliardo, tutti diversi. Alcuni sottomarini, altri montani, altri collinari.

Un frattale è un oggetto che si ripete nella sua forma allo stesso modo su scale diverse, e dunque ingrandendo una qualunque sua parte si ottiene una figura simile all’originale: perfetto per rappresentare su un computer, ad esempio, un albero. O una montagna.

E con un po’ di elaborazione artistica anche una creatura vivente come una medusa o un insetto. Proprio come nel videogioco di cui stiamo parlando!

Inoltre, questi oggetti matematici sono ottenuti con formule incredibilmente semplici e sono altrettanto semplici da realizzare tant’è che con uno smartphone non troppo potente si possono realizzare immagini di incredibile bellezza e complessità e addirittura si possono animare.

Neanche i frattali sono proprio una novità in ambiente videoludico, la LucasArts pubblicò Rescue On Fractalus e  nel 1984 per l’Atari 5200 e Commodore 64, due videogames che utilizzavano una primitiva forma di generazione frattale di terreni.

Primitiva perchè i computer usati all’epoca avevano delle risorse piuttosto limitate ma l’idea era originale e ben progettata.

In conclusione, No Man’s Sky fa abbondantissimo uso di avanzati concetti matematici, tra programmazione e geometria, per portarci in una galassia da esplorare, pianeta per pianeta.

Letteralmente. Il tutto comodamente seduti sulla nostra poltrona preferita, davanti al nostro PC.

Ancora convinti che la Matematica sia poi così noiosa? Scommettiamo di no…

#nomanssky #algoritmiprocedurali #frattali #noidiminerva

FONTI

  • http://www.no-mans-sky.com
  • http://www.makeuseof.com/tag/procedural-generation-took-gaming-industry
  • http://www.makeuseof.com/tag/no-mans-sky-future-procedural-games
  • https://en.wikipedia.org/wiki/Procedural_programming
  • https://en.wikipedia.org/wiki/Fractal

Licenza Creative Commons
Quest’opera è distribuita con Licenza Creative Commons Attribuzione 4.0 Internazionale.