D'après ce que je peux voir, le principal problème n'est pas C ++ ou Unity3D, mais avez-vous besoin d'une solution de haut niveau ou d'une solution de bas niveau ?
Une solution de bas niveau est une solution qui vous souille par les processus de traitement des entrées, de gestion de la mémoire ou de chargement des modèles. Une solution de haut niveau consiste à obtenir un package soigné, comme Unity3D.
Selon moi, le choix d'utiliser Unity3D (ou tout autre moteur de jeu) ou C ++ dépend des objectifs de votre jeu et de votre projet.
Utilisez Unity3D si le temps de développement doit être rapide et / ou si votre jeu ne nécessite pas beaucoup de performances ou n’est pas à la pointe de la performance graphique / informatique. Si vous souhaitez vous concentrer sur le jeu et si les outils fournis par défaut par Unity3D sont corrects, vous pouvez envisager d’utiliser Unity3D.
C ++ avec d'autres bibliothèques, si vous avez un temps de développement plus long, le jeu nécessite plus de puissance de calcul / graphique, ou utilise une technologie qu'Unity3D ne peut pas intégrer.
L'avantage de Unity3D est qu'il utilise toujours des langages de script qui reflètent le développement du monde réel (C # ou JavaScript). Les concepts de POO et de génie logiciel que vous avez appris (singletons, façade, machines à états, décorateurs, composition) peuvent être appliqués dans Unity3D. Il est utile de prendre en charge les processus tels que la gestion des ressources, le graphe de scène, le chargement du modèle, le rendu, la sauvegarde des scènes, etc. Encore mieux, si vous avez besoin d'une fonctionnalité que Unity3D ne fournit pas, vous pouvez Codage DLL.
Où cela laisse-t-il C ++? C ++ est un langage, et de nombreux concepts de programmation sont disponibles dans Unity3D, sans gestion de mémoire ou même avec des modèles (avec Unity 3.2, les spécifications de langage ont été améliorées pour couvrir les fermetures, par exemple).
Donc, comme je l'ai dit, ce n'est pas vraiment C ++ contre Unity3D. Il s’agit plutôt de "bibliothèques C ++ plus / SDK ou de lancer votre propre moteur" par rapport à Unity3D. Cela dépend de vos buts et objectifs. Pour les jeux haut de gamme ou ceux pour lesquels vous avez besoin de contrôler le pipeline ou l'entrée de rendu, vous pouvez utiliser C ++ avec un moteur qui vous permet de faire des dégâts sous le capot. Sinon, je choisis Unity3D comme choix par défaut pour les jeux 3D.
Cependant, les connaissances avec Unity3d ne font pas partie de l'expérience acquise, mais c'est un bon point de départ pour apprendre le processus général de développement de jeux. Par exemple, vous aurez probablement besoin d’un semestre d’études pour écrire un moteur de rendu et charger un modèle dans OpenGL, ainsi qu’un scénario et des entrées de base. Cela se fait dans Unity3D en moins d’une journée.