Programmare videogiochi: i tool gratuiti più utilizzati
Vuoi sviluppare videogiochi utilizzando strumenti gratuiti? In questo articolo passeremo in rassegna alcuni fra gli engine più famosi e ne vedremo i pro e contro, ti consiglieremo framework e librerie se invece preferisci usare il tuo ambiente di sviluppo e infine ti suggeriremo alcune risorse molto utili.
Cos’è un game engine e perché usarlo?
Cominciamo dalle basi: l’engine concettualmente è il software necessario a un gioco per funzionare. In genere comprende un renderer 2D/3D, un motore fisico, gestione audio, scripting, animazioni, AI, networking, scene-graph e altre componenti. Tutte queste funzionalità sono già presenti e a nostra disposizione senza doverle implementare da zero, dandoci la possibilità di concentrarci sui contenuti del gioco (grafiche, meccaniche, level-design) e risparmiandoci parecchio tempo.
Vediamo ora gli engine gratuiti più popolari al momento ed esempi di giochi sviluppati con essi, per ogni engine faremo una breve introduzione, vedremo i linguaggi di scripting che utilizzano e, infine, un riassunto di pro e contro. Tieni comunque a mente che questo è un mondo che va avanti rapidamente e le cose qua scritte potrebbero cambiare in futuro.
Unreal engine (UE)
Questo engine prodotto da Epic Games è nato nel 1998 per produrre il famoso FPS Unreal: per questa ragione, è fortemente improntato sullo sviluppo di giochi 3D con un insieme di strumenti per la creazione di sparatutto out of the box. L’engine ci permette di esportare il gioco su diverse piattaforme, su pc, console, mobile e VR, e permette di sviluppare anche su Linux (seppure sia necessario compilarlo dai sorgenti). Unreal non è utilizzato solo per lo sviluppo di videogiochi, ma ha preso piede anche in industrie alternative, quali quella del cinema e della tv, a dimostrazione delle potenzialità grafiche che può dare questo motore.
Alcuni titoli rilasciati utilizzando questo engine sono Gears Of War series, Mass Effect series, Bioshock, Batman Arkham Asylum, Abzu, Final Fantasy VII remake.
UE si presenta con un’interfaccia abbastanza complicata, con parecchi pulsanti e una quantità infinita di menù su menù, probabilmente più affrontabile da un modellista 3D o, in generale, da una persona con esperienza nel mondo dei software di grafica piuttosto che da un programmatore abituato all’IDE preferito.
Il linguaggio di scripting è il C++, ma è possibile anche utilizzare Blueprint Visual Scripting, un sistema di scripting visuale basato su nodi collegabili da interfaccia. Attenzione però: questo sistema ci permette di evitare di scrivere in C++, ma non preclude un minimo di conoscenze di logica necessarie per scrivere algoritmi.
L’engine è rilasciato gratuitamente con la possibilità di accedere al codice sorgente dietro registrazione al sito. Può essere utilizzato per sviluppare ed esplorare gratuitamente e in caso di rilascio non è previsto nessun pagamento fintanto che i guadagni lordi non superino i 1000000$, superati i quali bisogna versare il 5% delle entrate (qui maggiori informazioni).
Pro:
- motore e strumenti di grafica 3D eccezionali
- libreria di 10000 asset utilizzabili, derivati dall’acquisizione di Quixel
- supporto per lo sviluppo di giochi multiplayer
- continuo sviluppo di Epic Games di giochi proprietari (vedi Fortnite) con rilasci associati dell’engine
- possibilità di carriera
Cons:
- curva di apprendimento molto ripida
- essendo nato e usato per lo sviluppo di FPS può essere difficile allontanarsi dal genere
- pochi strumenti per lo sviluppo di giochi 2D
- C++ “difficile” e documentazione scarsa
Unity
Pubblicato nella sua prima versione nel 2005 come engine per mac Os X con l’idea di democratizzare lo sviluppo di videogiochi rendendolo disponibile e accessibile a più sviluppatori. Unity ha rapidamente allargato le piattaforme supportate, arrivando oggi a coprire mobile sia iOS che Android (comprese le controparti Tv), web via WebGL, desktop, console fino all’ultima generazione e VR/AR (coprendo la stragrande maggioranza di applicativi sul mercato). Con la sua policy di distribuzione gratuita, Unity Engine è considerato da molti il responsabile dell’ondata di indie game degli ultimi anni, aprendo le porte di questa industria a team ridotti, con scarse risorse economiche e permettendo di entrare nel mercato videoludico a milioni di sviluppatori che, per hobby o per vocazione, hanno deciso di intraprendere questo tipo di carriera.
Tra i titoli rilasciati con questo engine troviamo Fall Guys, Genshin Impact, Nascar Heat 4, Untitled Goose Game, Subnautica series, Risk of Rain 2, Ori and the Blind Forest, Ori and The Will of the Wisps.
Unity si presenta con un’interfaccia relativamente semplice, completamente customizzabile a seconda delle esigenze del momento, come per Unreal, però non del tutto intuitiva a causa della travolgente quantità di funzionalità.
A guidarci in questo mare di strumenti, troviamo una documentazione eccezionale con tantissimi tutorial step by step e demo da aprire nell’editor, che ci permettono di studiare la struttura e giocare smontando e rimontando i vari componenti. Il linguaggio di scripting è C#, precedentemente erano supportati anche Boo, eliminato in Unity5, e UnityScript, una versione di JavaScript anche questa rimossa nel 2017 con il rilascio di Unity 2017.1.
Se tutto ciò non dovesse bastare, l’enorme community che si è costruita negli anni ha creato altrettanto materiale per aiutarci a sporcarci le mani, condividendo molto spesso non solo la conoscenza dell’engine, ma anche la propria esperienza nel mondo videoludico, dalle sfide tecniche, il design, fino alla pubblicazione.
L’engine è rilasciato gratuitamente e permette la pubblicazione e la vendita di prodotti sviluppati senza pagare nulla, fino al guadagno negli ultimi 12 mesi di 100.000$ tra vendite, pubblicità e finanziamenti. Superata questa quota, bisogna aggiornare la propria licenza; per riferimento, a oggi una licenza pro (per una singola persona) viene a costare 150$ al mese.
Pro:
- facile da imparare, soprattutto grazie all’enorme quantità di materiale di supporto
- ottimo per creare prototipi e demo
- asset store enorme e con valide risorse gratuite
- community attiva e aperta
- documentazione impeccabile con tantissimi esempi da cui attingere
Cons:
- la libertà totale può creare caos nella struttura dei progetti, soprattutto per i novizi
- il pacchetto network built-in non è ottimale
- il prezzo della licenza pro può risultare esagerato, soprattutto per un freelancer
- spesso bisogna compensare con plugin sviluppati dagli utenti le mancanze dei tool built-in
- i rilasci continui rendono velocemente obsoleti tutorial e guide
Godot
Sviluppato da due developer argentini per diverse compagnie dell’America Latina, Godot viene rilasciato, completamente open source, sotto licenza MIT nel 2014. Permette di sviluppare su Linux, BSDs, macOS e Windows applicazioni 2D e 3D per PC, mobile e web.
Negli ultimi anni, l’engine ha potuto usufruire di grosse donazioni da parte di big dell’industria, permettendone l’avanzamento tecnologico e la crescita: per citarne alcuni, $20K da Mozilla Open Source Support (MOSS) per aggiungere supporto a WebSockets, WebAssembly e WebGL 2.0, $24K da Microsoft per aggiungere C# come linguaggio di scripting, $250K da Epic Games per migliorare il rendering grafico e più recentemente $120K da Kefir.
Tra i giochi rilasciati con Godot troviamo Bottomless, Hive Time, Guardian Sphere.
La prima differenza sostanziale rispetto ai precedenti engine si nota subito all’avvio: questo è talmente leggero che è distribuito anche come eseguibile standalone che non necessita di essere installato. Ciò permette, a chi non ha un computer particolarmente performante, di lavorare senza dover aspettare caricamenti infiniti (i progetti Unity e di Unreal tendono a diventare pesanti molto in fretta).
Un’altra caratteristica che contraddistingue questo engine è un’architettura basata su nodi. I nodi sono organizzati all’interno delle “scene”, che si possono istanziare, riutilizzare, ereditare e raggruppare; inoltre, le risorse dei progetti, che siano asset o script, vengono incluse come parte del filesystem invece di caricarle in un database, rendendo l’engine VCS friendly. Il linguaggio di scripting predefinito è GDScript, un linguaggio proprietario molto simile a Python, ma sono supportati anche VisualScript, C# e C++.
L’engine è completamente open source, rilasciato sotto licenza MIT, e le applicazioni create con esso possono essere distribuite senza nessun vincolo.
Pro:
- completamente gratuito e open source (nessuna registrazione necessaria)
- leggerissimo e utilizzabile anche su pc “vecchiotti”
- interfaccia semplice e abbastanza intuitiva
- documentazione integrata nell’engine
- community molto attiva
- GDScript facile da utilizzare e possibilità di usare altri linguaggi
Cons:
- documentazione un po’ scarna
- niente asset store
- feature abbastanza basilari, che possono rendere difficile lo sviluppo di giochi complicati
- non è ancora utilizzato da molte aziende
Altri engine gratuiti
Unreal engine, Unity e Godot sono solo tre dei potenziali candidati nella scelta dell’engine da usare. Altri possibili candidati gratuiti sono Source di Valve, Cryengine di Crytek e Lumberyard di Amazon, quest’ultimo interessante per le integrazioni con AWS e Twitch. Degna di menzione anche Pico-8, una console 16-bit “fantasy” che permette agli utenti di creare giochi in Lua e condividerli con gli altri utenti. Per chi non lo sapesse, la prima versione di Celeste è stata creata su questa console e ha dato il via allo sviluppo del gioco di successo.
Framework e Librerie
Ma se volessimo evitare le GUI complicate e rimanere nella sicurezza del nostro IDE preferito, che possibilità abbiamo? Elenchiamo qua alcune librerie su cui possiamo costruire il nostro gioco senza dover partire da zero.
A seconda del linguaggio che vogliamo utilizzare, troviamo librerie che ci forniscono una base documentata da dove partire, spesso con esempi e demo create da altri utenti; un vantaggio ulteriore nel prendere questa strada è che possiamo accedere facilmente ai sorgenti e, se necessario, aggiungere con non troppa fatica le funzionalità che ci servono.
Alcune di queste librerie sono Pygames, Arcade e Pyxel per Python, Pixel e Ebiten per Go (guarda il nostro video su come sviluppare videogiochi in Go), Libgdx, FXGL e Lwjgl per Java, Phaser html5. Anche Rust sta iniziando a raccogliere i propri frutti nel tema, se siete interessati consigliamo di seguire https://gamedev.rs.
Tools di contorno
Bene, abbiamo un primo prototipo di gioco e un’implementazione del game loop, ora vorremmo integrare grafica e musica per rendere il gioco più accattivante, visto che non siamo particolarmente affezionati al rettangolo verde che stiamo usando come eroe nel nostro platformer.
- 3D: Blender, usato da moltissimi sviluppatori; si trovano facilmente tutorial su come fare i primi passi e raggiungere risultati discreti
- 2D: Krita, o in alternativa Asesprite (quest’ultimo gratuito se compilato dal codice sorgente)
- musica: GarageBand (solo su macOS/IoS), Musescore se sai leggere gli spartiti musicali o in alternativa LMMS
- gestione: Trello
Risorse utili
Visto che non tutti abbiamo la vocazione artistica per il disegno o la musica, o semplicemente non abbiamo il tempo da dedicargli, ci sono delle alternative gratuite al fare tutto in casa?
OpenGameArt e Itchio sono un ottimo punto di partenza per cercare qualcosa di adatto al nostro prodotto, inoltre sono piattaforme utili per entrare in contatto con altri creator e magari trovare qualcuno con cui collaborare!
Conclusione
A questo punto hai una panoramica generale sugli strumenti accessibili per creare il vostro gioco da zero, speriamo quest’articolo ti abbia incuriosito e ti abbia ispirato ad addentrarti in questo fantastico mondo.
Quali saranno i tuoi primi passi? Partirai con Unity seguendo qualche tutorial o ti butterai a testa bassa sul codice appoggiandoti a Pygames?
Vuoi lavorare in Develer?
Guarda chi stiamo cercando