Giocherellare con Unity

Photo by aldi sigun on Unsplash

In queste ultime settimane sto giocherellando con Unity scrivendo un pochino di codice da fare girare sul mio Oculus Quest 2.

Alla fine mi sono risolto ad usare Unity al posto di Unreal Engine, nonostante la versione 5 di quest’ultima sia spaventosamente potente, essenzialmente per due ragioni. La prima è che mi trovo molto più a mio agio con C# che con C++ e la seconda è che non voglio certo diventare un indie developer di giochi. Quindi se è vero che Unreal Engine sembra essere molto più potente di quanto non sembri Unity alla versione attuale è altrettanto vero che sono una pippa in entrambi gli ambienti e quindi non sarei comunque in grado di sfruttarne appieno le potenzialità.

La prima cosa di cui ti rendi conto dopo avere installato lo Unity Editor è che hai appena installato un mostro. Hai appena occupato quasi sei gigabyte di spazio su disco e sei solo all’inizio.

Lanci lo Unity Editor e ti si apre una finestra tutto sommato accogliente. Pensiamo ad esempio a cosa si vede quando si apre per la prima volta Blender e ci possiamo fare una idea della differenza. La semplicità è solo apparente perché da qui in avanti le cose si complicano, specialmente sei vuoi sviluppare per Oculus Quest.

Ti rendi subito conto che sviluppare giochi non è una cosa banale. Esattamente il contrario. C’è una enorme complessità di programmazione e design anche dietro al più semplice gioco che sia stato scritto.

Dopo circa un’ora capisci che da solo non ne vieni fuori perché la complessità è troppo elevata. YouTube non si adatta a me per questo genere di cose e quindi mi dirigo verso qualche libro. Dopo qualche ora comincio a comprendere i concetti fondamentali e riesco a mettere insieme qualche oggetto che si muove non di vita propria ma per mia volontà.

La documentazione di Unity è tutto sommato ben fatta ma è ben evidente che è stata scritta per qualcuno che già maneggia con una certa maestria le segrete cose. Anche gli esempi sul repository GitHub di Unity sono piuttosto datati. Sono comunque utili se riesci a capire come il sistema sia evoluto negli anni. Una cosa per tutte, ma fondamentale. Recentemente Unity è passato ad un nuovo input system completamente diverso da quello precedente ed assolutamente incompatibile a livello di codice. Questo rende tutti gli esempi datati assolutamente inutilizzabili.

Ci si rende conto che Unity è un prodotto in continua evoluzione e cambiamento. Certo, un suo nucleo rimane sufficientemente stabile ma la periferia cambia di continuo. Da quando ho installato Unity la prima volta ho già notato due aggiornamenti. Anche tu che stai imparando devi quindi abituarti a capire che cosa è cambiato da una versione all’altra.

Presa una certa familiarità decido di fare una cosa che ritenevo semplice: riprodurre in tre dimensioni il mio appartamento e fare muovere un attore in FPS all’interno dandogli la possibilità di interagire con gli oggetti che lo circondano.

Dopo tre ore capisco che il progetto è ambizioso. Forse troppo.

In primo luogo capisco che oltre ad essere una pippa con Unity sono anche una pippa nella modellazione 3D. Fortunatamente scopro che esiste un package gratuito che si chiama ProBuilder che mi può aiutare. Subito dopo ti rendi conto di quanto lavoro sia necessario per modellare un ambiente in tre dimensioni. Dopo quattro ore di lavoro questo era il punto dovere ero arrivato.

Ora capisci il motivo per il quale sono necessari anni per lo sviluppo di un gioco complesso e capisci anche per quale motivo la produzione di un gioco possa superare il costo di una produzione cinematografica.

Alla fine decido che non voglio spendere troppo tempo a modellare e voglio scrivere un pò di codice. Rimango con la stanza immersa nel vuoto che vi ho mostrato poco sopra.

E qui comincia lo studio di vettori, quaternioni, rigid body, collider, shader, interactable, differenza tra Update e FixedUpdate e via verso un universo che sembra non finire mai e probabilmente è così.

Dopo circa due giorni di studio e di sudore riesco a compilare la mia applicazione e scaricarla sul mio Oculus Quest. Finalmente posso vedere il mio personaggio muoversi con una certa eleganza all’interno della stanza. Riesco a fare visualizzare le sue mani che seguono il movimento dei controller e sono in grado di interagire con il mondo fisico. Si possono aggrappare alla ringhiera delle scale, possono premere l’interruttore sulla parete per accendere e spegnere la lampada e possono raccogliere una palla di gomma da terra e lanciarla contro il muro.

Diciamo che tutto sommato è stato tempo ben speso per potere avere una prima impressione delle potenzialità di Oculus e per avere una idea della complessità dello sviluppo su quella piattaforma.

L’unica cosa che non mi piace è che lo sviluppo su Mac è un palla perché la simulazione di Oculus funziona solo su sistemi Windows. Per questo devi compilare la tua applicazione, mandarla su Oculus, inforcare Oculus e vedere cosa succede. Io che porto gli occhiali soffro molto senza contare il fatto che su Oculus non puoi vedere i messaggi di debug sulla console. Per questo mi sono risolto a scrivere qualche riga di codice che si collegasse ad un server UDP sul mio Mac per ricevere via rete gli eventuali messaggi di errore.

La cosa che mi fa impressione è che la cartella che contiene questo progetto contiene quasi sessantamila files ed ha una dimensione di quasi sette gigabyte.

Sino ad ora è stato tutto piuttosto divertente ed ho sicuramente imparato qualcosa di nuovo. Non ho idea di quanto tutto questo mi possa servire in futuro ma credo che imparare sempre cose nuove sia fondamentale.

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Commenti
Newest
Oldest Most Voted
Inline Feedbacks
View all comments