¿Cuál es la limitación más grave de Unity? [cerrado]

30

Después de leer esta acalorada pregunta acerca de Unity vs. UDK vs. ID, tengo curiosidad por saber: ¿cuál es la limitación (s) más reiterada y más paralizante de Unity?

Para mantener esta pregunta no subjetiva, nuevamente, estoy hablando de los principales delincuentes repetidos de Unity. Esto es algo que, como usuario de Unity, realmente desearía que alguien le hubiera contado antes de comenzar a usarlo.

He oído de alguien que Unity no maneja bien el control de versiones, ya que genera muchos archivos binarios (que no se pueden difuminar). Esto, para mí, no es realmente paralizante ya que trabajo solo.

Pensamientos?

cenizas999
fuente
1
DV pero sin comentarios, y en una pregunta de 2.5 años? ¿Porqué es eso?
cenizas999
Probablemente solo tropiezo al azar. Esta pregunta está claramente basada en la opinión desde el principio. Decir "Para mantener esta pregunta como no subjetiva" no lo hace no subjetivo porque el delincuente repetido superior que encuentre más molesto no será lo mismo que el delincuente superior del siguiente usuario. Dichas listas tienen poco o ningún valor y solo ayudan a hacer cumplir los mitos, por ejemplo, ¿qué pasa si todos dicen "X es la cosa" pero X se arregla en una actualización de Unity una semana más tarde, pero las respuestas de alto rango probablemente no se hayan editado con "X is un problema ENORME "en la cima de sus listas incluso años después.
LearnCocos2D
Además, ¿qué respuesta es aceptable como la correcta ? Si se piensa en ello, ninguna de las respuestas debe ser aceptada como la respuesta porque no hay manera correcta de responder a esta pregunta. Ese es probablemente el indicador # 1 de una pregunta subjetiva.
LearnCocos2D

Respuestas:

33

Permítanme comenzar con esto porque los muchachos de Unity han sido muy buenos al escuchar los principales reparos que enfrenta su comunidad y eventualmente prometen mejorar las cosas. También hay muchos problemas que solo surgen en ciertas plataformas o son una cuestión de preferencia personal o problemas específicos del juego en el que estás trabajando.

Habiendo dicho eso:

1) Mala integración de control de fuente y herramientas de equipo grande. Como mencionó, muchos archivos binarios no difusables. El editor ignora el indicador de solo lectura para los archivos de escena. Los archivos reales que tiene que registrar no son evidentes de inmediato. Algo de esto se está rectificando en 3.5 con integración SVN y P4. También hay promesas de formatos de escena basados ​​en texto. ACTUALIZACIÓN: El formato de escena basado en texto ahora está disponible en la versión Pro de Unity. Ver aquí .

2) Herramientas de IU lentas, centradas en el programador. Cada widget es su propia llamada de sorteo, que tiene mucha sobrecarga en las plataformas móviles. No existe el concepto de cosas como paneles con animaciones y todas esas otras cosas elegantes que hacen que una interfaz de usuario se sienta bien sin rodarla usted mismo. Hay una promesa de un nuevo sistema de interfaz de usuario en la hoja de ruta (3.6?). Hay algunas herramientas de terceros, pero no son geniales.

3) Edición de partículas realmente rudimentaria. Sin embargo, prometen un nuevo sistema basado en curvas en 3.5. ACTUALIZACIÓN: Este sistema basado en curvas, llamado Shuriken, ya está disponible. Ver aquí .

4) No puedes anidar prefabricados. Un pequeño problema, pero cuando estás acostumbrado a trabajar con el sistema prefabricado y toda la potencia que te proporciona, puede ser frustrante. Esto ha sido prometido pero no hay una fecha específica. ACTUALIZACIÓN: ahora puede anidar prefabricados.

5) Casi imposible obtener un juego de iOS por debajo del límite de aire. El binario solo es como 8 megas en el mejor de los casos. Esto no es algo que se pueda arreglar fácilmente.

6) Las excepciones nulas de referencia bloquean plataformas que no permiten el código compilado JIT. En versiones independientes o web, se capturan NRE. Sigue siendo una excepción no detectada, pero al menos la aplicación intentará continuar ejecutándose. En iOS, bloquea el dispositivo. Puede ponerlo en modo de depuración y detectar algunos tipos de excepciones, pero el rendimiento se ve afectado.

7) Cuando trabajas en un juego multiplataforma, cada vez que cambias los objetivos de construcción tienes que reimportar todo y eso lleva mucho tiempo. He trabajado alrededor de esto simplemente teniendo múltiples copias del proyecto en el disco. Aparentemente hay un servidor de activos importados que viene en 3.5.

Tétrada
fuente
1
@iamcreasy, vístete, DUDE. "Si bien Dropbox funciona como un servicio de almacenamiento, su enfoque se centra en la sincronización y el uso compartido. Es compatible con el historial de revisiones, por lo que los archivos eliminados de la carpeta de Dropbox pueden recuperarse de cualquiera de las computadoras sincronizadas. [33] [34] El control de versiones de Dropbox también ayuda los usuarios conocen el historial de un archivo en el que pueden estar trabajando actualmente, lo que permite a más de una persona editar y volver a publicar archivos sin complicaciones de perder su forma anterior. [35] El historial de versiones está limitado a 30 días. Una opción de pago para el historial de versiones ilimitado llamado "Pack-Rat" está disponible ". -Wikipedia
Ingeniero
66
Tal vez estoy siendo injusto, pero estoy pensando que NullReferenceExceptions es un error del programador; deberías verificar tus parámetros entrantes. Por supuesto, eso sería más fácil de aplicar si tuviéramos algún tipo de complemento de análisis de código para MonoDevelop como el que obtienes en VisualStudio ...
2011
1
@ ashes999 Siempre hay algo de terminología que tendrás que aprender, con una nueva tecnología. Las palabras son nuestras manos en los conceptos. Lo mismo ocurre incluso para Flash básico. Sin embargo, la exageración en torno a la usabilidad de Unity no es para nada. Reduce las barreras de entrada para desarrolladores no profesionales y permite a los profesionales hacer mucho, mucho más con mucho menos. No te preocupes demasiado por las supuestas limitaciones. Es probable que la mayoría de ellos ni siquiera sean una barrera para usted. Lo único que me preocuparía son las excepciones de puntero nulo, y esas son depurables.
Ingeniero
3
¿Cómo se mantiene la respuesta de Tedrad ahora en Unity 4.1.x? ¿Alguien sabe?
Sil
1
Cuando dices 'Ahora puedes anidar prefabricados' ¿A qué te refieres? ¿Quizás esta funcionalidad se ha eliminado desde la última edición de la pregunta? ¿O te refieres a este complemento ?
NauticalMile
6

Cuando un amigo y yo evaluamos Unity para un proyecto más grande, descubrimos que uno de los problemas más grandes era el rendimiento con su skinning de software. Si recuerdo correctamente, teníamos algo así como 10 objetos animados con aproximadamente 1000 verts cada uno y obtuve 20 fps mientras usaba una computadora de tamaño medio ... No muy bueno ...

Cpt. rojo
fuente
¿Hace cuánto tiempo fue esto? Parece que en casi todas las versiones hay algo en las notas de la versión sobre el rendimiento mejorado del skinning. Frente a iOS, pasaron de pelar GPU a usar la FPU, ya que era mucho más rápido.
Tetrad
Fue hace un mes ...
Cpt.
6

Mi problema número uno fue el control de versiones. ¿La solución? Solo use DropBox para proyectos de Unity. Siempre que lo configure correctamente (es decir, pague por su servicio "PackRat"), mantiene el historial de revisiones. También es mucho más fácil colaborar con los diseñadores, de esta manera, quienes no quieren saber sobre el control de versiones tradicional, DropBox les brinda una solución transparente. La desventaja es que la ramificación / fusión no es realmente compatible con la forma en que lo están, por ejemplo. git, SVN.

Para los que dudan ...

Si bien Dropbox funciona como un servicio de almacenamiento, se centra en la sincronización y el uso compartido. Es compatible con el historial de revisiones, por lo que los archivos eliminados de la carpeta de Dropbox se pueden recuperar de cualquiera de las computadoras sincronizadas. [33] [34] El control de versiones de Dropbox también ayuda a los usuarios a conocer el historial de un archivo en el que pueden estar trabajando actualmente, lo que permite a más de una persona editar y volver a publicar archivos sin complicaciones de perder su forma anterior. [35] El historial de versiones está limitado a 30 días. Está disponible una opción de pago para el historial de versiones ilimitado llamado "Pack-Rat".

Vea aquí una referencia sólida de los foros de Unity.

Aparte de eso, lo único que encontré molesto acerca de Unity es que no tiene un punto de entrada de la aplicación como C (main ()) o AS3 (clase de documento). Pero solo pones tu aplicación init en un GameObject vacío, no es un gran problema. El flujo de código también es un poco diferente en torno a esta estructura inherente, pero, una vez más, no es nada difícil de manejar.

En cuanto a la licencia, la mayoría de las personas no se dan cuenta (y me refiero particularmente a pequeñas operaciones independientes y aficionados que pueden no tener el dinero para pagar una licencia profesional y el complemento de administrador de activos) que puede hacer casi todo lo que pueda Alguna vez quisiste con la edición básica / gratuita. Realmente, no es una barrera enorme, el equipo de Unity ha sido muy generoso.

Ingeniero
fuente
1
Dropbox, sí. Pero +1: esto es esencialmente lo que buscaba.
cenizas999
Jeje, creo que cualquier desarrollador sentiría lo mismo. Pero bueno, si hace el trabajo ...
Ingeniero
2
Usamos Git con la Unidad. Se necesita un poco de trabajo para configurar los archivos .gitignore, pero funciona y proporciona el conjunto completo de características de VCS.
Kylotan
2
Usamos Mercurial (con BitBucket) con Unity y funciona muy bien una vez que configura los archivos .hgignore correctamente.
JD
@JD (& Kylotan) - ¿Cómo resolvió el problema con los archivos de escena que no se pueden fusionar?
UpTheCreek
6

Pensé en otra limitación importante que me molesta a diario, así que publicaré esto por separado.

Unity3D quiere que edite sus scripts en MonoDevelop, específicamente una versión antigua de MonoDevelop que distribuyen. La funcionalidad "Buscar en archivos" de esta versión está rota, ya que su uso generalmente hace que el IDE se cuelgue, lo que lo hace inútil.

Esto sería una gran irritación con cualquier motor, pero es una irritación masiva con Unity porque fomenta un sistema muy descentralizado de componentes separados que actúan sobre los diversos objetos del juego. Pero, ¿cómo puede averiguar qué componentes acceden a qué propiedades si ni siquiera puede buscar entre los diversos componentes?

EDITAR: Esta respuesta se publicó en 2011: afortunadamente, el error Buscar en archivos se solucionó hace algún tiempo. Y como dicen los comentaristas, puede editar su código en otros editores (aunque su elección es limitada si desea poder ejecutar en el depurador).

Kylotan
fuente
1
Para lo que vale, puede usar cualquier IDE que desee con Unity (yo uso Visual Studio Pro). Pero si desea utilizar el depurador, está limitado a MonoDevelop.
Tetrad
1
Sí, el depurador es bastante importante (aunque MonoDevelop no es tan bueno). Además, desafortunadamente dice que no funciona con Visual Studio Express. No conozco ningún otro ID de C # que la gente use. Pero realmente, el que se envía con Unity debería estar en mejor forma.
Kylotan
También puede usar otros editores de texto como Sublime Texthttp: //wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance
No lo he probado, pero he leído que ahora hay una manera de usar Visual Studio para la depuración (creo que a través de un complemento). Sin embargo, es posible que esto sea solo para la versión Pro, no estoy seguro.
Christian
FWIW, UnityVS hace que la integración de Visual Studio sea mucho más fluida. Puede depurar, pasar, etc.
Básico
5

Para mí, la limitación más grave está en el EULA:

"Restricciones de juego No puede distribuir ni publicar ningún Contenido del licenciatario en relación con ninguna Actividad de juego sin una licencia separada de Unity".

Esto significa que desde la v4.0, no puede usar Unity para juegos que involucren dinero en efectivo / azar, a menos que usted o sus clientes estén preparados para pagar una tarifa de licencia adicional que se negocia caso por caso. Es decir, ven cuánto vales y te gravan en consecuencia, con 6 cifras citadas.

Más inquietante es que quién sabe qué agregarán al v5 EULA. ¿Quizás todos los juegos sociales? ¿Quizás todos los juegos multijugador?

Cualquier desarrollador que use Unity corre el riesgo de verse obligado a rescatar en una versión futura.

John Little
fuente
44
Cualquier herramienta o software de terceros podría agregar (o eliminar) cláusulas EULA en nuevas versiones. Realmente no veo cómo eso es específico de Unity. Además, sin evidencia de apoyo, parece extraño afirmar que la cláusula de no jugar es lo suficientemente grave como para ser la limitación más condenatoria del software en general, que es a lo que la pregunta original (ciertamente ahora fuera del tema) estaba tratando de llegar. A menos que la mayoría de los juegos de Unity se hayan hecho confiando en los juegos de azar como una característica central, esta respuesta se lee más como una diatriba.
Josh
4

Buena pregunta. Para mí, el mayor problema es la GUI. No me importa que esté centrado en el programador, pero me importa la horrible forma en que los objetos de la GUI son funciones en lugar de un objeto, y que el manejo de la GUI se integra en una llamada de función que se utiliza para el procesamiento y el manejo de eventos, y que no hay integración con el sistema de entrada (lo que significa que los clics en elementos de la GUI pueden interpretarse como clics en el mundo), etc.

Un problema secundario es la falta de soporte de control de versiones adecuado (principalmente porque el sistema usa el diseño del directorio como diseño del proyecto, lo que confunde el VCS cuando mueve o cambia el nombre de las cosas), pero esto puede solucionarse y no es un problema para todos.

Kylotan
fuente
Puede consultar el sistema GUI para ver si un clic fue consumido por él, y luego ignorar el clic en su código de selección de objetos del mundo. Incómodo, pero funciona.
Sean Middleditch
¿Cómo lo harías tú?
Kylotan
Hay una propiedad en el objeto del sistema de entrada para obtener la identificación del elemento "activo", que será cero si no hay ningún elemento GUI debajo del cursor. Sin embargo, olvide el nombre exacto de la propiedad, debe estar en la referencia de scripts de la unidad
Sean Middleditch