Pourquoi un moteur comme Unity3D est-il mis en avant par rapport à une bibliothèque native comme OpenGL pour les débutants? [fermé]

25

Je ne suis qu'un débutant dans les jeux 3D, ma plateforme préférée est Android. J'ai posté une question dans un autre forum sur "Que dois-je utiliser: OpenGL ou Unity3d?" Ils ont tous mis l'accent sur Unity3D et sur l'utilisation de ses fonctionnalités et outils intégrés, que je devrais coder moi-même si je devais utiliser OpenGL. Mais quelqu'un dit que la plupart des jeux complexes nécessitent des moteurs personnalisés. Pourquoi devrais-je utiliser un moteur comme Unity3D sur OpenGL?

Aman Grover
la source
15
Deux mots: gratification instantanée. Vous pouvez faire quelque chose d '"utile" avec l'unité sans en savoir grand-chose, alors que le démarrage d'une application OpenGL nécessite pas mal de lignes de code et une compréhension d'un large éventail de concepts.
Jari Komppa
5
Peut-être que nous pouvons simplement l'expliquer dans ce fil et toutes les questions «quelle technologie dois-je utiliser» disparaissent à jamais. aussi je veux une licorne
jhocking
8
"la plupart des jeux complexes nécessitent des moteurs personnalisés" - en fait, un nombre étonnamment élevé de jeux AAA très réussis sont construits sur des moteurs d'origine comme le moteur Unreal .
Philipp
2
En plus de cela, un débutant ne sera pas en mesure de créer un jeu suffisamment complexe pour qu'il ait besoin d'un moteur personnalisé de toute façon.
Christian
Cela vient d'apparaître sur Gamasutra, et bien que ce ne soit pas directement une réponse à cette question, c'est pertinent: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - en particulier, ce sera très difficile pour un projet à partir duquel vous construisez la base avec OpenGL pour être un premier projet «modeste».
Steven Stadnicki

Réponses:

30

Je pense que vous avez déjà répondu à cette question. Vous avez dit "Je ne suis qu'un débutant dans les jeux 3D" . De plus, vous avez dit "... Unity3D et en utilisant ses fonctionnalités et outils intégrés, que je devrais me coder si je devais utiliser OpenGL" .

Essentiellement, cela signifie que si vous utilisez OpenGL seul, vous allez écrire un moteur de jeu, puis, potentiellement des années plus tard, écrire votre jeu. Si vous souhaitez vous concentrer sur un jeu, utilisez les ressources à votre disposition pour vous rapprocher le plus possible de cet objectif. L'utilisation d'un moteur de jeu est la meilleure façon de concentrer vos efforts sur la création d'un jeu, au lieu d'écrire tout ce dont vous avez besoin pour créer un jeu.

Voir cette question connexe: Quelle est la différence entre une bibliothèque et un moteur et celui-ci Qu'est-ce qu'un framework de jeu par rapport à un moteur de jeu?

MichaelHouse
la source
donc OpenGL est juste pour les graphiques et Unity3d est un framework complet qui a des exigences graphiques et physiques pour mon jeu.
Aman Grover
1
L'unité est bien plus que cela, mais oui, c'est à peu près la différence.
jhocking
3
@AmanGrover: réalisez également qu'avec GL "juste pour les graphiques" c'est vraiment "juste pour soumettre des commandes au GPU". Tout le travail acharné des graphiques doit encore être effectué par le programmeur, tandis que Unity dispose de toutes les fonctionnalités graphiques et algorithmes importants inclus et prêts à l'emploi.
Sean Middleditch
2
N'écrivez pas de moteurs, n'écrivez pas de jeux. C'est ce qu'on m'a dit d'approcher. Ce que je veux dire, c'est que quelqu'un crée un moteur de jeu pendant que vous créez le jeu réel. C'est donc le point sur lequel je ne suis pas d'accord avec Byte.
LaVolpe
28

Parce que les débutants, par définition, ne savent pas ce qu'ils font .

OpenGL a une énorme courbe d'apprentissage. Bien sûr, vous pouvez émettre quelques commandes glBegin, vous enthousiasmer à l'idée de mettre des triangles à l'écran, puis sortir de la partie profonde avec quelque chose de plus complexe que vous n'êtes pas encore prêt à affronter. Ce n'est pas une excellente façon d'apprendre. Une analogie (légèrement exagérée) pourrait être l'apprentissage de la physique de base au lycée, puis la mise en charge du Grand collisionneur de hadrons. Ce n'est pas couler ou nager, c'est nager ou laisser un grand trou radioactif dans le sol.

On suppose que la plupart des gens demandent "Je veux faire un jeu, que dois-je utiliser?" question veut vraiment faire un jeu (sinon ils auraient sûrement posé une question différente, sûrement?) Donc, la réponse est adaptée à la question, et l'utilisation d'une boîte à outils, d'un cadre ou d'un moteur préexistant est un moyen de les aider à atteindre cette ambition sans se laisser distraire par l'agonie de savoir si un appel UBO ou glUniform est préférable pour mettre à jour une matrice unique.

Il s'agit de prendre une étape à la fois, de faciliter le processus d'apprentissage et de vous donner quelque chose de gratifiant à la fin. Essayer d'apprendre à créer un jeu et à utiliser correctement une API 3D mature et puissante en même temps est probablement trop pour un débutant. C'est comme l'effet Dunning-Kruger moins les connotations négatives. Vous ne savez pas ce que vous ne savez pas, donc vous n'avez vraiment aucune image réaliste de ce que vous entreprenez.

D'un autre côté, si votre objectif est d'apprendre OpenGL, vous ne voulez pas vraiment faire de jeu! Vous voulez apprendre OpenGL, et le faire dans le contexte de la création d'un jeu peut être une façon amusante d'apprendre, mais faire un jeu est un moyen pour une fin, pas une fin en soi (et certainement pas la seule façon d'apprendre OpenGL ). Vous ne le publierez probablement jamais, et vous y reviendrez certainement dans quelques années et serez horriblement gêné par certaines des choses stupides que vous avez faites.

Maximus Minimus
la source
22

Cela dépend vraiment de ce que vous voulez retirer de ce projet. Si votre objectif principal est de vous concentrer sur la conception du jeu, alors vous êtes probablement mieux avec un moteur pré-construit, car cela vous permettra de vous rendre à la partie de création de jeu beaucoup plus rapidement. Si votre objectif est d'en apprendre davantage sur la partie programmation de la création de jeux (surtout si vous essayez de vous préparer à un emploi dans l'industrie), vous constaterez probablement que travailler avec OpenGL sera une expérience plus précieuse. Gardez à l'esprit qu'aucune des affirmations précédentes n'est vraie 100% du temps.

Il n'y a vraiment pas de règle pour décider de ce genre de chose. La plupart des réponses que vous entendez dans ce genre de question sont des opinions, et très peu d'entre elles seront entièrement pertinentes pour votre propre projet et vos compétences.

RyNo
la source
Merci, et oui, je suis à la recherche d'un emploi dans ce domaine, donc j'irai avec OpenGL.
Aman Grover
9
Je suis vigoureusement en désaccord avec l'idée que travailler avec OpenGL «nu» sera plus précieux pour quelqu'un qui s'introduit dans l'industrie des jeux. Unity fournit un excellent exemple de moteur de jeu moderne et relativement mature; comprendre les fonctionnalités qu'il fournit (en vue d'apprendre comment vous pourriez fournir vous-même des fonctionnalités similaires) est un excellent moyen de comprendre le processus de développement du jeu lui-même, alors qu'OpenGL est loin d'être spécifique au jeu dans un sens significatif.
Steven Stadnicki
Cela montre simplement qu'il n'y a vraiment aucune règle sur ces choses, juste des opinions. Tout dépend de ce dont vous avez besoin / voulez.
jhocking
5
@AmanGrover - alors ne faites pas de jeu! Vous aurez plus de facilité à apprendre une chose à la fois. Faites un simulateur de système solaire. Apprenez à dessiner des primitives de base, apprenez à les traduire et à les faire pivoter, placez les planètes dans un VBO pour les dessiner plus rapidement, utilisez des shaders pour créer des nuages ​​animés dessus, et vous êtes à une bonne distance pour comprendre les principes fondamentaux.
Maximus Minimus
3
@KamikazeSoctsman Encore une fois, en désaccord ici. Je ne dis pas que OGL est inutile - loin de là! - mais au cours de la dernière décennie, j'ai utilisé mes connaissances d'OpenGL seulement une petite poignée de fois dans de brefs ajustements. Au contraire, parce que les moteurs graphiques de jeu ont tendance à être si sensibles aux performances, d'après mon expérience, ils sont l'un des endroits les moins courants pour un nouveau programmeur. Vous devez absolument connaître les mathématiques 3D et vous devez comprendre les principes du rendu - mais c'est une chose très différente de l'apprentissage de OGL.
Steven Stadnicki
6

La différence est simple. L'unité est un chariot à quatre roues rondes qui peut vous transporter. OpenGL est de la sciure de bois que vous pourriez mettre en place et potentiellement utiliser pour mouler un chariot et des roues améliorés et plus modernes. C'est si vous investissez de nombreuses heures de votre temps à apprendre ce que les gens avant vous ont fait en premier.

Votre objectif en tant que débutant devrait être d'abord d'étudier les voitures existantes et leurs conceptions. Il est inutile de tout jeter par la fenêtre et de recommencer à zéro. Apprenez d'abord ce qui existe déjà et acquérez-en une connaissance approfondie. Si vous ne le faites pas, comment connaissez-vous ses limites et si vous ne connaissez pas les limites, comment pourriez-vous les surmonter? Quel est l'intérêt de rendre quelque chose de médiocre qui est inutile et d'ignorer tous les outils existants dynamiques qui sont déjà disponibles?

à mon humble avis, les étapes d'un nouveau développeur de jeu sont:

  1. Maîtrisez un framework / moteur moderne et obtenez une compréhension approfondie de celui-ci (cela vous aidera également à apprendre les différents aspects de la conception de jeux, les graphiques et OpenGL ne sont pas tout ce qu'il y a).
  2. Faites-en un petit jeu et apprenez-en plus au cours du processus.
  3. Rencontrez organiquement des obstacles et des limitations dans le moteur.
  4. En savoir plus sur le sujet.
  5. Travaillez pour améliorer les domaines que vous jugez à améliorer.

Travailler seul par vous-même pour créer quelque chose qui a déjà été fait ne fera pas de vous un développeur précieux pour qui que ce soit, car vous ne serez pas vraiment productif ou un bon apprenant, vous ne ferez que copier des morceaux de code existants et peut-être apprendre à les lire et les comprendre. Comme le dit le vieil adage Pokémon, "Ce n'est pas très efficace ...".

Le pire, c'est que ce type d'approche n'est pas facile à suivre car il n'y a pas de satisfaction, vous utilisez donc une volonté brute qui a été scientifiquement prouvée comme une ressource limitée pour les êtres humains. Vous devez faire quelque chose qui vous gratifie quotidiennement ou vous ne pourrez probablement pas continuer.

Donc, pour résumer les choses, un moteur est souligné parce que vous pouvez faire avancer les choses avec un moteur et vous avez beaucoup plus de chances de réussir de cette façon. Même les grands créateurs de jeux se sont appuyés sur les travaux antérieurs de quelqu'un d'autre et telle est la nature du progrès. Vous devez comprendre la situation dans son ensemble et savoir jouer avec les pièces Lego fournies par d'autres avant de créer vos propres pièces Lego personnalisées.

Wolfdawn
la source
4

En supposant que votre objectif est de créer un jeu, le gars qui a parlé de la nécessité de moteurs personnalisés était faux. Si quoi que ce soit, les jeux complexes nécessitent un moteur mature qui a été conçu, mis en œuvre, optimisé, testé et maintenu par des professionnels qui ont été dans l'industrie depuis longtemps - ou qui peut correspondre à leur qualité (au moins pour les besoins d'un jeu donné) , si c'est possible.

Les grands développeurs de jeux construisent des moteurs internes, mais ils les réutilisent encore fortement pour leurs futurs jeux. Mais gardez à l'esprit que leurs budgets et la taille de leurs équipes et de nombreux autres facteurs sont très différents de ceux des développeurs indépendants - il peut être beaucoup plus logique pour eux de créer leur propre moteur, même si les moteurs existants ne manquent pas sur le plan technologique.

Bien sûr, il y a toujours une idée fausse, car de nombreuses fonctionnalités n'existent pas immédiatement dans les moteurs existants, qu'elles ne peuvent pas du tout être implémentées dans ce moteur, mais c'est généralement inexact.

Gardez à l'esprit que certains des jeux modernes les plus innovants, comme Portal et Antichamber, ont été construits à l'aide de moteurs existants. Certains jeux en ligne assez complexes, comme Aion et TERA, ont été construits à l'aide de moteurs existants. Certains des jeux les plus beaux visuellement, comme Bioshock Infinite et Thief, ont été construits en utilisant les moteurs existants. Et, bien sûr, certains ne l'étaient pas. Mais le fait est que rien de ce que j'ai jamais vu ne nécessitait vraiment un moteur personnalisé.

D'un autre côté, si votre objectif est d'apprendre les concepts de la programmation graphique, bien sûr OpenGL est la voie à suivre. Mais même dans ce cas, gardez à l'esprit que la connaissance de quelques moteurs existants vous aidera énormément à comprendre ce que vous faites et ce que vous devriez viser.

TC
la source
1
-1. Assez grandes affirmations sur l'industrie du jeu. La plupart d'entre eux sont inexacts. J'aimerais pouvoir saupoudrer votre article d'une douzaine de citation neededs
Panda Pyjama
1
@PandaPajama Il y a à peu près une seule affirmation sur l'industrie du jeu dans ma réponse. Si cela vous dérange beaucoup, vous pouvez le corriger ou même le supprimer complètement.
TC
Mon expérience (limitée) m'a montré que s'il y a quelque chose que l'on ne peut pas généraliser, c'est l'industrie du jeu. Chaque entreprise a une façon différente de voir les choses, même différentes équipes au sein d'une entreprise peuvent avoir des politiques très différentes sur tout. Dans ce cas particulier, les moteurs internes génèrent des coûts et apportent certains avantages et inconvénients. Que le résultat net soit des économies ou des dépenses est extrêmement difficile à calculer et variera d'un projet à l'autre. De plus, le budget, bien qu'important, n'est pas le seul élément pris en considération lors de la création de jeux.
Panda Pyjama
@PandaPajama Accordé, voir ma modification. J'ai simplement dit que cela peut être plus judicieux pour eux en général, ce qui inclut le facteur budget et tout ce qui aide à façonner leur décision, soulignant que ce n'est peut-être pas du tout une limitation technique des moteurs existants.
TC