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:
- Pipeline d'actifs unifiés. Pas besoin de passer du temps sur le sous-système de ressources, pas de routine d'importation boguée pour écrire et corriger: il suffit de déposer un fichier dans un dossier, et cela fonctionne.
- Éditeur de niveau intégré. Nul besoin de passer du temps sur des outils de niveau: il suffit de passer directement aux affaires.
- Excellente prise en charge du tweaking et du débogage: toutes vos variables de jeu sont affichées correctement pendant que vous jouez, et peuvent également être modifiées à la volée - et tout cela sans écrire une seule ligne de code. Mettez le jeu en pause à tout moment, ou passez en revue les instructions une par une.
- Bibliothèque assez complète de composants prêts à l'emploi. Rendu, son, physique, contrôles - beaucoup de code "passe-partout" est déjà écrit.
- Mono en tant qu'hôte de script. Alors que l'on peut discuter des mérites de C # en tant que langage, la bibliothèque de classes de base de Mono offre une multitude de fonctions. Collections, E / S, multithreading et LINQ incroyablement expressif accélèrent considérablement le développement.
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.