"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 di anni di gavetta e complicate procedure di programmazione? 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?

A chiunque. 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 seriamente.
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 tutt'ora nella prima fase di allestimento e saranno necessarie
diverse settimane prima che tutto il materiale sia disponibile.

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 riguardano vecchie versioni di Unity e molte questioni trattate sono diventate obsolete..

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.

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.


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) e permettetemi di nominare anche gi Artistic Minds di cui sono fondatore, sono tutte floride realtà italiane che si stanno affermando nel panorama dello sviluppo di applicazioni e videogiochi.


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 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. 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.

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.