El problema central, por lo que puedo ver, no es C ++ o Unity3D, sino que necesita una solución de alto nivel o una solución de bajo nivel .
Una solución de bajo nivel es aquella que se ensucia con los procesos de entrega de entrada, administración de memoria o carga de los modelos. Una solución de alto nivel es que obtienes un paquete ordenado, como Unity3D.
Para mí, si usar Unity3D (o cualquier otro motor de juego) o C ++ depende de los objetivos de su juego y proyecto.
Use Unity3D, si el tiempo de desarrollo tiene que ser rápido y / o su juego no requiere un alto rendimiento o no está en el extremo superior del rendimiento gráfico / computacional. Si desea concentrarse en el juego y las herramientas predeterminadas que proporciona Unity3D están bien, puede considerar usar Unity3D
C ++ con otras bibliotecas, si tiene más tiempo de desarrollo, el juego requiere más potencia computacional / gráfica, o emplea alguna tecnología que Unity3D no puede incorporar.
Lo bueno de Unity3D es que todavía emplea lenguajes de script que reflejan el desarrollo del mundo real (C # o JavaScript). Los conceptos de ingeniería de software y OOP que aprende (Singletons, fachada, máquinas de estado, decoradores, composición) se pueden aplicar en Unity3D. Ayuda a cuidar los procesos de corte de cookies, como la gestión de recursos, el gráfico de escenas, la carga de modelos, el renderizado, el almacenamiento de escenas, etc. Aún mejor, si hay una funcionalidad que necesita que Unity3D no proporciona, puede hacerlo Codificación DLL.
¿Dónde deja eso a C ++? C ++ es un lenguaje, y hay muchos conceptos de programación que puede hacer en C ++ que puede hacer en Unity3D, sin administración de memoria o quizás plantillas (con Unity 3.2, las especificaciones del lenguaje han mejorado para cubrir los cierres, por ejemplo).
Entonces, como he dicho, no es realmente C ++ vs. Unity3D. Es más de "C ++ plus bibliotecas / SDK o rodar su propio motor" frente a Unity3D. Depende de tus metas y objetivos. Para juegos de gama alta o juegos en los que necesita control sobre la canalización o entrada de renderizado, es posible que desee usar C ++ más un motor que le permite meterse bajo el capó. Si no, voy con Unity3D como mi opción predeterminada para los juegos 3D.
Sin embargo, el conocimiento con Unity3d no está bajo la experiencia del capó, pero es un buen lugar para comenzar a aprender el proceso general de desarrollo de juegos. Por ejemplo, probablemente necesitará un semestre de estudio para escribir un renderizador y cargar un modelo en OpenGL, además de una escena básica y una entrada. Lo haces en Unity3D en menos de un día.