Je préfère le C / C ++ à Unity et à d’autres outils: est-ce un tel inconvénient pour un développeur de jeux? [fermé]

35

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.

jokoon
la source
9
Le point de C ++ et OOP est la réutilisation d'objet. L'unité est un excellent exemple de cela et de la portabilité entre plates-formes. Ils offrent tous les outils dont vous avez besoin pour lancer un jeu sur Xbox, iPhone ou Wii. Êtes-vous sérieusement en train de me dire que vous préféreriez réécrire tout cela en C ++ à partir de rien?
Stephen Furlani
2
Absolument pas, ce n'est pas ce que je veux dire. Je dis simplement que je n'aime pas les langages collectés avec lesquels il est livré, mais aussi le fait que vous ne pouvez pas changer le code car il est propriétaire: vous ne pouvez pas le modifier autant que vous le pouvez avec un autre moteur existant. . Votre argument est valable, mais si je vous suis, les entreprises peuvent également réutiliser leur moteur précédent au lieu de passer simplement à Unity. Avec Unity, vous vous en tenez à quelque chose que vous ne pouvez pas vraiment changer, c'est toujours le principal inconvénient pour moi lorsque je pense à de tels outils: un moteur propriétaire n'a pas ce problème.
jokoon
2
Eh bien, vous pouvez modifier Unity en supposant que vous obteniez une licence source (ce qui coûte cher, comme la plupart des licences source professionnelles). De plus, il est mis à jour assez souvent, de sorte qu'il n'est pas vraiment statique en termes de jeu de fonctionnalités.
Tetrad
Ceci est fondamentalement une question "quelle technologie utiliser". En outre, il est davantage axé sur la discussion / l'opinion. Malheureusement, je ne peux pas voter pour fermer une deuxième fois ...
bummzack

Réponses:

34

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.

James
la source
2
Il est intéressant de noter que certaines écoles enseignent uniquement le C ++ et attendent des étudiants qu'ils construisent un moteur de jeu complet et un jeu à partir de rien, même s'ils sont encore en train d'apprendre le C ++. Bien sûr, pratiquer une compétence, c’est la façon dont on l’apprend (pas de conférences en classe ni de petits projets de devoirs, mais par projet plus important, d’une durée d’un semestre ou d’un an), c’est pourquoi les écoles produisent des programmeurs de premier plan. Les programmeurs capables de saisir très rapidement des outils comme Unity ou tout autre moteur. Il est préférable de forcer les étudiants à apprendre les choses difficiles, car les choses faciles ne seront plus un problème par la suite.
Sean Middleditch
Le développement de jeux ne consiste pas tous en une programmation, et utiliser Unity ne signifie pas nécessairement "éviter les choses difficiles". Il met simplement l'accent sur différentes choses difficiles que la mise en œuvre à partir de zéro. A donné la conception plutôt que la programmation. Si un jeu était mis en œuvre à partir de zéro, je m'attendrais à un "art de programmeur" beaucoup plus primitif et à l'absence de personnage ou d'intrigue.
wrosecrans
43

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 ++.

Gregory Avery-Weir
la source
Gameforge et BigPoint sont des sociétés leaders sur le marché mondial. Elles utilisent Unity :)
daemonfire300
1
+1 pour être une très bonne réponse. Apprendre - le moteur de jeu est une chose très très importante pour les écoles car 99% du temps, vous ne le ferez pas à partir de zéro. Etre capable de plonger dans un moteur existant et de reconnaître ses parties, de discerner le flux de données et tout ce qui est essentiel. Comme mentionné ci-dessus, le langage n'a pas d'importance même s'il est C / C ++ 99% du temps, mais être capable de comprendre le moteur, ou plus généralement le code de quelqu'un d'autre, est une compétence inestimable dans n'importe quel domaine de programmation ... en particulier le temps critique mot de stress élevé qui est des jeux vidéo :)
James
1
Je suis en quelque sorte en désaccord avec cette réponse. Pour moi, il y a des différences entre les scripteurs et les programmeurs. Les développeurs de Unity sont des programmeurs, les utilisateurs de Unity sont des scripteurs. Le résultat est le même, ils font des jeux, mais à long terme, utiliser Unity peut être un problème. L’industrie du jeu est riche et permet maintenant des outils comme Unity, mais pour moi c’est parce que les ordinateurs sont plus rapides. Donc, vous pouvez lancer beaucoup de code, cela fonctionne: Unity est clairement conçu pour la vitesse de développement, ce que le marché aime bien à cause de l'argent, mais je ne pense pas que ce soit un réel avantage.
jokoon
14
jokoon: Quelle est la différence entre script et programmation? Un utilisateur expérimenté de Unity écrit des shaders, gère l'ordre de rendu et écrit du code AI. Les "scripts" Unity sont compilés et peuvent être étendus avec un codage de bas niveau honnête à déesse si vous le souhaitez. Et le bon codage Unity suit les mêmes principes que le bon codage non-Unity. Il n'y a pas de différence magique entre les deux paradigmes.
Gregory Avery-Weir
9

Y a-t-il beaucoup d'entreprises qui l'utilisent parce qu'elles ne peuvent pas se permettre d'utiliser autre chose?

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.

Tetrad
la source
Précision: voulez-vous dire que la licence d'Unity Pro en vaut la peine comparée à l'ancienne Unity? Votre commentaire était un peu peu clair pour moi.
Kyle C
7
Je n'ai pas utilisé la version gratuite, mais simplement que la licence de 1 500 dollars par siège coûte très cher par rapport aux autres licences de moteur commercial.
Tetrad
Pour le moment, la version gratuite ne pose aucun problème, il n’ya que des restrictions mineures.
XandruCea
9

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.

Extrakun
la source
ou travaillez avec Ogre3d!
jokoon
La dernière fois que j'ai travaillé avec Ogre3D, c'était il y a longtemps. Je pense qu’il faut plus de travail que Unity3D pour lancer un jeu, et c’est un bon compromis pour jeter un coup d’œil à la façon dont les choses se passent sous le capot.
Extrakun
+1 sur celui-ci. Vous ne pouvez pas préférer C / C ++ et Unity en tant que tels, car c’est une affaire de pommes et d’oranges. Ce que vous pouvez préférer, c’est l’idée de travailler au niveau de développement inférieur fourni par C / C ++, ou au développement de niveau supérieur permis par l’unité.
Tim Holt
8

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.

Ça ne fait rien
la source
C'est la réponse que j'attendais pour +1:]
Notabene
3

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é.

Elva
la source
3

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.

Mseltzer
la source
Vous pourriez (théoriquement) en obtenir un badge . :)
Cyclope
Il n’ya pas de nécrose ici, parce que les questions ne vieillissent pas et ne "meurent" pas comme dans les forums. :) Les réponses tardives sont toujours acceptables.
Doppelgreener
0

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.

  1. Comprendre comment concevoir à un niveau élevé est plus important que de se préoccuper des optimisations de bas niveau.
  2. Les moteurs dotés d’un système d’architecture Entity (architecture à base de composants) vous aideront à comprendre comment cette architecture sera utile.
  3. Vous connaîtrez les dernières technologies (au moins la terminologie) et serez au moins au courant des nouveautés en matière de graphisme. C’est la raison principale pour laquelle j’ai choisi d’essayer l’unité!
  4. Évitez de passer du temps sur différents outils d’importateur de ressources (bien sûr, j’aimerais toujours écrire mes propres importateurs 3D en c ++ car ce sera plus amusant pendant le temps libre).

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!

Ayyappa
la source