Ciao a tutti!
Con questa introduzione inizio ufficialmente un report periodico con cadenza casuale sullo sviluppo di un progetto di computer grafica che ho conservato in un cassetto per molti anni.
In questo primo episodio del devlog parlerò poco di aspetti tecnici legati al progetto perché credo sia doverosa innanzi tutto una breve introduzione su come è nato tutto questo e le motivazioni dietro la scelta degli strumenti che abbiamo deciso di utilizzare.
Qualcosa di me...
Sono un grande ammiratore della computer grafica, ho iniziato a studiare e seguire l'argomento ormai moltissimi anni fa ed ho mosso i miei primi passi in questo ambiente fin dagli inizi.
Il mio sogno è sempre stato di trovare la mia via nel mondo del lavoro proprio in questo settore, sfortunatamente il luogo in cui sono nato e cresciuto e poi dove ho cercato lavoro, non si sono dimostrati di mentalità sufficientemente aperta e lungimirante da capire quanto questo argomento e queste competenze avrebbero guadagnato mercato negli anni a venire ed avrebbero raggiunto una fetta importante del mercato contemporaneo. Aggiungiamo inoltre che amo il posto in cui vivo e sono cresciuto e non ho mai voluto prendere in considerazione di migrare altrove.
Con questa premessa è facile intuire il seguito della storia: non mi occupo di CG per professione. Tuttavia sebbene la mia carriera lavorativa mi ha portato da tutt'altra parte, non ho mai abbandonato il settore della computer grafica e soprattutto agli inizi (quando avevo ancora del tempo libero) ho avuto modo di studiare, sperimentare, utilizzare e provare a fare più possibile con una nutrita schiera di programmi disponibili all'epoca anche se tutto questo è rimasto un semplice hobby.
Quando in seguito le esigenze lavorative e familiari hanno ridotto quasi a zero il tempo libero a disposizione e quindi da poter dedicare a questa attività, ho comunque cercato di mantenermi aggiornato leggendo, informandomi e guardando video tutorial perché la passione che ho per la computer grafica alla fin fine non si è mai spenta.
Software di modellazione 3D e motori di rendering
Ricordo bene il periodo in cui ebbi modo di sperimentare maggiormente con i software di modellazione disponibili all'epoca: 3D Studio, Rhinoceros, Maya, Cinema 4D e per finire: Blender.
Mi affezionai subito molto a Blender a dispetto della poco intuitiva interfaccia e curva di apprendimento abbastanza ripida perché intravedevo una serie di possibilità esaltanti legati proprio al progetto ed alla sua formula Open Source.
Inoltre ai tempi era anche quasi una scelta obbligata perché era uno dei pochi tool di modellazione 3D disponibili in Linux, ambiente in cui stavo muovendo i miei primi passi e che da lì a poco sarebbe diventato il mio unico sistema operativo per casa e lavoro.
Recentemente hanno iniziato a circolare le prime informazioni sulla nuova sconvolgente versione di Blender che con il passaggio alla 2.80 abbandona una codebase ed una interfaccia grafica datate in favore di un approccio più moderno e flessibile, infinitamente più user friendly e molto più conforme agli attuali standard di mercato aprendo la possibilità anche ad utilizzatori affini ad altri strumenti di provare Blender con relativa facilità.
Veniamo quindi al momento in cui sto scrivendo questo articolo, ormai la versione di Blender 2.80 “stabile” è stata annunciata, l'uscita è imminente e le migliorie sono troppe per essere semplicemente elencate qui.
Negli ultimi mesi per interesse personale ho iniziato a studiare EEVEE, un nuovo motore di rendering interno in Blender 2.80. È un motore di rendering “real-time” ossia in grado di renderizzare rapidamente e con una ottima resa anche scene complesse, esattamente come fanno i moderni game engines. Naturalmente le performance hanno un costo e se per l’altro motore di rendering incluso in Blender (Cycles) le performance spingono verso la qualità ed il costo è in termini di tempo di calcolo, in Eevee le performance sono velocistiche ed il costo è in termini di realismo. Sono molto affascinato da questa tecnologia incredibile in grado di sfornare una grafica di altissimo livello in tempo reale (più o meno, non prendetemi alla lettera) su un comune hardware domestico non troppo costoso.
Game Engines
Inizialmente pensavo di sviluppare tutti gli asset 3D del progetto in un software di modellazione per poi importarli in un Game Engine per mettere insieme le animazioni e renderizzare le sequenze cinematiche.
L’idea mi era venuta sulla base delle esperienze maturate negli anni precedenti: ho avuto modo di studiare e sperimentare diversi game engine, sono partito prima dal Cryengine, ho dato una rapida occhiata a Godot e Unity (ho anche fatto una ricerca su quanto disponibile a livello Open Source e Linux) e avendo già alcune conoscenze di Blender (<=2.79) ho provato anche a prototipare qualche giochino direttamente con il suo game engine interno (tuttavia essendo stato rimosso dalla versione 2.80 in poi ho scelto di abbandonare questa strada).
L'ultimo strumento in ordine di tempo a cui mi sono dedicato con studio e sperimentazione è l'Unreal Engine e attualmente è la mia scelta finale come game engine da approfondire e a cui dedicarmi.
La scelta è abbastanza ovvia: è uno dei pochissimi game engine professionali disponibili gratuitamente (per i dettagli sulle licenze andate a leggere tutto sul sito ufficiale dove è spiegato molto meglio di come potrei fare io) e fruibili abbastanza comodamente in Linux... sottolineo “abbastanza” perché dire che il supporto e gli strumenti disponibili siano allo stesso livello della corrispondente versione per Windows... ci sono sicuramente ancora molte lacune da colmare. Tuttavia dopo svariati tentativi su diverse versioni rilasciate nel tempo con la versione 4.21 di Unreal Engine sono finalmente riuscito a trovare un buon compromesso e un workflow sostenibile in ambiente completamente Linux.
E finalmente arriviamo al progetto!
Insomma, dopo anni a bazzicare con computers e software di grafica e modellazione, ho riempito diversi quaderni di idee, di concept, appunti su giochi, applicazioni e naturalmente progetti di animazioni in CG.
Tutte queste idee sono rimaste a fare la muffa per molto tempo ma oggi, grazie ai progressi tecnologici, alle evoluzioni hardware e software, alla apertura mentale ed allo sforzo della industria di aprirsi alle schiere di sviluppatori indie… sono convinto che sia giunto il momento di provare a realizzare qualcosa, ora o mai più.
Quindi ho fatto una scrematura e ho analizzato tra le idee messe da parte quale potesse essere quella giusta.
Alla fine della cernita sono rimasto con poche scelte tutte molto corpose, al limite della effettiva fattibilità tecnica da parte di un singolo individuo non formato a livello professionale a ricoprire tutti i ruoli e le competenze necessarie (perché voglio ricordare che tutto quello di cui ho parlato fino ad ora è ed è sempre stato il mio hobby, non il mio lavoro).
Ma mi piacciono le sfide, mi conosco e so che non sarei capace di accontentarmi di fare qualcosa che non rappresenti una vera sfida.
La scelta era tra: 2 videogiochi e 2 cortometraggi in CG. Il caso ha deciso per me.
Proprio in questo periodo un paio di miei amici si sono avvicinati a Blender, mi sono sembrati interessati ad imparare il software e comunque appassionati di questi argomenti quindi ho proposto loro uno dei 4 progetti selezionati, il cortometraggio più difficile e più elaborato, quello che tra tutti nutrivo più dubbi di essere in grado di fare da solo.
Questi miei amici hanno ascoltato di buon grado la mia proposta e hanno deciso di salire a bordo!
E il progetto ha ufficialmente preso il via...