Introduzione al sito

Mantenere questo servizio implica delle spese per il mantenimento del server e del tempo investito per essere aggiornato.

Per cinque anni la fruibilità di questo portale è stata completamente gratuita e autofinanziata tramite gli annunci pubblicitari e le donazioni.
Purtroppo questo non è più sufficiente per mantenere on-line il portale.
Al termine dell’anno 2021 le spese di mantenimento hanno superato di gran lunga le entrate.

Ringrazio comunque gli utenti che in questi anni hanno effettuato una piccola donazione e li invito ad attendere fiduciosi l’uscita del primo volume di UNYC# che per essi sarà accessibile in forma totalmente gratuita.

Al momento le varie sessioni al sito non sono più accessibili a causa di un sostanzioso aggiornamento che pone lo sguardo alle ultime versioni di Unity.
La guida completa è disponibile in versione eBook scaricabile o visionabile on-line, corretta ed aggiornata, ricca di nuove sessioni e argomenti.
 

Vi ricordo che 
gli eBook sono fruibili anche con dispositivi diversi dai KIndle.
Esistono molte applicazioni per Android/iOS ed anche per PC/Mac.
Scaricabili gratuitamente anche dal sito di Amazon Kindle.

La versione cartacea dei volumi è stampata, rilegata e gestita interamente da Amazon Libri.

   

La guida è divisa in 2 Volumi.
Il Volume 1 parte dalle basi, considerando il lettore come un completo estraneo al mondo della programmazione e di Unity 3D.
Esploreremo concetti come variabili e funzioni, per passare poi al cuore dell’engine, imparando a muoverci in un ambiente 3D, inserendo oggetti e personaggi nei fantastici mondi da noi creati.

Il Volume 2 continuerà da dove si è concluso il primo volume, introducendo i principi della programmazione ad oggetti come ereditarietà e polimorfismo ed esplorerà molte delle funzioni più avanzate dell’engine aggiornate alle versioni 20212023. La nozioni per la versione 6 di Unity (in uscita nel 2024) è saranno discusse con aggiornamenti agli e-book. 
In questo volume impareremo ad usare le Render Pipelines di Unity, sapremo come applicare correttamente il LOD, l’Occlusion Culling ed altri sistemi per ottimizzare i nostri giochi. Impareremo ad usare lo Shader Graph per la creazione di shaders personalizzati senza il bisogno di scrivere codice. Saremo poi in grado di personalizzare il nostro Editor, con gli editor scripts e il custom inspector. Esploreremo il Packet Manager, imparando a creare i nostri packages e la procedura, passo per passo, per venderli sullo store di contenuti più ricco del mondo!
Continueremo l’apprendimento del C# nei sui fondamentali, come i delegati e gli eventi, preparandoci così ad affrontare la strada per i concetti più avanzati della programmazione.

William Giacinti  non è uno scrittore. William è un programmatore, game designer e sviluppatore di contenuti ludici, da più di vent’anni.
Di conseguenza questo libro non sarà un’opera degna di nota per la sua mirabolante struttura grammaticale.
I tre volumi sono strutturati in modo che possano essere segui facilmente da chiunque, a prescindere dal titolo di studio e dalla sua età. Una guida scritta in maniera informale che possa essere appagante e d’ispirazione a chiunque voglia cimentarsi nello sviluppo di videogames.

Perché sviluppare un gioco può essere divertente almeno quanto giocarlo.

 
 
Vi invito comunque a disabilitare gli ADs Block sul vostro browser per questo sito, così da per permettere la visualizzazione dei piccoli banner pubblicitari che ci permettono di restare on-line.
E se vi fa piacere, potete anche fare una piccola donazione tramite il pulsante PayPal sulla destra, anche se solo simbolica, per dimostrare che il sito è di vostro gradimento.
 

Dal Maggio 2022 il sito fa parte anche del circuito Brave Rewards, il sistema gestito dal browser Brave (programmato da  Brendan Eich, creatore di JavaScript, cofondatore di Mozilla) che permette di guadagnare valuta sugli annunci, non solo al creatore dei contenuti ma anche all’utente che li visualizza.
A prescindere dalle ricompense, vi consiglio vivamente di scaricare ad utilizzare il browser Brave, non solo per usufruire del sistema di ricompense sugli annunci ma soprattutto perché si tratta del browser più performante in circolazione, veloce, efficiente e leggero oltre che più sicuro rispetto ai più conosciuti browser (Firefox, Chrome, Explorer ecc….), basato su Chrominum e dunque compatibile con tutte le sue estensioni. Brave blocca automaticamente la pubblicità online e i cookie traccianti. Integra inoltre una serie di funzionalità finalizzate a tutelare la privacy dell’utente ed è provvisto di supporto per Tor nella modalità di navigazione privata della versione desktop.
Grazie.

 

 

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

Avete già scritto questa domanda su decine di forum e le risposte parlavano dell’acquisto onerosi corsi di formazione?
Oppure vi hanno consigliato di utilizzare tools “giocattolo” che non necessitano l’uso della programmazione?
Vi è già capitato di leggere tutorial e guide da cui non avete cavato nulla o che si sono interrotti sul più bello per poi invitarvi a pagare per poter continuare?
Siete nel posto giusto.

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.

 

Perchè non usare uno dei tanti tools “GameMakersInPocheOreSenzaProgrammare“?

Se avete la minima ambizione di poter un giorno trasformare la vostra passione in un lavoro, evitate questi programmi che a fronte del tempo speso per essere compresi non vi insegneranno niente di utile che possa aiutarvi a diventare un giorno, uno sviluppatore.
Diciamo che se avete meno di 15 anni, volete solo dare sfogo alla vostra fantasia senza impegno e non volete creare un videogioco che abbia delle potenzialità effettive, questi strumenti fanno al caso vostro.
Ne esistono a decine ma preferisco evitare di farne in nomi. Hanno tutti dei punti in comune:
– Immediatezza d’uso che potrebbe attirare l’utente più desideroso di vedere i propri sprites muoversi sullo schermo sin da subito e con poco sforzo.
– Un’estrema limitatezza su ciò che si può ottenere anche dopo anni di utilizzo.
– Il proporre di scorciatoie per “diventare creatori di videogiochi” senza dover imparare un vero linguaggio di programmazione.

Sappiate che utilizzando questi programmini non farete altro che buttare tanto tempo che avreste potuto investire nell’apprendimento degli strumenti necessari per diventare un giorno dei “veri sviluppatori”.

Vi ritroverete un giorno con un pensiero fisso:
 “se quel giorno avessi iniziato ad imparare a programmare, a quest’ora sarei già bravo”.


 

Unity 3D o Unreal Engine
Pro e contro dei due engines a confronto

Inutile girarci attorno, se non lo avete già fatto, prima o poi dovrete affrontare questo dilemma.  
Ma se siete qui, a leggere questa guida, forse avrete già trovato una risposta alle vostre esigenze.

Unreal e Unity sono i padroni indiscussi della scena nel mondo degli engines tra gli sviluppatori indipendenti. E non solo.
Personalemnte, uso Unity da più di vent’anni e Unreal da circa un paio d’anni.
I due engines sono concettualmente differenti, pur avendo pari potenziale, quando sfruttati a dovere.

Alcune delle principali differenze che dovresti tenere a mente quando decidi tra Unreal Engine o Unity includono:

  1. Linguaggio di programmazione : Unreal Engine utilizza C ++ mentre Unity utilizza C #, che è considerato più veloce da imparare e più adatto allo sviluppo di videogiochi indie rispetto a C ++.
    Entrambi i motori possiedono strumenti per il visual-scripting.
  2. Comunità:  entrambi i motori hanno una vasta comunità di utenti attivi, ma Unity attualmente rappresenta il 50% della quota mondiale di mercato rispetto al 13% di Unreal.
    La community di Unity è circa tre volte più grande di quella di Unreal e questo ne fa l’engine più usato al mondo. Ciò che ne consegue è una vastità ineguagliabile di materiale che si può reperire per Unity (scripts, assets, tutorials e guide) che non è minimamente paragonabile a quello di nessun altro engine presente sul mercato.
  3. Asset Store: essi sono i negozi di asset che consentono agli utenti di scaricare ‘ mod ’ che potenziano le funzionalità dell’engine oppure consentono di scaricare materiale pronto da poter inserire nei propri progetti, come nuove textures, modelli, suoni o oggetti di scena.
    Unreal offre circa 16.000 risorse, mentre Unity offre oltre 65.000 risorse.
    Entrambi gli store permettono agli utenti di creare, pubblicare e vendere i propri assets.
  4. Fondamentalmente, l’aspetto esteriore di un gioco 3D creato con Unreal (soprattutto Unreal 5), sarà sempre migliore rispetto a quella raggiungibile con Unity, soprattutto quando si punta al fotorealismo. 
  5. La stabilità di Unity è uno dei punti di forza dell’engine, mentre Unreal tenta di sopperire ai suoi continui crashs con sistemi di auto-salvataggio del progetto e continui backup semiautomatizzati.
  6. Richieste Hardware: rispetto a Unity, Unreal necessita di macchine più potenti per essere usato dallo sviluppatore, soprattutto in progetti medio/grandi. Mentre è possibile sviluppare in Unity e portare a termine un progetto anche su un Notebook di media potenza, sviluppare in Unreal senza avere un buon computer con almeno 32Gb di Ram, diventa proibitivo dopo pochi import di oggetti e textures.

Le differenze tra i due engines sono davvero molte che necessitano di un’articolo a se.
Se vi interessa il discorso di confronto tra i due Engines, la discussione continua su questo apposito articolo: UNITY vs UNREAL.
 
 

Unity è il miglior amico dello sviluppatore.
Unreal è il miglior amico del giocatore.

 
 

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 ottimo 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, PC/Console o Mobile.

Negli ultimi mesi ho ricevuto decine di richieste d’aiuto su script e su 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 UNYC#?

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 si chiede come poter creare applicazioni per cellulari.
O chi è rimasto affascinato da un gioco per console/PC e si è chiesto “come posso farlo anche io?”.

UNYC# nasce come guida per chiunque voglia imparare a creare videogiochi.
Unity 3D è lo strumento più efficiente e versatile che abbiamo attualmente a disposizione per raggiungere tale scopo in modo professionale, imparando a programmare veramente.

Con Unity infatti potrete imparare a programmare anche applicazioni che si discostano da un ambito prettamente ludico. Dunque, non solo videogiochi, ma anche applicazioni gestionali, per il web, VR… e molto altro.

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

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.

UnyC# 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 soprattutto 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!
Questa iniziativa 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 fino all’attuale versione 2021.

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. Soprattutto, molte informazioni attualmente disponibili riguardano vecchie versioni di Unity e molte questioni trattate sono diventate obsolete con la conseguenza di non essere più funzionali.

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.

Perché Unity?

Perché è l’engine più usato al mondo, quello più supportato, quello più versatile e quello più intuitivo e meglio strutturato per essere imparato da chiunque, anche su hardware meno potenti.
Al giorno d’oggi Unity 3D di gran lunga la piattaforma più affermata tra gli sviluppatori indipendenti.
Rispetto a qualche anno fa la comunità italiana è cresciuta esponenzialmente, tanto da necessitare un punto focale sul web dove scambiare informazioni e nozioni. Per questo nasce UNYC#.
Su UNYC# troverete lezioni per principianti, articoli informativi sullo sviluppo di applicazioni ludiche, links ad archivi di scripts avanzati, un’area dove fare richieste di scripts specifici e molto altro. 
Inoltre, se volte approfondire un argomento non è stato ancora trattato, è possibile fare una richiesta specifica su quale aspetto della programmazione vogliate che sia inserito negli aggiornamenti.

Con Unity non esistono limiti. Che tu voglia creare un piccolo gioco per Android, iOS o un RPG per PC e console.
Tuttel le console, dispositivi mobili, Mac o PC, giochi sul Web, VR, Switch 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.

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 (Baldo, 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 per vederne le conseguenze. I giochi vengono sviluppati nel corso degli anni, quindi ci vorrà un po’ di tempo prima che il recente cambiamento di rotta del team Unity 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 emergono concrete intenzioni di estenderne l’uso anche anche a futuri progetti molto più corposi. Con Unity sono stati sviluppati CAPOLAVORI indiscussi come Cuphead, Life is Strange, Ori and the Blind Forest (premiato come “Best Xbox game of the year 2015”), Fall Guys, Untitled Goose Game, Heratstone, Polemn Go, 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/2019. Dalla versione 2017 in poi il team di sviluppo di Unity si sta concentrando soprattutto 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 e non mollate, quando ne avrete 45 potrete definirvi “programmatori”. Senior Programmer si diventa dopo 8/10 anni di programmazione continuativa. 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, creando il primo platform per PC, cosa ritenuta fino ad allora impossibile, creatore di videogiochi iconici come Doom, Quake, ecc.. che sdoganarono il 3D puro in tempo reale su computer. Carmack, anche a fronte del successo ottenuto, è rimasto sempre un vero programmatore, per questo il suo è un nome meno conosciuto degli altri) .
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 il 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 aprono alle fondamenta della programmazione in C# destinata all’uso su Unity e contengono informazioni indispensabili. Dalla terza sessione in poi inizieremo ad addentrarci nell’editor di Unity, ma senza mai abbandonare la scrittura di scripts in C#.
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, nel primo Volume ho cercato di ridurre il superfluo all’osso per dedicarmi alla comprensione del sistema Unity.
Non mi resta che augurarvi buona lettura e buon sviluppo!

William “WILEz” Giacinti
Senior programmer.
3D/2d Graphic designer.
Game designer.
Skilled Unity 3D developer.