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?
Respuestas:
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.
fuente
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 ...
fuente
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 ...
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.
fuente
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).
fuente
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.
fuente
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.
fuente