Unity Vs. Unreal

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.

L’industria dei videogiochi in continua crescita e giganti della tecnologia come Google, Meta e Apple stanno pianificando strategie per entrare nel settore dei videogiochi.
Ma al momento
Unreal Unity sono i padroni indiscussi della scena nel mondo degli engines.

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. Data di rilascio: Unreal Engine ha debuttato nel 1998, mentre la prima versione di Unity è stata annunciata e rilasciata nel 2005
  2. Linguaggi : Unreal Engine utilizza C ++ mentre Unity utilizza C #, che è spesso 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.
  3. Comunità:  entrambi i motori hanno una vasta comunità di utenti attivi, ma Unity attualmente rappresenta il 50% della quota di mercato rispetto al 13% di Unreal.
  4. 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.
  5. Grafica: entrambi gli strumenti producono una grafica eccellente, Unreal Engine è già pronto per una grafica 3D di nuova generazione e di altissima qualità.
  6. Anche Unreal può essere utilizzato per lo sviluppo di giochi 2D, ma Epic Games non dà la priorità a questo elemento tanto quanto a Unity. Se stai progettando contenuti 2D, Unity potrebbe essere quello che fa per te. Ha un’interfaccia utente più semplice e strumenti 2D ben sviluppati.
  7. Prezzi: Unreal Engine è completamente gratuito, ma esiste un sistema di royalty per ricavi superiori a una certa soglia. Anche Unity è gratuito ma offre una versione a pagamento per studi professionali ( in base al numero di licenze ).
 

Punti di forza

Unity fa del suo punto di forza la versatilità e i suoi intuitivi strumenti di sviluppo che lo rendono adatto a qualsiasi cosa ci frulli in testa. Per esempio, nel corso degli anni, in Unity ho realizzato anche applicazioni non ludiche, gestionali e architettoniche oltre che ovviamente, videogiochi per mobile e PC, 3D e 2D, VR e AR. Imparando ad usare Unity, potrete rispondere alle più disparate richieste di lavoro in campo ludico.

Unreal è invece più orientato a tre tipi di giochi, FPSterza persona, giochi di auto. Soprattutto per PC/Consoles di alto livello.
Se il 
vostro target è orientato su questi generi, troverete un percorso già stabilito per tirare fuori qualcosa di buono in poco tempo con UnrealMa pur essendo meno predisposto ad altri generi, non vuol dire che con Unreal non si possa fare anche altro, con qualche sforzo in più.
Per esempio, Unreal non dà molta importanza all’aspetto 2D, anche se non manca di strumentazione anche per questo genere, perché la vera forza di Unreal è la resa grafica in ambiente 3D.

Difficoltà di apprendimento

Con Unity avrete “carta bianca” binari meno predefiniti, rendendo tutto più libero, ma inevitabilmente più disorientante. Fortunatamente però l’interfaccia e gli strumenti di Unity risultano sin da subito molto ben disposti ed intuitivi.

In 
Unreal alcune cose saranno preimpostate e funzioneranno senza doversi per forza porre domande tipo: “perchè funziona e come funziona”.

In Unity saprete sempre perché qualcosa si comporta in un determinato modo e potrete sin da subito spulciare e modificare ogni singolo elemento.

Fondamentalmente, in Unity avrete sin da subito il pieno controllo dell’ambiente di lavoro e solo dopo poche sessione avrete ben chiara la filosofia che sta dietro alle sue meccaniche.

Con Unity dovrete imparare il C# per tirare fuori qualcosa di buono. Pur esistendo svariati tools per la programmazione visuale (visual scripting), se il vostro obbiettivo è quello di sfruttare appieno Unity, non c’è altra strada che imparare il C#.

Con Unreal invece dovrete imparare il C++ o le Blueprints, con cui si possono creare cose basilari.

Anche in Unity potrete usare strumenti di visual scripting del tutto simili alle Blueprintsdi Unreal, ma prima o poi dovrete imparare un linguaggio di programmazione, che usiate Unreal o Unity .

Meccaniche Differenti

In Unreal avrete a disposizione moltissimi oggetti preimpostati per l’uso più comune per cui sono stati pensati.
Molte cose in Unreal avvengono automaticamente, come se i programmatori di Epic abbiano previsto che lo scopo per cui state usando l’engine non si discosterà troppo dalle funzionalità più usate in questo ambito.

Mentre in Unity, salvo un download di assets e plug-in esterni, vi troverete di fronte ad un blocco di marmo vergine e uno scalpello in mano.
Fortunatamente l’interfaccia e i concetti alla base di Unity sono molto più intuitivi rispetto a quelli di Unreal, il che rende la curva di apprendimento di Unity decisamente meno ripida rispetto a quella del motore della Epic.

Un’altra delle tra le tante differenze tra i due engines sta per esempio nella gestione delle risorse, quali assets grafici, modelli, textures, suoni ecc...
Mentre in Unity lavorerete sempre con i files originali (FBX, PNG ecc…), in Unreal , nel momento in cui importerete una qualsiasi risorsa, essa verrà trasformata in uasset, ovvero un tipo di file di utilizzo esclusivo dell’engine. Mentre in Unity potrete modificare i files originali per vedere subito le modifiche nell’engine, in Unreal dovrete reimportare i files per creare/aggiornare la rispettiva risorsa uasset. In Unreal sarà dunque possibile anche eliminare il file originale perché esso sarà “replicato” all’interno della risorsa uasset nel momento in cui verrà importata nell’engine.

Una grossa mancanza in Unreal è per esempio la possibilità di gestire i Layers di rendering di una telecamera, opzione utile in moltissime occasioni e che in Unity userete spessissimo.
In 
Unity potrete impostare una telecamera in modo che prenda in considerazione e renderizzi sono determinati layers specifici, così da poter ignorare tutto il resto.
Per raggiungere lo stesso risultato 
Unreal dovrete usare stratagemmi e meccaniche alternative più articolate perché questa è un’opzione non prevista nativamente. In Unreal esiste infatti la possibilità di lavorare con l’opzione “ShowOnlyList” dove poter inserire una serie di oggetti posti in una lista da non renderizzare su quella telecamera . Ma come capirete avere una lista di oggetti non è una soluzione utile a meno che non conosciate a priori quali oggetti della scena non dovranno essere renderizzati. Quella dei Layer è una delle features più richieste dagli utenti Unreal che ancora non è stata ascoltata dalla Epic perché implicherebbe un cambio radicale della filosofia di renderig dell’engine.

Altra differenza sostanziale che coinvolge soprattutto i level designer, sta nel sistema di snapping degli oggetti nel mondo. O più in generale, il sistema per muovere e gestire gli oggetti all’interno dell’editor.
Lo snapping permette di allineare e affiancare gli oggetti in modo preciso, senza sovrapposizioni che potrebbero creare effetti flickering e senza spazi tra di essi. Esso è uno strumento essenziale per la costruzione dei livelli in modo preciso.
Se avete padronanza dell’editor di Unity saprete che in suo sistema di snapping è davvero funzionale e intuitivo, semplicemente premendo ALT+V avrete la possibilità di utilizzare tutti i vertici dell’oggetto come punto di snapping.  Al contrario, Unreal tenta di utilizzare un sistema molto più macchinoso che alla lunga risulta molto frustrante. Unreal costringe lo sviluppatore ad imparare diverse combinazioni di tasti tastiera/mouse, per muovere ogni volta il punto focale (pivot) dell’oggetto, allinearlo prima sul vertice giusto e poi effettuare lo snapping. Anche questo sistema è legato alla filosofia di base di Unreal che di default fa uso dei tasti del mouse per navigare con la telecamera nell’editor invece di permettere lo spostamento degli oggetti. In Unreal, per muovere/ruotare gli oggetti nell’editor si dovrà utilizzare il suo punto pivot.

Se vi troverete di fronte all’editor di Unreal, non vedrete la finestra divisa in due macro sessioni come in Unity. In Unity avrete infatti due macro pannelli, Scene e Game, che hanno scopi differenti, il primo per svolgere il lavoro di editing e il secondo per visualizzare in tempo reale la resa effettiva del gioco anche durante le sessioni di sviluppo. In Unreal invece si svolge tutto in una sola finestra, e si passerà alla parte Game nel momento in cui testerete la scena. In Unity sarà comunque possibile chiudere la finestra Game e lavorare similarmente come nell’editor di Unreal.

Documentazione e Community

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.

Se fai una domanda nel forum di Unity, difficilmente non riceverai risposta, cosa che invece capita frequentemente per Unreal .
Per Unreal 5 ci sono ancora poche guide dettagliate per ogni argomento. Ne esistono molte di più per Unreal 4 che comunque 
poco differisce dal successore.

Rispetto alla guida ufficiale di Unity, la guida ufficiale di Unreal è davvero molto sintetica ed essenziale.
Se ne deduce che la Epic abbia avuto meno attenzione alle necessità degli sviluppatori rispetto a Unity Team.


Resa del prodotto finale

L’illuminazione di Unreal è sempre migliore rispetto a Unity “liscio”.
In Unity, per ottenere risultati paragonabili a Unreal, dovrete imparare a gestire post effects e assets grafici aggiuntivi in HDRP, mentre in Unreal è già tutto preimpostato per avere una resa grafica standardizzata di ottima fattura.
Fondamentalmente, l’aspetto esteriore di un gioco 3D creato con Unreal (soprattutto Unreal 5), sarà sempre migliore rispetto a quella raggiungibile con Unity.

Le nuove features di Unreal 5 (come Nanite) sono un bel passo in avanti per la resa grafica, ma l’attuale versione 5.1 dell’engine è ancora molto instabile… (ho avuto più crash in una settimana di uso in Unreal che in vent’anni di uso in Unity) e anche a distanza di mesi dalla sua release, sul forum di Unreal troverete molti veterani dell’engine che vi consiglieranno di lavorare con la versione 4 e aspettare che la versione 5 sia più stabile (questo ancora ad inizio 2024).

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. Purtroppo però, nella versione 5.1, persistono alcuni bug anche in questo sistema, tipo la richiesta perpetua per il salvataggio delle scene temporanee.

Rispetto a UnityUnreal necessita di macchine più potenti per essere usato, soprattutto in progetti medio/grandi. Mentre è possibile sviluppare in Unity anche su un Notebook di media potenza, sviluppare in Unreal senza avere un buon computer con almeno 32Gbo 64Gb di Ram, diventa proibitivo dopo pochi import di oggetti e textures.


C’è una frase di uno degli sviluppatori più produttivi del mondo Indie Steve Gaynor che potrebbe riassumere in due righe le filosofie dei due engines:

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

Questo per sottolineare che una persona poco incline a farsi domande sulle difficoltà da affrontare durante le dinamiche dello sviluppo di un videogioco, come può essere un normale videogiocatore, si lascia spesso attrarre dal nome Unreal Engine perché di norma un prodotto sviluppato in Unreal è accompagnato sempre da una “grafica spaccamascella” e al passo con i tempi (spesso è stato proprio l’engine Epic a dettare i parametri per l’avvento di nuove tecnologie che hanno determinato un salto di qualità generazionale sotto l’aspetto grafico).

Riassumendo:

Unreal 5 luccica parecchio.
Agli occhi di chi non si pone troppe domande sulle difficoltà dello sviluppoUnreal risulta molto più attraente rispetto a Unity. L’engine della Epic fa leva su una resa grafica eccezionale grazie alle ultime tecnologie a disposizione che però necessitano di macchine potenti per poter essere sviluppate su grandi progetti.
Unreal è davvero imbattibile sulla resa grafica di landscapes, roccie e ambienti aperti.

Unity 3D fa invece leva su una versatilità senza frontiere ma senza fornire le stesse potenzialità estetiche di default, destinando però molta attenzione alla funzionalità degli strumenti per lo sviluppo, proponendo allo sviluppatore un controllo più minuzioso e intuitivo dell’editor.
 
In definitiva, Unreal irrompe sin dalla sua prima esecuzione con la sua eccezionale qualità grafica ed è anni avanti rispetto a Unity sotto l’aspetto estetico, ma indietro in quasi tutto il resto.

Se il vostro team è ben consolidato, composto da tanti professionisti del settore con a disposizione potenti work-station e la vostra ambizione è quella di creare un gioco AAA per PC/Consoles, Unreal può fare al caso vostro.
Se invece non possedete computer molto al di sopra alla media e la vostra ambizione è lavorare
 su giochi PC/Consoles Indie o per dispositivi mobili, la scelta migliore è sicuramente Unity.
 
Reallity 3D Engine?
Un termine di fantasia che è stato per qualche periodo un vero sogno per ogni sviluppatore.
Ad inizio del 2023 correvano voci del possibile acquisto da parte di Epic dell’engine di Unity.
La fusione dei due engines avrebbe portato la funzionalità di Unity sul sistema di Unreal, o viceversa, potrebbe portare Unity ad avere le stesse tecnologie di rendereing che oggi contraddistinguono Unreal 5.
Ci troveremmo di fronte all’engine definitivo, i
l Santo Graal di ogni sviluppatore!
Purtroppo però si è trattato solo di una voce diffusa da qualche buontempone che aveva voglia di giocare con i cuori di noi poveri sviluppatori. 
 
 
 4