Wie ich sehen kann, ist das Kernproblem nicht C ++ oder Unity3D, sondern Sie benötigen eine Lösung auf hoher oder niedriger Ebene .
Eine einfache Lösung ist eine, bei der Sie Probleme mit der Eingabe, der Speicherverwaltung oder dem Laden der Modelle haben. Eine High-Level-Lösung ist, dass Sie ein ordentliches Paket erhalten, wie Unity3D.
Für mich hängt es von den Zielen Ihres Spiels und Projekts ab, ob Sie Unity3D (oder eine andere Spiele-Engine) oder C ++ verwenden.
Verwenden Sie Unity3D, wenn die Entwicklungszeit kurz sein muss und / oder wenn Ihr Spiel nicht leistungsintensiv ist oder nicht im oberen Bereich der grafischen / rechnerischen Leistung liegt. Wenn Sie sich auf das Gameplay konzentrieren möchten und die von Unity3D bereitgestellten Standardwerkzeuge in Ordnung sind, sollten Sie Unity3D in Betracht ziehen
C ++ mit anderen Bibliotheken: Wenn Sie längere Entwicklungszeiten haben, erfordert das Spiel mehr Rechenleistung / Grafikleistung oder verwendet eine Technologie, die Unity3D nicht integrieren kann.
Das Gute an Unity3D ist, dass immer noch Skriptsprachen verwendet werden, die der tatsächlichen Entwicklung (C # oder JavaScript) entsprechen. Die OOP- und Software-Engineering-Konzepte, die Sie lernen (Singletons, Fassade, Zustandsautomaten, Dekorateure, Komposition), können in Unity3D angewendet werden. Es hilft dabei, sich um die Cookie-Cutter-Prozesse wie Ressourcenverwaltung, Szenendiagramm, Laden, Rendern, Speichern von Szenen usw. zu kümmern. Wenn Sie eine Funktion benötigen, die Unity3D nicht bietet, können Sie dies sogar tun DLL-Codierung.
Wo bleibt dann C ++? C ++ ist eine Sprache, und es gibt viele Programmierkonzepte, die Sie in C ++ in Unity3D, ohne Speicherverwaltung oder vielleicht in Vorlagen ausführen können (Mit Unity 3.2 wurden die Sprachspezifikationen verbessert, um z. B. Schließungen abzudecken).
Wie ich bereits sagte, ist es nicht wirklich C ++ gegen Unity3D. Es handelt sich eher um "C ++ plus-Bibliotheken / SDK oder Roll Your Own Engine" im Vergleich zu Unity3D. Es hängt von Ihren Zielen ab. Für High-End-Spiele oder Spiele, bei denen Sie die Kontrolle über die Rendering-Pipeline oder -Eingabe benötigen, möchten Sie möglicherweise C ++ und eine Engine verwenden, mit der Sie unter der Haube herumspielen können. Wenn nicht, verwende ich Unity3D als Standard für 3D-Spiele.
Kenntnisse in Unity3d sind jedoch nicht unbedingt erforderlich, aber es ist ein guter Ausgangspunkt, um den gesamten Prozess der Spieleentwicklung zu erlernen. Zum Beispiel werden Sie wahrscheinlich ein Semester brauchen, um einen Renderer zu schreiben und ein Modell in OpenGL zu laden, sowie einen grundlegenden Szenegraphen und eine Eingabe. Mit Unity3D ist dies in weniger als einem Tag erledigt.