"Voglio creare un videogioco ma non so da dove iniziare.."

Avete già scritto questa domanda su decine di forum e non avete avuto risposta? Oppure le risposte parlavano dell'acquisto onerosi corsi di formazione? Vi è già capitato di leggere tutorial e guide da cui non avete cavato nulla? Siete ne posto giusto.

Chiunque abbia la passione per i videogiochi ha, almeno una volta, pensato a quanto potrebbe essere interessante e di enorme sfogo creativo, lo sviluppo di un videogioco tutto suo.

Questo portale sarà un ibrido tra una guida per chi vuole iniziare da zero e una fonte di informazioni e aiuti per chiunque usa questo splendo strumento anche da molto più tempo.
Nella parte dedicata ai neofiti spiegherò le basi della programmazione in C# (C Sharp) e della creazione di un gioco 3D con l'ausilio di Unity, usando una sintassi basilare e informale. Ma anche chi già conosce Unity potrà trovare molti articoli interessanti e dettagliati su concetti avanzati, piccoli trucchi per migliorare le proprie abilità e una community sempre aperta a discutere sulla tecnica migliore per raggiungere un determinato risultato.

Le radici: C# e XNA da Zero

Nell'ormai lontano 2009 mi impegnai nella stesura di una guida analoga che riguardava lo sviluppo di un videogioco con le allora fantastiche librerie XNA di Microsoft, oggi abbandonate dalla casa di Redmond. La guida riscosse un enorme successo e fu seguita da quasi un milione di utenti. Ancora oggi sono lieto di ricevere e-mail e messaggi da chi ha iniziato a programmare applicazioni ludiche grazie alla mia guida. Al giorno d'oggi lo strumento che si può paragonare a XNA è sicuramente Unity, l'engine più usato dagli sviluppatori indipendenti, sia per realizzazioni 3D che 2D.

Negli ultimi mesi ho ricevuto decine di richieste d'aiuto su script e l'uso di Unity in generale, tanto che se avessi raccolto tutte le risposte ai quesiti a cui ho risposto, avrei potuto scriverci un libro. Ho dunque deciso di raccogliere tutti gli argomenti che ho trattato con gli utenti, in un unico portale che contenga scripts, consigli e spiegazioni dettagliate su tutte le questioni che prima o poi dovranno essere affrontate da chiunque si imbarchi per questa avventura.

 

A chi è destinato questo portale?

Principalmente a chi ha deciso di punto in bianco "voglio imparare a programmare" senza saperne nulla.
Ma anche a chi si è detto "voglio imparare a fare videogiochi" e non sa da dove iniziare.
O chi ha deciso di punto in bianco "voglio imparare per fare applicazioni e giochi per il cellulare".
O chi è rimasto affascinato da un gioco per console/PC e si è chiesto "come posso farlo anche io?".

Questo tipo di persone troveranno il maggiore giovamento da queste pagine, come forse non potranno fare in nessun altro posto nello stesso modo.

Ma come detto questo portale è diviso in diverse sessioni portanti, una dedicata a chi inizia completamente da zero e una destinata a chi già sa sviluppare con Unity e vuole approfondirne la conoscenza oltre ad essere fonte costante ed aggiornata di scripts per tutte le esigenze.

Questa guida pone le sue fondamenta sulla programmazione, verranno esposti argomenti come le classi, le variabili, i metodi, gli operatori, i costrutti.... e tutto ciò che sarà necessario per imparare a programmare veramente.
Dunque, Unity si, ma sopratutto molto C#.
Perché capirete presto che se non avete intenzione di imparare a programmare, lo sviluppo di videogiochi non è cosa per voi.

Che si inizi dalle basi o che si conosca già l'engine, qui potrete trovare centinaia di scripts e trucchi che sono alla base dello sviluppo con Unity.
Sono pronto a scommettere che anche chi si ritiene esperto dell'engine qui troverà qualche trucco che non conosceva!
Il sito si trova in costante fase di aggiornamento e sarà sempre al passo con i tempi e con le versioni dell'engine, partendo dalla versione 2017 in poi.

Esistono altri portali sull'apprendimento di Unity?

Si. La maggior parte in inglese, ma già dalla versione 3 di Unity tentammo di creare un forum che aiutasse gli sviluppatori italiani a comprendere al meglio questo splendido engine. Purtroppo molte delle iniziative intraprese sono state interrotte prematuramente e ad oggi esiste poco di concreto che sia facilmente e gratuitamente fruibile da un utente italiano. Sopratutto, molte informazioni attualmente disponibili riguardano vecchie versioni di Unity e molte questioni trattate sono diventate obsolete con la conseguenza di non essere più funzionali.

La maggior parte dei corsi si interrompono sul più bello per poi invitarvi a pagare per continuare.

Come accadde per la guida del 2009 su XNA, anche questo portale sarà fruibile dall'inizio alla fine senza nessuna spesa.
Il nostro scopo è dare una possibilità a chiunque di imparare ad usare questo splendido strumento così da poter sfogo ai propri sogni e una possibilità in più agli sviluppatori italiani di emergere.
L'unico metodo di finanziamento del sito sarà conseguito dalle pubblicità e se ne avremmo la possibilità, dalla vendita degli eBook che conterranno le stesse informazioni fruibili gratuitamente da questo sito.

Se avete un account Facebook vi invito ad iscrivervi alla commuity Unity GDI (Game Dev Italia) dove troverete moltissime persone che stanno imparando come voi e altrettanti "esperti" pronti a darvi una mano e a discutere sullo sviluppo con Unity.

Perché Unity?

Al giorno d'oggi Unity 3D di gran lunga la piattaforma più affermata per lo sviluppo di videogiochi indipendenti. Rispetto a qualche anno fa la comunità italiana è cresciuta esponenzialmente, tanto da necessitare un punto focale sul web dove scambiare informazioni e nozioni. Ecco qua!
Su questo portale troverete lezioni per principianti, articoli informativi sullo sviluppo dei videogiochi, un archivio di scripts avanzati, un'area dove fare richieste di scripts specifici e molto altro. Tutto questo in italiano, per italiani e in forma totalmente gratuita.

Con Unity non esistono limiti. Che tu voglia creare un semplice gioco per Android o un FPS per PC.
Console, dispositivi mobili, Mac o PC, giochi sul Web, VR, o addirittura su Smart TV. Singleplayer o multiplayer, 2D o 3D... qualsiasi cosa tu abbia in mente, con Unity puoi farlo, e in grande stile.


La lista dei sistemi su cui puoi sviluppare con Unity

Come recita uno slogan sul sito di Unity:

Costruisci una volta,
distribuisci ovunque.

Ed è vero. Con Unity potrete sviluppare un gioco una sola volta e poi scegliere su quali piattaforme renderlo disponibile, quasi senza apportare modifiche tra una versione e l'altra .

Una serie di videogiochi creati con Unity.

Negli ultimi anni il panorama italiano degli sviluppatori indipendenti si è molto evoluto ed i team italiani si stanno finalmente ritagliando un giusto spazio in questo mondo sempre più accessibile a chiunque. Questo anche grazie ad Unity.
Realtà italiane come quella di Kunos Simulazioni (Assetto Corsa), i Naps Team (Iron Wings, Gekido, Maria the Witch e molti altri), la già affermata Milestone, il Trinity Team ( Bud Spencer & Terence Hill - Slaps And Beans), gli Studio Evil e permettetemi di nominare anche gli Artistic Minds di cui sono fondatore, sono tutte floride realtà italiane che si stanno affermando nel panorama dello sviluppo di applicazioni e videogiochi.

Una del domande che un neofita potrebbe porre è "perché non si vedono molte produzioni AAA sviluppate con Unity?"
Il controllo del codice sorgente è sicuramente uno degli aspetti più importanti per una software house AAA. Le versioni precedenti di Unity non fornivano il controllo totale del sorgente. Per uno studio importante non avere accesso al controllo del codice sorgente di un motore è un problema assai gravoso. Gli studi su larga scala non amano essere dipendenti dallo sviluppo al di fuori del loro controllo e dunque dipendere dal codice di terzi. È il motivo per cui così tanti studi AAA scelgono di utilizzare motori proprietari in-house. Unity sta andando in questa direzione, allentando gradatamente la presa sul proprio codice. Questo è stato uno sviluppo troppo recente (da Unity 2017 in poi) per vederne le conseguenze. I giochi vengono sviluppati nel corso degli anni, quindi ci vorrà un po' di tempo prima che il recente cambiamento possa avere qualche effetto sul mercato degli engines.

Attualmente Bethesda ha scelto Unity per alcune sue produzioni, capolavori come Pillars of Eternity (1 e 2) sono stati sviluppati con Unity. La Square Enix usa Unity, la Ubisoft ha usato Unity per diversi suoi progetti e da una recente intervista afferma che intende usarlo anche per futuri progetti molto più corposi. Con Unity sono stati fatti CAPOLAVORI indiscussi come Cuphead, Ori and the Blind Forest (premiato come "Best Xbox game of the year 2015"), The Long Dark... senza dimenticare FireWatch, Cities: Skylines, Assassin's Creed Identity, Deus Ex: The Fall, D.R.O.N.E. Yooka Laylee, Escape from Tarkov e moltissimi altri, considerati prodotti Indie a livello AAA. E sono stati tutti sviluppati con versioni ormai obsolete di Unity che non hanno molto da spartire con la potenza che ha raggiunto Unity con la versione 2018. Dalla versione 2017 in poi il team di sviluppo di Unity si sta concentrando sopratutto sul migliorare l'aspetto grafico, pur rimanendo fedele alla caratteristica che lo ha contraddistinto si dal suo esordio, ovvero la versatilità e la sua facilità d'utilizzo.

E' vero che con Unity posso sviluppare un gioco senza saper programmare?

Nulla di più falso. Diffidate di chi cerca di illudervi con certe affermazioni solo per invogliarvi a comprare qualche corso on-line che vi promette di insegnarvi a fare un gioco in poche ore. Non esistono scorciatoie che permettano di sviluppare un videogioco che sia degno di questo nome, senza saper scrivere una riga di codice.
Se tenterete la "strada facile" seguendo qualche corso che non vi illustri almeno le basi della programmazione, non avete via di scampo, fallirete miseramente dopo le prime difficoltà.
Unity è uno strumento relativamente semplice, fino a qualche anno fa lo sviluppo dei videogiochi era molto più complicato, bisognava programmarsi a mano le collisioni, la proiezione delle ombre e molte altre cose che su Unity (e altri engines) sono caratteristiche già implementate di base. Unity alleggerisce molto il carico dello sviluppo ma non fa miracoli. D'altronde con Unity è possibile sviluppare titoli di "livello AAA", esattamente come i videogiochi con cui avete giocato fino ad oggi, dunque un po' dovrete sudarvela. Ma le soddisfazioni non tarderanno ad arrivare.
Dunque armatevi di impegno e dedizione perché ne avrete bisogno.

Non mi servirà conoscere l'inglese?

Questo portale è scritto in italiano, dedicato agli agli italiani e dove possibile gli scripts avranno tutti i commenti in italiano.
Ma è da tenere presente che il mondo della programmazione è fortemente influenzato dalla lingua anglosassone di cui bisogna avere almeno una cognizione generica. La conoscenza dell'inglese non può far altro che aiutare la comprensione di ciò che si scrive in uno script. Inoltre considerate anche che l'interfaccia di Unity esiste solo in lingua inglese, così come il sito ufficiale di Unity non è stato tradotto in italiano e dubito che lo sarà mai. A parte questo, una conoscenza poco approfondita della lingua inglese non sarà di certo l'ostacolo che non vi permetterà di andare avanti nell'apprendimento.

C'è un'età in cui è troppo tardi per iniziare ad imparare?

Assolutamente no. A meno che non abbiate 80 anni.
Anzi, a volte è meglio iniziare più tardi così d'avere la mentalità e la pazienza necessarie per concentrarsi seriamente. Salvo rari casi, iniziare troppo presto non fa compiere progressi sostanziali, perché "manca la maturità" cerebrale (in senso sia culturale che fisico) per fare propri certi concetti. Ma non è sempre così. Se la passione è grande, nulla è impossibile.
Non esiste un'età giusta, se siete minorenni e avete già la pazienza di seguire una guida come questa ed indagare sulle questioni che non vi sono chiare, che ben venga. Se siete sopra i 25, non disperate, avete un'età che vi permetterà di seguire con più pazienza tutte le questioni necessarie in questo campo. Se avete 40 anni ed iniziate ad imparare oggi, quando ne avrete 45 sarete dei veri programmatori. Tutto dipende dalla vostra tenacia e dedizione.

E' necessario avere una laurea per fare il programmatore?

Potremmo porre questa domanda a Bill Gates o a Mark Zuckerberg o a Steve Wozniak o a John Carmack ...
Tutti programmatori di successo, ormai miliardari e imprenditori (con l'eccezione di John Carmack, genio assoluto della programmazione ludica che grazie alle sue intuizioni sdoganò il videogioco su PC, creatore di Doom, Quake, ecc.. che a fronte del successo ottenuto, è rimasto sempre un vero programmatore) .
Nessuno di essi, così come moltissimi altri programmatori di successo, hanno mai conseguito una laurea. Anzi, molti di loro hanno sempre affermato che la loro fortuna è stata quella di uscire dagli schemi d'insegnamento universitari che non facevano altro che reprimere la fantasia necessaria in questo campo.
Lungi da me boicottare gli studi accademici, ma è ormai ovvio che per avere quel qualcosa in più sia necessario avere passione, inventiva e la curiosità di andare a cercare da soli come e perché certe cose funzionano in un determinato modo, senza rimanere "imbrigliati" in determinati schemi d'apprendimento che portano via tanto tempo a ciò che volgiamo davvero imparare ad essere, che non sempre coincide con ciò che gli altri vogliono che impariamo ad essere.

Ricordatevi sempre che lo sviluppo di un videogioco è una forma d'arte.

Pronti partenza e Via!

Se non avete mai scritto del codice, vi consiglio di iniziare dalla prima sessione e proseguire per gradi. Le prime due sessioni espongono le fondamenta della programmazione in C# destinata all'uso su Unity contengono informazioni indispensabili. Dalla terza sessione in poi inizieremo ad addentrarci nell'editor di Unity, ma senza mai abbandonare la scrittura di scripts.
Se saltate dei passaggi vi troverete di senza dubbio a farvi domande di cui le risposte erano sulle parti che avete ignorato.
Se state imparando dalle basi, nella sessione "Unity da Zero" ogni lezione sarà importante. Concetti come le classi, variabili, ecc... sono le fondamenta della programmazione. Ma non preoccupatevi, ho cercato di ridurre il superfluo all'osso.
Non mi resta che augurarvi buona lettura e buon sviluppo!

William "WILEz" Giacinti
Programmatore senior, grafico e designer.