Nous avons un grand projet utilisant Unity à l’école. Nous sommes 12 à y travailler. Mon professeur semble convaincu que c'est un outil important pour enseigner aux élèves, car il leur permet de regarder de haut en bas.
Je peux comprendre son point de vue et je me demande si l’unité est un moteur aussi important dans les sociétés de développement de jeux. Y a-t-il beaucoup d'entreprises qui l'utilisent parce qu'elles ne peuvent pas se permettre d'utiliser autre chose? Il parle comme si Unity était un acteur important dans la création de jeux vidéo, mais je ne vois que cela convient aux petites sociétés de jeux vidéo indépendantes qui souhaitent créer un jeu aussi rapidement que possible.
Pensez-vous que l'unité a une telle importance dans l'industrie? Cela met-il en danger la valeur des compétences en C ++?
Ce n’est pas que je n’aime pas Unity, c’est juste que je n’apprends rien avec elle, je préfère réaliser de petites étapes avec Ogre ou SFML.
Nous avons aussi des exercices de pratique en C ++, mais ce ne sont que des exercices théoriques, rien de plus.
Réponses:
L'unité est une solution parfaitement valable dans ce contexte. Imaginez une seconde avec 12 personnes, dont la plupart sont encore en train d'apprendre le C ++, en train d'écrire une application de jeu grande et complexe. Dans le temps passé à déboguer seul, vous aurez probablement pu écrire un autre jeu dans Unity.
Je ne dis pas que savoir utiliser le C ++ n'est pas important - cela l'est surtout si vous envisagez de rejoindre le secteur du jeu «traditionnel». Mais dans ce cas, votre instructeur a peut-être raison. Utilisez ce projet comme une expérience d'apprentissage de la conception d'un jeu, et amusez-vous à le faire. Dans le processus, essayez de perfectionner vos compétences en C ++ à l'aide d'exercices ou même aller jusqu'à écrire de petits jeux entre-temps en utilisant SFML ou un autre framework de base.
Lorsque tout sera terminé, vous aurez beaucoup appris, deviendrez probablement un meilleur programmeur, et votre prochain projet pourra être traité en C ++ avec beaucoup plus de confiance.
la source
L'unité gagne en popularité dans l'industrie, principalement dans les petites entreprises. Cependant, c'est un excellent environnement d'enseignement. C'est un outil pédagogique important, mais pas particulièrement répandu parmi les entreprises traditionnelles. C'est bon que vous ne le préfériez pas.
Permettez-moi de noter quelque chose ici, cependant, car je vois souvent une confusion parmi les étudiants en programmation. Les "compétences en C ++" ne sont pas très utiles à long terme. Ce que vous devriez rechercher, ce sont des "compétences en programmation" et des "compétences en conception". Si vous comprenez les concepts de langage de programmation et la manière dont un logiciel est assemblé, le langage n'a pas vraiment d'importance. Je ne me considère pas comme un développeur extraordinaire, mais je peux choisir un nouveau langage et produire du code utile en un jour ou deux, car je comprends les principes fondamentaux.
Learning Unity vous rendra meilleur en C ++.
la source
Oui, mais «se permettre» est tellement plus que de simples montants en dollars.
Oui, les fonctionnalités proposées par Unity Pro au prix qu’elles facturent sont ridicules, en particulier si l’on tient compte du fait qu’il s’agit de licences en sièges plutôt que de licences par titre.
Mais en plus de cela, c'est un outil vraiment facile à utiliser. Vous ne passez pas autant de temps à former des artistes et des concepteurs à l'utilisation du pipeline d'art. Il est facile de dire "il suffit de faire glisser vos textures et vos modèles et ils sont bons pour aller.
En plus de cela, c'est l'un des rares outils qui vous permettent de faire de la 3D dans un navigateur avec n'importe quel type de régularité. Ils supportent à peu près toutes les plateformes de shader, de la fonction fixe à la DX9 +, en passant par Mac et Windows. Cette technologie à elle seule est inestimable si vous souhaitez cibler le marché croissant des "jeux sur navigateur".
Du point de vue de la programmation, ce que vous obtenez avec Unity, c'est une solide connaissance de la conception des composants (par rapport au roulement de votre propre moteur C ++, qui est généralement trop lourd du point de vue de l'héritage), ainsi qu'un environnement très rapide et visuel à essayer. code de jeu. Espérons que vous apprendrez les bonnes pratiques de conception en utilisant Unity, que vous pourrez prendre en charge pour les futurs moteurs C ++.
Bien sûr, c'est bien d'avoir une préférence d'une langue par rapport à une autre. Personnellement, je préfère C # au C ++. Mais la langue que vous utilisez est réellement déterminée par les exigences du projet plus que toute autre chose. Les développeurs ne peuvent pas vraiment se permettre de devenir des fanboys car vous ne voulez pas vous isoler d'un marché, car vous n'aimez pas les outils ou la langue pour une raison ou une autre.
En outre, une fois que vous avez réellement appris une deuxième langue, vous constaterez qu'il s'agit principalement de saisir de nouvelles syntaxes et de nouveaux paradigmes, et qu'il n'est pas très difficile en général d'ajouter de nouveaux outils à votre ceinture d'outils. Oui, vous devriez apprendre et comprendre le C ++, mais à un haut niveau, vous devez d'abord comprendre un bon design.
la source
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.
la source
Non, Unity3D ne met en aucun cas en danger les compétences C ++. En fait, connaître le C ++ est bien plus important pour un programmeur de jeux.
Unity3D est un outil vraiment formidable pour le développement de jeux. J'aime beaucoup cela moi-même et je le recommanderais pour presque tous les matchs, en particulier pour les petites équipes. Mais Unity3D lui-même est écrit en C ++; et vous devez connaître le C ++ (et aussi un tas d'autres éléments de bas niveau) pour vraiment comprendre son fonctionnement.
Même si vous utilisiez Unity3D, seules les compétences en C ++ et une compréhension élémentaire des principes et des algorithmes impliqués vous permettraient de l'utiliser pleinement. Cela s'applique également aux autres moteurs de jeu.
Et pour faire un très bon travail, tirer le meilleur parti des performances de la plate-forme de votre choix et englober le plus grand nombre possible d’effets et d’algorithmes de pointe, vous ne pouvez utiliser que le C / C ++. Avec des morceaux d'assembleur, probablement.
la source
Autant que je sache, cela dépend de votre plate-forme cible, les jeux AAA et les jeux sur console (XBOX, Wii, etc.) seront généralement en C ++ pour obtenir des performances optimales. Toutefois, si vous écrivez un jeu basé sur un navigateur utilisé.
Cependant, en ce qui concerne votre question, je pense que cela a simplement à voir avec des outils comme Unity vous donne un grand cadre normalisé dans lequel travailler, ce qui, dans un projet de six mois, peut faire la différence entre un prototype à moitié cuit et un jeu bien étoffé.
la source
Je suis allé au programme de maîtrise en infographie et technologies de jeu de l'Université de Pennsylvanie, où nous avons réalisé tous nos projets aux niveaux les plus bas, avec des projets en C ++, OpenGL, CUDA, etc. Nos projets comprenaient l'animation basée sur la physique, l'animation de personnages et IK, représentant diverses formes de courbes de Bézier ... vous savez, des éléments de base qui exploitent une expertise en programmation, en algèbre linéaire et en calcul.
Ensuite, j'ai téléchargé Unity et constaté que tout ce pour quoi j'ai travaillé était créé dans cette suite gratuite que tout le monde pouvait utiliser.
Étais-je agacé par cela? Un peu, certes, mais j’ai trouvé qu’avoir cette compréhension de l’école me rend encore plus dangereux lorsque j’utilise des outils comme Unity. Je travaille actuellement dans des jeux, où nous introduisons des jeux du concept au marché en moins d'un an, et je suis toujours le type idéal pour "ce genre de choses pour les mathématiques". Mon conseil est de suivre les mouvements; vous serez absolument inestimable lorsque vous entrerez dans l'industrie.
la source
Je vais peut-être tarder à répondre, mais cela aidera certaines personnes ayant cette confusion.
Initialement, je suis un programmeur c ++ qui détestait utiliser des moteurs tiers (par exemple, unit), car je ne pense pas qu'il y ait beaucoup de processus d'apprentissage impliqué en termes de programmation de bas niveau.
Après avoir essayé l'unité, je suis tombé sur les choses suivantes qui sont essentielles pour un développeur de jeux. Ici, je n'énumère pas spécifiquement l'unité, mais les avantages d'avancer dans la perspective de haut niveau.
Vous trouverez ci-dessus certaines des raisons pour lesquelles vous choisissez un moteur de haut niveau. Mais en même temps, vous ne devriez pas arrêter d’apprendre le C ++ car c’est le langage le plus utile et le plus utile pour un développeur de jeu parfait.
Commencez par comprendre la visualisation au plus haut niveau et réalisez quelques prototypes rapides avec Unity et utilisez cette expérience pour concevoir un bon jeu en c ++.
Bientôt, je serai de retour en c ++ car j'avais acquis une bonne expérience au plus haut niveau avec l'unité :)
Bonne chance!
la source
C4 Engine est une bonne alternative pour apprendre la programmation de jeux avec C ++
Il existe également une licence académique http://www.terathon.com/c4engine/licensing.php
la source