Lo scorso gennaio abbiamo scritto di come la nuova release di Godot 3D introdurrà caratteristiche che lo renderanno più moderno e, sempre lo scorso gennaio, la community ha pubblicato un articolo che possiamo considerare di autocritica, Godot for AA/AAA Games. What’s missing?
In breve, Juan Linietsky, uno degli sviluppatori (cercate il suo nome nella pagina dei teams di Godot per vedere in quante cose è coinvolto), elenca quali sono le cose che mancano a Godot 3D per essere considerato adatto a giochi doppia e tripla A, ossia di qualità superiore.
Tra questi, credo sia interessante soffermarsi su alcuni elementi:
Streaming
la tecnologia che permette di creare gli open world. Si tratta di giochi dove l’ambiente è ampio decine (o più) di chilometri. Con lo streaming il motore carica in memoria solo texture a bassissima risoluzione e modelli con pochi vertici, caricando materiale più dettagliato dal disco solo se esso è presente nella porzione di mondo attualmente visitata, rimuovendo dati non più necessari perché divenuti lontani e inutili. Godot non possiede questo strumento e, come dice Linietsky:
Streaming is the most important feature missing for managing large scenes or open worlds. Without it, Godot users are subject to long loading times (as every texture, model and animation has to load before anything is shown). There is also a risk of running out of memory if too many assets are loaded in parallel instead of streaming them.
Lo streaming è la caratteristica mancante più importante per gestire grandi scenari o mondi aperti. Senza di essa, gli utenti di Godot sono soggetti a lungi tempi di caricamento (in quanto ogni texture, modello o animazione deve essere caricata molto prima che qualsiasi altra cosa sia visualizzata). Esiste anche il rischio di esaurire la memoria se troppi contenuti sono caricati in parallalo, anziché riversarli in streaming1.Swarms
Negli effetti particellari gli elementi di un gruppo sono indipendenti gli uni dagli altri e servono per creare effetti come fumo, fuoco o esplosioni. Ma gli swarms o flocks sono cose più complicate, utilizzate per simulare stormi. Un esempio banale può essere uno stormo di uccelli che si muove come un unico corpo, pur avendo ogni elemento che agisce indipendentemente e con piccole variazioni; un altro è un gruppo di formiche se si muove in formazione verso un pezzo di pane. Se ogni formica è un’unità capace di muoversi avanti, indietro a destra e a sinistra, di collidere e di mantenere una distanza costante dalle tre formiche vicine, abbiamo qualcosa che richiede molti più calcoli di una semplice esplosione di scintille.
L’articolo si conclude dicendo che, a discapito delle lacune, Godot ha come asso nella manica il fatto di essere open-source e di permettere a team esperti e che ne hanno bisogno, di “mettere le mani sotto il cofano”, per modificare il motore a seconda delle proprie esigenze.
Sul subreddit /r/gamdev ci sono stati commenti “importanti”: in molti hanno confermato che tutti i punti sono corretti e che Godot 3D non è adatto a giochi tripla A. Interrogati, alcuni utenti hanno chiamato in causa le basse performance di rendering al confronto di Unreal o di Unity, la mancanza di un asset store e l’impossibilità di salvare shader compilati in precedenza.
È vero: a oggi, Godot 3D non è adatto per scrivere il nuovo Assassin’s Creed. Purtroppo, l’impossibilità di gestire ampissimi spazi preclude la creazione di intere città senza interruzioni: una limitazione che Godot non può aggirare.
Ma è altresì vero che conoscere questi limiti è anche capire in quale direzione muoversi per il futuro.
Godot 3D, diversamente da altri engine è libero e i contributi che aziende o singoli possono portare ci danno la speranza di poter vedere presto implementate queste funzionalità.
Mi permetto un ultimo appunto: l’essere inadatto ai giochi tripla-A è una mancanza, ma non così grave se si è piccoli team che sviluppano senza budget milionari. Queste realtà, che sono la maggior parte degli studi indipendenti, non avrebbero comunque la possibilità di costruire i modelli di 3D di città intere, né di usare attori per la motion capture che verrà applicata a modelli da centinaia di migliaia di poligoni.
Il suggerimento è comunque di dare a Godot 3D una possibilità e, più in generale, di capire se le prestazioni di cui avete bisogno giustificano l’uso di un altro software. E, nel peggiore dei casi, essendo GDScript molto semplice, Godot 3D può tornare utile per creare prototipi da reimplementare con l’engine di produzione.
[1] Ammetto che riversare dati in streaming non è la miglior traduzione possibile dell'espressione "to stream". Se ne avete di migliori, scrivetelo nei commenti.