Il problema principale, da quello che posso vedere, non è C ++ o Unity3D, ma piuttosto è necessaria una soluzione di alto livello o una soluzione di basso livello .
Una soluzione di basso livello è quella che ti sporca con i processi di gestione dell'input, gestione della memoria o caricamento dei modelli. Una soluzione di alto livello è quella di ottenere un pacchetto accurato, come Unity3D.
Per me, se usare Unity3D (o qualsiasi altro motore di gioco) o C ++ dipende dagli obiettivi del tuo gioco e progetto.
Usa Unity3D, se il tempo di sviluppo deve essere rapido e / o il tuo gioco non è ad alte prestazioni o non è di fascia alta delle prestazioni grafiche / computazionali. Se desideri concentrarti sul gioco e gli strumenti predefiniti forniti da Unity3D sono a posto, ti consigliamo di prendere in considerazione l'utilizzo di Unity3D
C ++ con altre librerie, se hai tempi di sviluppo più lunghi, il gioco richiede più potenza computazionale / grafica o utilizza una tecnologia che Unity3D non può incorporare.
L'aspetto positivo di Unity3D è che utilizza ancora linguaggi di scripting che rispecchiano lo sviluppo del mondo reale (C # o JavaScript). I concetti di OOP e ingegneria del software appresi (Singleton, facciata, macchine statali, decoratori, composizione) possono essere applicati in Unity3D. Aiuta a prendersi cura dei processi di cookie cutter come la gestione delle risorse, il grafico della scena, il caricamento del modello, il rendering, il salvataggio delle scene e così via. Ancora meglio, se c'è una funzionalità di cui non hai bisogno da Unity3D, puoi farlo Codifica DLL.
Da dove viene questo C ++? C ++ è un linguaggio e ci sono molti concetti di programmazione che fai in C ++ che puoi fare in Unity3D, senza gestione della memoria o forse modelli (Con Unity 3.2, le specifiche del linguaggio sono migliorate per coprire le chiusure, per esempio).
Quindi, come ho affermato, non è proprio C ++ vs. Unity3D. È più di "C ++ plus librerie / SDK o avvia il tuo motore" rispetto a Unity3D. Dipende dai tuoi obbiettivi. Per giochi di fascia alta o giochi in cui è necessario il controllo della pipeline di rendering o dell'input, è possibile utilizzare C ++ oltre a un motore che consente di pasticciare sotto il cofano. In caso contrario, vado con Unity3D come la mia scelta predefinita per i giochi 3D.
Tuttavia, la conoscenza di Unity3d non è soggetta all'esperienza, ma è un buon punto di partenza per apprendere il processo generale di sviluppo dei giochi. Ad esempio, probabilmente avrai bisogno di un semestre di studio per scrivere un renderer e caricare un modello in OpenGL, oltre a uno scenario e un input di base. Puoi farlo in Unity3D in meno di un giorno.