Quelle est la limitation la plus sérieuse d'Unity? [fermé]

30

Après avoir lu cette question passionnée sur Unity vs UDK vs ID quelque chose, je suis curieux de savoir: quelle est la ou les limitations les plus paralysantes de Unity?

Afin de garder cette question non subjective, encore une fois, je parle des principaux délinquants répétés d'Unity. En tant qu'utilisateur Unity, vous souhaiteriez vraiment que quelqu'un vous en parle avant de commencer à l'utiliser.

J'ai entendu quelqu'un dire que Unity ne gère pas bien le contrôle de version, car il génère beaucoup de fichiers binaires (qui ne sont pas diffiables). Pour moi, cela n'est pas vraiment handicapant car je travaille seul.

Pensées?

cendres999
la source
1
DV mais pas de commentaires, et sur une question de 2,5 ans? Pourquoi donc?
ashes999
Je suis probablement tombé dessus au hasard. Cette question est clairement basée sur l'opinion dès le départ. Dire «Afin de garder cette question non subjective» ne la rend pas subjective, car le récidiviste que vous trouvez le plus ennuyeux ne sera pas le même que le premier délinquant de l'utilisateur suivant. De telles listes ont peu ou pas de valeur et ne font que renforcer les mythes, par exemple si tout le monde disait "X est la chose", mais X est corrigé dans une mise à jour Unity une semaine plus tard, mais les réponses de haut niveau restent probablement non éditées avec "X est un problème ÉNORME "au sommet de leurs listes, même des années plus tard.
LearnCocos2D
De plus, quelle réponse est acceptable comme la bonne ? Si vous pensez à ce sujet, aucune des réponses doit être acceptée comme la réponse , car il n'y a pas de bonne façon de répondre à cette question. C'est probablement l'indicateur n ° 1 d'une question subjective.
LearnCocos2D

Réponses:

33

Permettez-moi de dire ceci que les gars d'Unity ont été assez bons pour entendre les scrupules majeurs auxquels leur communauté est confrontée et finissent par promettre d'améliorer les choses. Il y a aussi beaucoup de problèmes qui ne surviennent que sur certaines plateformes ou qui sont une question de préférence personnelle ou de problèmes spécifiques du jeu sur lequel vous travaillez.

Cela étant dit:

1) Mauvaise intégration du contrôle des sources et grands outils d'équipe. Comme vous l'avez mentionné, beaucoup de fichiers binaires non diffiables. L'éditeur ignore l'indicateur de lecture seule pour les fichiers de scène. Les fichiers réels que vous devez archiver ne sont pas immédiatement évidents. Certains de ces problèmes sont en cours de correction dans la version 3.5 avec l'intégration SVN et P4. Il y a aussi des promesses de formats de scène basés sur du texte. MISE À JOUR: Le format de scène textuel est désormais disponible dans la version Pro d'Unity. Voyez ici .

2) Outils d'interface utilisateur lents et centrés sur le programmeur. Chaque widget est son propre appel de tirage, qui a beaucoup de frais généraux sur les plates-formes mobiles. Il n'y a pas le concept de choses comme des panneaux avec des animations et toutes ces autres choses fantaisistes qui font que l'interface utilisateur se sent bien sans la faire rouler vous-même. Il y a une promesse d'un nouveau système d'interface utilisateur sur la feuille de route (3.6?). Il existe des outils tiers, mais ils ne sont pas géniaux.

3) Édition de particules vraiment rudimentaire. Ils promettent cependant un nouveau système basé sur les courbes en 3.5. MISE À JOUR: Ce système basé sur une courbe, appelé Shuriken, est maintenant disponible. Voyez ici .

4) Vous ne pouvez pas imbriquer des préfabriqués. Un petit problème, mais lorsque vous avez l'habitude de travailler avec le système préfabriqué et toute la puissance qu'il vous fournit, cela peut devenir frustrant. Cela a été promis mais pas de date précise. MISE À JOUR: Vous pouvez maintenant imbriquer des préfabriqués.

5) Il est presque impossible d'obtenir un jeu iOS sous la limite de diffusion. Le binaire seul est comme 8 Mo dans le meilleur des cas. Ce n'est pas quelque chose qui est facilement réparable.

6) Les plates-formes de crash d'exceptions de référence nulles qui n'autorisent pas le code compilé JIT. Sur les versions autonomes ou Web, les NRE sont interceptés. C'est toujours une exception non capturée, mais au moins l'application va essayer de continuer à fonctionner. Sur iOS, il bloque l'appareil. Vous pouvez le mettre en mode débogage et intercepter certains types d'exceptions, mais les performances en souffrent.

7) Lorsque vous travaillez sur un jeu multiplateforme, chaque fois que vous changez de cible de construction, vous devez tout réimporter et cela prend beaucoup de temps. J'ai travaillé autour de cela en ayant simplement plusieurs copies du projet sur le disque. Apparemment, un serveur de ressources importé arrive en 3.5.

Tetrad
la source
1
@iamcreasy, sois convenable, DUDE. "Bien que Dropbox fonctionne comme un service de stockage, il se concentre sur la synchronisation et le partage. Il prend en charge l'historique des révisions, de sorte que les fichiers supprimés du dossier Dropbox peuvent être récupérés à partir de n'importe quel ordinateur synchronisé. [33] [34] Le contrôle de version de Dropbox aide également les utilisateurs connaissent l'historique d'un fichier sur lequel ils travaillent actuellement, ce qui permet à plus d'une personne de modifier et de publier à nouveau des fichiers sans complications de perdre son formulaire précédent. [35] L'historique des versions est limité à 30 jours. Une option payante pour l'historique des versions illimité appelé "Pack-Rat" est disponible. " -Wikipedia
Ingénieur
6
Peut-être que je suis injuste, mais je pense que les NullReferenceExceptions sont une faute de programmeur; vous devriez vérifier vos paramètres entrants. Bien sûr, ce serait plus facile à appliquer si nous avions une sorte de module complémentaire d'analyse de code pour MonoDevelop comme vous le faites dans VisualStudio ...
chrish
1
@ ashes999 Il y a toujours une terminologie à apprendre, avec une nouvelle technologie. Les mots sont nos poignées sur les concepts. Il en va de même pour le Flash de base. Le battage médiatique autour de la convivialité d'Unity n'est pas pour rien cependant. Il abaisse les barrières à l'entrée pour les développeurs non professionnels et permet aux professionnels de faire beaucoup, beaucoup plus avec beaucoup moins. Ne vous inquiétez pas trop des limitations supposées. Il y a de fortes chances que la plupart d'entre eux ne soient même pas un obstacle pour vous. La seule chose qui m'inquiéterait serait les exceptions de pointeur nul, et celles-ci sont déboggables.
Ingénieur
3
Comment la réponse de Tedrad tient-elle maintenant dans Unity 4.1.x? Est-ce que quelqu'un sait?
Sil
1
Lorsque vous dites "Vous pouvez maintenant imbriquer des préfabriqués" De quoi parlez-vous? Peut-être que cette fonctionnalité a été supprimée depuis la dernière modification de la question? Ou faites-vous référence à cet addin ?
NauticalMile
6

Lorsque moi et un ami evalutad Unity pour un projet plus important, nous avons constaté que l'un des plus gros problèmes était la performance de leur skin de logiciel. Si je me souviens bien, nous avions quelque chose comme 10 objets animés avec environ 1000 verts chacun et j'ai obtenu 20 images par seconde en utilisant un ordinateur de milieu de gamme ... Pas très bon ...

Cpt. rouge
la source
Cela s'est passé il y a combien de temps? Il semble que presque toutes les versions contiennent quelque chose dans les notes de version sur l'amélioration des performances de skinning. Face à iOS, ils sont passés du skinning GPU à l'utilisation du FPU car c'était beaucoup plus rapide.
Tetrad
C'était il y a un mois ...
Cpt.
6

Mon problème numéro un était le contrôle des versions. La solution? Utilisez simplement DropBox pour les projets Unity. À condition de le configurer correctement (c'est-à-dire de payer pour leur service "PackRat"), il conserve l'historique des révisions. Il est également beaucoup plus facile de collaborer avec des concepteurs, de cette façon, qui ne veulent pas connaître le contrôle de version traditionnel, DropBox leur donne une solution transparente. L'inconvénient est que les branchements / fusions ne sont pas vraiment pris en charge comme ils le sont par exemple. git, SVN.

Pour ceux qui doutent ...

Alors que Dropbox fonctionne comme un service de stockage, il se concentre sur la synchronisation et le partage. Il prend en charge l'historique des révisions, de sorte que les fichiers supprimés du dossier Dropbox peuvent être récupérés à partir de n'importe quel ordinateur synchronisé. [33] [34] Le contrôle de version de Dropbox aide également les utilisateurs à connaître l'historique d'un fichier sur lequel ils sont actuellement en train de travailler, permettant à plus d'une personne de modifier et de publier à nouveau des fichiers sans complications de perdre sa forme précédente. [35] L'historique des versions est limité à 30 jours. Une option payante pour un historique des versions illimité appelé "Pack-Rat" est disponible.

Voir ici pour une référence solide sur les forums Unity.

En dehors de cela, la seule chose que j'ai trouvée ennuyeuse à propos de Unity est qu'il n'a pas de point d'entrée d'application comme le fait C (main ()) ou AS3 (classe de document). Mais vous venez de mettre votre application init sur un GameObject vide, ce n'est pas grave. Le flux de code est également un peu différent autour de cette structure inhérente, mais encore une fois, rien de trop difficile à maîtriser.

En ce qui concerne la licence, la plupart des gens ne réalisent pas (et je parle en particulier des petites opérations indépendantes et des amateurs qui n'ont peut-être pas l'argent pour payer une licence pro et l'addon Asset Manager) que vous pouvez faire à peu près tout ce que vous pourriez jamais voulu avec l'édition de base / gratuite. Vraiment, ce n'est pas une énorme barrière, l'équipe d'Unity a été très généreuse.

Ingénieur
la source
1
Dropbox, yech. Mais +1 - c'est essentiellement ce que je recherchais.
ashes999
Hehe, je pense que tout développeur ressentirait la même chose. Mais bon, si ça fait le boulot ...
Ingénieur
2
Nous utilisons Git avec Unity. Il faut un peu de travail pour configurer les fichiers .gitignore, mais cela fonctionne, et donne l'ensemble complet des fonctionnalités VCS.
Kylotan
2
Nous utilisons Mercurial (avec BitBucket) avec Unity et fonctionne très bien une fois que vous avez correctement configuré les fichiers .hgignore.
JD
@JD (& Kylotan) - Comment avez-vous résolu le problème avec les fichiers de scène non fusionnables?
UpTheCreek
6

J'ai pensé à une autre limitation majeure qui m'ennuie quotidiennement, donc je posterai ceci séparément.

Unity3D souhaite que vous modifiiez vos scripts dans MonoDevelop, en particulier une ancienne version de MonoDevelop qu'ils distribuent. La fonctionnalité "Rechercher dans les fichiers" de cette version est rompue, en ce sens que son utilisation entraîne généralement le blocage de l'EDI, le rendant inutile.

Ce serait une grosse irritation avec n'importe quel moteur, mais c'est une énorme irritation avec Unity car cela encourage un système très décentralisé de composants séparés agissant sur les différents objets du jeu. Mais comment savoir quels composants accèdent à quelles propriétés si vous ne pouvez même pas rechercher parmi les différents composants?

EDIT: Cette réponse a été publiée en 2011: le bogue Find In Files a été corrigé il y a quelque temps, heureusement. Et comme le disent les commentateurs, vous pouvez modifier votre code dans d'autres éditeurs (bien que votre choix soit limité si vous voulez pouvoir exécuter dans le débogueur).

Kylotan
la source
1
Pour ce que ça vaut, vous pouvez utiliser n'importe quel IDE que vous voulez avec Unity (j'utilise Visual Studio Pro). Mais si vous souhaitez utiliser le débogueur, vous êtes limité à MonoDevelop.
Tetrad
1
Oui, le débogueur est assez important (même si celui de MonoDevelop n'est pas terrible). De plus, malheureusement, il indique que cela ne fonctionne pas avec Visual Studio Express. Je ne connais aucun autre IDE C # que les gens utilisent. Mais vraiment, celui qui est livré avec Unity devrait être en meilleure forme.
Kylotan
Vous pouvez également utiliser d'autres éditeurs de texte comme Sublime Texthttp: //wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance
Je ne l'ai pas essayé, mais j'ai lu qu'il existe maintenant un moyen d'utiliser Visual Studio pour le débogage (via un plugin, je pense). Peut-être que ce n'est que pour la version Pro, je ne suis pas sûr.
Christian
FWIW, UnityVS rend l'intégration de Visual Studio beaucoup plus fluide. Vous pouvez déboguer, passer par-dessus, etc.
Basic
5

Pour moi, la limitation la plus sérieuse se trouve dans le CLUF:

"Restrictions sur les jeux de hasard Vous ne pouvez pas distribuer ni publier de contenu sous licence en relation avec des activités de jeu sans une licence distincte d'Unity."

Cela signifie que depuis la v4.0, vous ne pouvez pas utiliser Unity pour les jeux impliquant de l'argent / chance, à moins que vous ou vos clients ne soyez prêts à payer des frais de licence supplémentaires qui sont négociés au cas par cas. C'est-à-dire qu'ils voient combien vous valez et vous taxent en conséquence, avec 6 chiffres cités.

Plus troublant, c'est que qui sait ce qu'ils ajouteront à la CLUF v5. Peut-être tous les jeux sociaux? Peut-être tous les jeux multi-joueurs?

Tout développeur utilisant Unity risque d'être tenu en rançon dans une future version.

John Little
la source
4
Tout outil ou logiciel tiers pourrait ajouter (ou supprimer) des clauses du CLUF dans les nouvelles versions. Je ne vois pas vraiment comment cela est spécifique à Unity. De plus, sans preuves à l'appui, il semble étrange de prétendre que la clause de non-jeu est suffisamment sérieuse pour être la limitation la plus accablante du logiciel en général, ce à quoi la question originale (certes maintenant hors sujet) essayait de répondre. À moins que la majorité des jeux Unity ne reposent sur le jeu comme fonctionnalité principale, cette réponse ressemble plus à une diatribe.
Josh
4

Bonne question. Pour moi, le plus gros problème est l'interface graphique. Cela ne me dérange pas que ce soit centré sur le programmeur, mais je me préoccupe de la façon horrible dont les objets GUI sont des fonctions plutôt qu'un objet, et que la gestion de l'interface graphique est tout bourrée dans un appel de fonction qui est utilisé pour le rendu et pour la gestion des événements, et qu'il n'y a pas d'intégration avec le système d'entrée (ce qui signifie que les clics sur les éléments de l'interface graphique peuvent être interprétés comme des clics dans le monde), etc.

Un problème secondaire est le manque de prise en charge adéquate du contrôle de version (principalement parce que le système utilise la disposition du répertoire comme disposition du projet, ce qui confond le VCS lorsque vous déplacez ou renommez des choses), mais cela peut être contourné et n'est pas un problème pour Tout le monde.

Kylotan
la source
Vous pouvez interroger le système GUI pour voir si un clic a été consommé par celui-ci, puis ignorer le clic dans votre code de sélection d'objet mondial. Lourd, mais fonctionne.
Sean Middleditch
Comment feriez-vous cela?
Kylotan
Il y a une propriété sur l'objet système d'entrée pour obtenir l'ID de l'élément "hot", qui sera zéro s'il n'y a pas d'élément GUI sous le curseur. Oubliez le nom exact de la propriété, devrait cependant être dans la référence de script d'unité.
Sean Middleditch du