Unity3D, combien de code écrivez-vous? [fermé]


16

Je suis curieux de connaître le flux de travail lors de la création d'un jeu dans Unity3D?

Génère-t-il beaucoup de code pour vous?

D'après ce que je comprends, vous décrivez le jeu dans Unity et effectuez des scripts à l'arrière pour faire la logique. Un peu comme vous utilisez Unity pour décrire les marionnettes et vous utilisez un langage de script en tant que maître des marionnettes.



2
Vous pouvez publier cette question sur UnityAnswers . Vous obtiendrez de bien meilleures réponses car il est plus centré sur l'unité
Joe the Person

Réponses:


18

Unity3D se compose d'un moteur de jeu et d'un éditeur 3D (assez rudimentaire). Il fournit des maillages, des textures, des shaders, du terrain, des caméras, des animations, des systèmes de particules, des échantillons audio et d'autres types d'objets utiles dans les jeux vidéo. Il comprend PHYSX (un moteur physique propriétaire appartenant à Nvidia) et Mono (l'implémentation open source du Common Language Runtime, alias .NET).

La quantité que vous utilisez dépend de vous. Vous pouvez représenter toutes vos structures de données comme des objets Unity, construire votre monde dans l'éditeur Unity, activer la physique et laisser les événements suivre leur cours, avec un minimum de scripts. Alternativement, vous pouvez désactiver le moteur physique, construire votre monde de manière algorithmique et programmer explicitement tout le comportement et la physique des objets.

Vous pouvez choisir de programmer le comportement entièrement en Mono (en utilisant l'un des langages C #, JavaScript ou Boo), ou vous pouvez l'écrire dans une autre langue et le lier à votre projet Unity. (L'intégration réelle avec les objets du jeu doit se faire via Mono, mais cela peut être une couche assez mince si vous le souhaitez.)

Le flux de travail est sensiblement le même qu'avec n'importe quel moteur de jeu. Les artistes créent des modèles, des textures et des animations, des spécialistes de l'audio font les sons, les programmeurs écrivent des shaders et des comportements.

La communauté des programmeurs Unity est très utile, à la fois sur answers.unity3d.com et forum.unity3d.com . (Et peut-être ici à Stack Exchange?)

La meilleure façon de le savoir est de l' essayer : la version de base est gratuite et vous bénéficiez d'une période d'essai de 30 jours pour la version "Pro".


6

Unity3D est plus un wrapper / bibliothèque qu'un moteur de jeu «glisser-déposer». Il ne génère pas de code ni de scripts «standard».

Par exemple, Unreal a une caméra à la première personne par défaut, un contrôleur de personnage, une détection de collision et une IA.

Vous n'avez rien de tout cela dans Unity3D. Ce que vous obtenez de Unity3D est une boucle de jeu, un système d'entités basé sur des composants, une bibliothèque mathématique complète, des moyens de charger le support, la gestion des maillages, la caméra, l'interface graphique en mode immédiat, les shaders, le pipeline de rendu et d'autres fonctionnalités de bas niveau. Plus un bel éditeur. Vous n'avez qu'à vous soucier des fonctionnalités de haut niveau. Par exemple, vous devez toujours coder votre propre caméra à la première personne (si vous n'utilisez pas celle par défaut). Cependant, vous n'avez pas besoin de vous occuper du calcul des vecteurs d'observation et autres.

Unity3D ne génère aucun code pour votre jeu, strictement (il génère du code pour exécuter votre jeu, pour être plus précis, mais aucun pour votre gameplay)

Vous devrez utiliser l'API pour définir votre jeu. Vous pouvez consulter les exemples fournis avec Unity3D et réutiliser ces codes; il existe quelques scripts prédéfinis, mais vous devez généralement les personnaliser pour répondre à vos besoins.

Vous créez le jeu grâce à des scripts; vous écrivez des scripts pour les comportements, concevez le niveau dans Unity3D et attribuez ces comportements à des entités (ou des objets de jeu). C'est très flexible, mais cela nécessite encore des efforts pour écrire un jeu. Je le comparerais à Flash pour 3D.


1
Cette déclaration est incorrecte: "Unreal a une caméra à la première personne, un contrôleur de personnage, une détection de collision et une IA par défaut. Vous n'avez rien de tout cela dans Unity3D"
jcurrie33

8
En fait, Unity comprend des composants pour toutes ces fonctionnalités intégrées, et bien d'autres en tant que plugins téléchargeables. Vous devez personnaliser et coder pour obtenir des fonctionnalités spécifiques, mais vous pouvez vous rapprocher de la fonctionnalité complète avec une combinaison de ces composants. Ce n'est pas aussi étoffé qu'Unreal, car vous ne commencez pas avec un pistolet fonctionnel, mais je pense personnellement qu'il est plus facile de faire en sorte qu'un jeu en général (non FPS) se déroule dans Unity. Une grande partie de cela est cependant sémantique - vous devez réellement programmer pour que tout se passe.
jcurrie33

1
Il vaut peut-être mieux dire que les autres moteurs de jeu ont des sous-systèmes plus étroitement couplés que Unity3D. Lorsque vous démarrez un nouveau projet Unity3D et n'importez aucun élément, vous obtenez une liste vierge. Quelque chose que je considère comme une bonne chose. Cela a peut-être faussé mon point de vue sur la raison pour laquelle je pense qu'il n'y a pas de sous-systèmes par défaut. Il y en a, juste qu'ils ne conviennent pas aux projets que je dois faire. Et c'est l'un des avantages de Unity3D. Il est facile d'omettre ceux par défaut et de coder le vôtre si vous le souhaitez.
Extrakun

3

La surface d'Unity3D semble être super facile, et presque tout est pré-construit, mais rien de tout cela n'est vrai. Si vous ignorez d'utiliser des scripts déjà existants (qui existent pour chaque moteur, mauvais point contre Unity) et des plugins que vous décrivez comme quelque peu ultra puissants, ce qu'ils ne sont certainement pas, Unity n'est qu'une interface de programmation avec l'éditeur.

Vous avez la plupart du code par vous-même. J'ai vécu cela dans 2 projets différents.


2

L'analogie avec le flash est tout à fait juste, mais je ne comprends pas vraiment votre analogie avec les marionnettes.

Les bonnes choses à propos de l'unité sont:

  • multiplateforme: C'est un très gros avantage, je dirais la raison principale.
  • Moteur et implémentation de haute qualité, je veux dire en utilisant les objets de jeu Unity, etc.
  • Très facile de créer un jeu simple à partir de zéro, c'est donc un plus pour la fabrication de prototypes.

Les mauvaises choses:

  • Impossible de créer un lien avec C ++ ou C, donc votre projet peut uniquement fonctionner sur Unity. Avec C #, on pourrait faire valoir que cela fonctionnera sur XNA, mais C ++ aurait été bien. Avec cette remarque, je veux dire que ce n'est pas un outil que des professionnels chevronnés ou des autodidactes utiliseraient, car vous n'avez pas un contrôle total sur votre application, mais cela ne signifie pas qu'il y a une chose que vous ne pouvez pas faire avec Unity. D'un autre côté, une équipe avec une excellente idée et des artistes talentueux peut faire des choses géniales sans avoir besoin de programmeurs expérimentés.
  • C'est tout à fait nouveau, donc évidemment personne ne sait où mènera cet outil.

La chose que je n'aime pas avec Unity, c'est que c'est comme si tout le travail était fait, donc les programmeurs ont beaucoup moins de valeur. D'un autre côté, c'est génial pour enseigner rapidement aux gens comment construire des choses rapidement.

Donc, pour conclure: Unity (ou un outil comme Unity) est plus pour les artistes qui ne peuvent pas tendre la main à de grands programmeurs, mais qui savent toujours faire un peu de script de jeu. Bien sûr, vous pouvez créer un jeu complet, ajouter une IA réaliste, faire un net-code mmo et quoi d'autre, mais les grandes entreprises n'utiliseraient pas Unity.

Les modèles de programmation permettent de proposer une solution adaptée aux 3/4 des outils de développement afin qu'elle s'adapte à ces créateurs de jeux «indépendants». Il valorise un outil particulier et il valorise également les artistes, mais pas les programmeurs (sauf ceux de l'équipe de l'unité, bien sûr).

Unity est un bon raccourci pour les non-programmeurs, mais ils doivent comprendre que les jeux vidéo proviennent de lignes de code, et que vous ne pouvez pas tout faire simplement avec un outil génial. À un moment donné, il faut savoir quelque chose sur la programmation de bas niveau.

Ayant un projet personnel en tête, je n'utiliserais pas Unity, car je n'aime pas C # ou Boo (Panda est bon avec python, alors pourquoi s'embêter avec un logiciel commercial?), Et parce que si je montre mon projet et c'est fait avec l'unité, ce sera beaucoup moins impressionnant.


1
Commenter moi-même: il y a aussi des plugins pro qui permettent de programmer en C ++, donc théoriquement, c'est aussi un moteur C ++ ...
jokoon

1

Unity vous oblige à script, mais sans tous les passe-partout. Dans un jeu OpenGL typique, vous devrez initialiser les matrices et les caméras comme des fous. Dans Unity, vous créez un script pour indiquer le comportement de quelque chose, puis vous l'attachez à un objet pour qu'il se comporte.


1

Si en générant beaucoup de code pour vous, vous incluriez des fonctions prédéfinies que vous pouvez utiliser pour vous faciliter la vie en ce qui concerne la détection des collisions et les calculs de rotation (bibliothèque), alors oui, cela prend beaucoup de codage de l'image et donne vous avez optimisé les versions à portée de main et prêt à partir. Principalement des fonctions dont vous aurez besoin spécifiquement pour le développement de jeux dans toutes les versions.

Cela peut sembler redondant de le dire, mais d'après mon expérience, lorsque Unity3D n'est pas occupé à planter ou à construire, cela me facilite la vie en me permettant de changer tout ce que je veux et de laisser les mathématiques basées sur Quaternion aux personnes qui ont un master en mathématiques. et me faire toujours assez confiance pour me changer ce que je veux.

Il n'écrira rien pour vous, plutôt vous aidera dans la façon dont il pense être le mieux et vous permettra d'écrire ce que vous voulez.

En un mot, flexible

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.