Nous faisons notre projet d'école avec Unity3d, car ils utilisaient Shiva l'année précédente (ce qui me semble horrible), et je voulais connaître votre point de vue pour cet outil.
Avantages:
- multi plate-forme, j'ai même entendu Google va l'implémenter dans Chrome
- tout ce dont vous avez besoin est ici
- les langages de script en font un bon choix pour les personnes qui ne programment pas les gourous
Les inconvénients:
- multijoueur?
- propriétaire, vous êtes totalement dépendant de l'unité et de sa limite et ne pouvez pas l'étendre
- c'est moins "faire un jeu à partir de zéro"
- C ++ aurait été une bonne chose
Je pense vraiment que ce genre d’outil est intéressant, mais vaut-il la peine de l’utiliser à l’école pour un projet qui implique plus de 3 programmeurs? Qu'apprenons-nous vraiment en termes de programmation en utilisant ce type d'outil (je suis d'accord avec python et js, mais je déteste le C #)? Nous aurions pu utiliser Ogre à la place, même si nous apprenions directement x à partir de janvier ...
Réponses:
Le principal "pro" de Uinty3D est que c'est fou rapide. Je ne parle pas de performance ici, mais de vitesse de développement. Tu as:
En outre, Unity3d est vraiment bon sur plusieurs plates-formes. Bien sûr, vous ne pouvez pas créer, par exemple, un jeu Windows .exe et le faire fonctionner comme par magie sur l'iPhone; mais l'Unité s'en rapproche beaucoup. Ce qu'il faut, c'est "peaufiner" plus que "porter".
Bien sûr, dans certains cas, Unity3D n’est pas idéal. Le mode multijoueur réseau intégré à Unity convient à certains jeux entre réseaux locaux, mais tout ce qui nécessite un serveur central nécessite presque entièrement l'écriture de tout le code réseau. Le système d'interface utilisateur graphique d'Unity est assez lent et lent, il est donc difficile de créer des interfaces graphiques complexes dans le jeu. Cependant, tous les autres systèmes d’interface graphique de jeu que j’ai vus sont également douloureux, aussi celui d’Unity n’est pas si mauvais dans l’ensemble.
Et, bien sûr, Unity3D est un peu moins flexible que les "moteurs de jeu" comme OGRE, qui offrent uniquement une bibliothèque / code source. Ses performances ne sont pas vraiment excellentes et, comme vous n’avez qu’un sandbox de script, vous ne pouvez pas utiliser quelques astuces intelligentes de bas niveau pour l’améliorer. Par exemple, si le rendu d'arborescence intégré à Unity ne vous satisfait pas pour une raison quelconque, vous ne pouvez pas écrire le vôtre (eh bien, vous le pourriez, mais cela fonctionnerait à l'aide de scripts et serait probablement trop lent et trop fastidieux. ). Néanmoins, il est possible de faire à peu près n'importe quoi avec Unity, à condition de perdre un peu de performance.
Le plus gros "con" d'Unity3D, cependant, est le contrôle de source. Comme déjà mentionné, Asset Server d'Unity coûte un joli centime. Et ça craint, vraiment, vraiment dur. Il n'y a même pas de ramification. Tandis que Unity3D prend en charge théoriquement les systèmes SCM tiers, leur utilisation est également périlleuse. J'ai vu les paramètres d'importation «magiquement» changer après la validation de SVN, ou les paramètres de tous les objets disparaissent après l'utilisation de Perforce. Tout cela peut être contourné, mais de toute façon, Unity3D + Contrôle source = douleur.
Donc, pour réellement répondre à votre question. Je crois que Unity3D est l’un des meilleurs, sinon le meilleur choix de moteur de jeu pour un "petit" jeu. Surtout au stade du prototype.
Cela dit, si nous parlons d'un projet éducatif, je le déconseille. Pour apprendre comment fonctionnent les jeux, il est préférable d’en écrire un aussi bas que possible. Les moteurs de jeu sont un excellent outil. mais pour l'utiliser au maximum, il est nécessaire de comprendre comment ils fonctionnent et pourquoi ils fonctionnent de cette manière. Et la meilleure façon de le savoir est d'écrire votre propre moteur de jeu - même si cela s'avère vraiment nul.
la source
Je vais commencer par commenter votre liste:
L'écriture de scripts n'est pas simplement un avantage pour les non-programmeurs. Être un (bon) programmeur, c'est plus que connaître une langue, c'est savoir déconstruire les problèmes et penser d'une manière particulière. Les langages de script peuvent permettre à un programmeur d’exploiter ces compétences de pensée critique d’ordre supérieur afin de produire des résultats plus puissants et plus intéressants en moins de temps que nécessaire pour produire des résultats équivalents, tout en se préoccupant des détails de niveau inférieur à certains langages (C ++). vient à l'esprit) force dans l'image.
Le support multijoueur (ou son absence) n’est un problème d’une manière ou d’une autre si votre projet en a besoin.
Je ne vois pas à quel point la "propriété" est un inconvénient. S'il s'agit d'un projet scolaire, vous ne voudrez probablement pas passer du temps à pirater la source du cadre que vous utilisez, ou quoi que ce soit. En outre, DirectX est également propriétaire.
Il n'y a absolument rien de mal à utiliser des frameworks ou des outils de niveau supérieur comme Unity. "Créer un jeu à partir de zéro" est un non-accomplissement - que considérez-vous exactement "à partir de zéro?" Vous allez toujours utiliser l'API graphique de quelqu'un d'autre. Le runtime de quelqu'un d'autre (même le C nécessite une bibliothèque runtime). "Faire un jeu" est ce qui mérite le respect, pas "faire un jeu sans utiliser aucun outil utile".
C ++ étant une chose "cool" est un peu subjectif. Le langage est très souvent utilisé par les professionnels du secteur, mais probablement pas pour des raisons que vous penseriez. En tant que langue, elle commence à montrer son âge et peut être extrêmement lourde par rapport aux options plus modernes. Dans tous les cas, les langues ne sont que des outils et un bon programmeur devrait pouvoir en découvrir de nouveaux avec une relative facilité.
Le grand avantage d’utiliser Unity pour votre projet d’école est qu’il s’agit d’un cadre de haut niveau avec de nombreux travaux d’infrastructure déjà en place pour vous - cela vous permettra de vous concentrer sur votre jeu et non sur la création d’une fondation. Vous disposez probablement d'une fenêtre relativement limitée pour la production de ce jeu. Plus vous pouvez exploiter les outils existants, plus vous aurez le temps de produire de la logique ou des ressources spécifiques à votre jeu, ce qui donnera à votre jeu une apparence et une convivialité. plus complet - il y a une courbe d'apprentissage pour Unity, mais vous vous retrouvez beaucoup plus rapidement à votre disposition beaucoup plus rapidement.
Un inconvénient est que vous êtes potentiellement sombrer dans le temps d' apprentissage d' un outil spécifique qui implique des connaissances qui pourraient ne pas être cessible, surtout si vous décidez que le flux de travail de l' unité et l' environnement ne sont tout simplement pas pour vous et que vous ne voulez jamais l'utiliser à nouveau . En outre, Unity ne dispose pas du flux de travail 2D le plus évident - il est très concentré sur les jeux 3D, ce qui entraîne tous les frais généraux liés aux ressources artistiques. Mais je pense que pour un projet d’école que vous décrivez, Unity est un très bon choix.
la source
Un problème majeur avec Unity est le contrôle de source. Si vous ne travaillez pas en équipe, cela importera moins (sans doute), mais ce ne sera probablement pas le cas.
Vous pouvez utiliser Unity Asset Server, mais cela nécessite 1) Unity Pro (1 500 USD) et 2) une licence Asset Server par poste (500 USD). Je suppose que vous pouvez obtenir une sorte de réduction éducative, mais ce n'est pas gratuit.
Alternativement, vous pouvez utiliser quelque chose comme SVN avec Unity. Pour le supporter correctement, vous avez toujours besoin de Unity Pro.
Vous ne pouvez pas simplement archiver une version non professionnelle d'Unity dans SVN et vous attendre à ce qu'elle fonctionne parfaitement. Leur mécanisme pour lier les GUID aux actifs, etc., n'est pas exactement compatible avec SCM.
La fonctionnalité multijoueur est assez décente, bien que pour être honnête, je n'ai pas livré de jeu avec. En théorie, vous n'attachez que des vues de réseau à des éléments et indiquez-leur ce que vous souhaitez sérialiser pour configurer correctement la réplication. À partir de là, certains travaux d’interface utilisateur permettent de se connecter à d’autres pairs et d’être configurés. C'est surtout peer-to-peer, cependant. Vous pourrez peut-être faire de la programmation client / serveur avec l’unité en mode sans tête, mais je ne l’ai pas foiré. Mais il est assez facile et rapide de faire en sorte que la personne A se promène sur son écran.
C # est également un point positif en ce qui me concerne. LINQ est super expressif. La gestion des exceptions et le ramassage des ordures sont appropriés. Il a beaucoup plus de paradigmes modernes comme délégués, lambdas, interfaces et un meilleur support générique que C ++. ( Edit : c'est évidemment controversé. Mon argument est que C # n'est pas un mauvais langage. Je ne veux pas me lancer dans un long débat sur les avantages et les inconvénients du langage par rapport au C ++.)
Le plus grand avantage d'utiliser Unity, cependant, est probablement le pipeline d'art. Vous pouvez prendre un fichier PSD ou Max (en supposant que 3ds max soit installé) dans le dossier et l’importer.
la source
for ( auto x : xs )
.Mise à jour: Unity fournit désormais toutes ces fonctionnalités, même dans la version gratuite. Veuillez donc ne pas tenir compte de la réponse ci-dessous.
Il convient de noter que si vous utilisez la version gratuite de Unity3D, vous ne pourrez pas utiliser plusieurs effets, notamment des shaders de post-traitement (comme bloom) et, bien plus important encore, des ombres dynamiques. Celles-ci n'auront évidemment pas beaucoup d'effet sur le flux de travail du projet, mais elles imposent des contraintes sur ce que l'on peut réaliser gratuitement avec le moteur.
la source
La réponse de Nevermind couvre les choses assez complètement, mais juste ajouter du côté du contrôle de source, ce n'est pas si terrible une fois que vous apprenez à vous méfier des quelques pièges:
Au cas où vous voudriez avoir plus de détails sur ces points, j’ai récemment publié un article sur l’utilisation de git avec Unity sur la base de mon expérience de projets assez importants: http://goo.gl/ivJVR
la source
Réellement. Le mode multijoueur est pris en charge. Il suffit simplement de choisir un serveur sur lequel vous voulez exécuter votre jeu.
Le plus populaire actuellement sur le marché est "SmartFox Server". Ils proposent différents packages, qui sont tous gratuits (dans une certaine mesure). Ce n'est gratuit que si vous prévoyez avoir un certain nombre de joueurs, car chaque package permet à un certain nombre de joueurs de jouer "gratuitement".
Si vous choisissez de mettre à niveau, le prix est assez élevé pour un développeur indépendant. Alors ... À long terme, si vous avez beaucoup de joueurs sur votre serveur, vous devrez payer pour votre jeu plutôt que de le télécharger sur des sites comme Download.com en tant que jeu complet gratuit. Ce n'est peut-être pas un problème pour certains, mais la plupart d'entre nous ne peuvent pas se permettre de débourser 2 500 USD pour un serveur.
Par exemple - SmartFox pro autorise 20 joueurs gratuitement. Si vous souhaitez effectuer une mise à niveau, cela vous coûtera 500 euros, ce qui représente un peu plus aux États-Unis, environ 600-700 euros, ce qui permet 100 connexions.
La prochaine mise à niveau concerne un nombre maximal de 500 joueurs, soit 1000 euros, mais ... vous n’avez pas à payer les 1000, vous payez la différence.
Vous ne devrez donc payer que 500 euros de plus, au lieu de 1000. Les dernières mises à niveau prennent en charge un nombre illimité de connexions, pour 2 000 euros. Ce qui représente près de 3 000 $ US.
Ainsi, si vous effectuez une mise à niveau à partir de 500 connexions, vous payez 1 000 euros. Si vous effectuez une mise à niveau à partir de 100 connexions, vous payez 1 000 euros et, bien sûr, 2 000 euros pour une mise à niveau gratuite.
En outre, ce serveur est très facile à installer avec Unity et il existe de nombreux tutoriels vidéo expliquant comment le faire exactement sur Youtube.
la source