Cinco cosas buenas y cinco no tan buenas de Unity 3D

Actualizado a octubre 2021.

Actualmente preparo un curso completo de Unity que se irá emitiendo por youtube, desde los elementos iniciales a conceptos medios y avanzados. Si es de tu interés, inscríbete para estar al día de las actualizaciones. Muchas gracias.

Hoy voy a hablar de Unity 3D (aunque ahora se llama solamente Unity), y mis impresiones con esta herramienta tras tres años de uso. Es poco tiempo, pero está siendo muy intensivo, con varios juegos en 2D y 3D desarrollados. Mi página web de videojuegos se encuentra en este enlace.

Esta experiencia se basa en las versiones 2019.x a 2021.x (siendo esta la que uso actualmente). Acaba de salir la 2022.x, pero como siempre recomiendo, pasar a una versión recién salida es peligroso. Hazlo si empiezas, pero ojo con proyectos medianos o grandes ya en marcha.

Estas impresiones son mías, personales y fruto de mi experiencia con la herramienta. No pretenden sentar cátedra ni negar otras ideas o posibilidades. Unity 3D es muy potente y cada cual trabaja con la herramienta según sus gustos y procedimientos, todos ellos válidos siempre que el producto final tenga la calidad requerida en el tiempo requerido. Ese es el objetivo primario que nunca ha de olvidarse. Vamos pues.

op_folkvangr
Mi nuevo desarrollo y…
stellar_sphere_wallpaper1
…mi trabajo actual con Stellar Sphere

Mi experiencia con videojuegos

Soy informático de la vieja escuela, como suele decirse, combinando mi trabajo de desarrollador de gestión en el sector banca y seguros con los videojuegos. No llegué a tocar los Spectrum, pero sí los Amstrad CPC-464 y los Spectravideo 328, que fueron los padres del famoso MSX, reyes de los ochenta y los ocho bits. En aquellos años desarrollé varios juegos sencillos que no llegué a publicar, porque estaba en otras cosas como intentar sobrevivir y salir adelante.

Años más tarde, con la explosión de los juegos para el iPhone, me animé de nuevo, y esta vez sí saqué algunos juegos. El más importante fue AWACS Tactical Simulator, un juego de estrategia en el que había que controlar un grupo de aviones, barcos, y unidades terrestres en diferentes zonas del mundo. Éramos un equipo de cinco personas enamorados de la aviación y la estrategia. El juego era complejo, adaptado a gente fanática de la aviación, y todavía puede verse la web, vídeos, material, etc. Fue retirado recientemente por motivos técnicos, concretamente, la herramienta Cocos2D 1.01 era casi imposible de actualizar a la versión 3.0, necesaria para las últimas versiones de iOS.

Luego desarrollé un juego 2D para iOS y Android con Spritebuilder llamado Mathness (el primero, sin el 3D), un juego que combinaba matemáticas y lucha contra las malvadas letras. Era un juego sencillo, y el origen del posterior Mathness 3D.

El mundo en Unity 3D

Y aquí es donde entra Unity 3D (actualmente solo Unity). ¿Cómo llegué a esta herramienta? A través de una empresa me pidieron juegos en 2D y 3D para asistencia médica a personas con problemas neurológicos. La idea es que estos juegos especiales pudieran correr en todo tipo de plataformas, y requerían versiones 3D. Pero había otro requisito: en el futuro, poder desarrollar programas de realidad virtual (VR) para Oculus Rift, Microsoft Hololens, y otros sistemas similares.

Estuve viendo el motor Unreal, y era genial, fantástico, maravilloso, potente. Basado en C++, cualquier cosa se puede hacer con garantías de calidad. Pero tiene un problema: requiere de un equipo de personas, y yo trabajo generalmente solo, al menos como programador. No es que Unreal sea complejo, que lo es, es que no da las facilidades de Unity. Unity 3D parecía la solución, y luego además sus diseñadores comenzaron a preparar claramente para VR llegando a un acuerdo con Oculus y con Microsoft. La solución era así clara: Unity 3D.

Comencé hace dos años y medio aproximadamente a preparar esos programas médicos, y me di cuenta enseguida del enorme potencial de la herramienta, y entendí también su éxito. Porque Unity 3D es fácil de usar, yo diría que demasiado fácil, y de ahí las quejas de mucha gente que ve publicar miles de juegos absurdos hechos por aficionados. Pero Unity es mucho más que una simple plataforma de desarrollo: es un sistema eficaz para crear cualquier cosa que se te ocurra en una fracción de tiempo en relación a otros sistemas. Veamos por qué.

Unity Splash

Ventajas del uso de Unity 3D

1. Fácil de usar. Es una herramienta con la que estás creando contenido al momento. Su curva de aprendizaje para crear juegos básicos y sencillos en 2D y 3D es rápida. Naturalmente, Unity es una herramienta que requiere años de experiencia para conocerla a fondo, para obtener todo el rendimiento y posibilidades, eso nadie debe dudarlo. Pero también es cierto que conociendo el 20% de las posibilidades de la herramienta se pueden desarrollar juegos de nivel medio interesantes y divertidos, siempre claro está que la idea del juego sea buena, ese es otro tema.

2. Dos lenguajes para los scripts. En realidad eran tres, pero los más populares son Javascript y C#. Mucha gente conoce Javascript, con lo que en este caso ya tienen eso adelantado. Pero las últimas versiones trabajan con C# como lenguaje moderno y seguro. A mí me ha salvado de varios sustos que por ejemplo en C++ pueden hacerte perder una tarde o incluso un día de trabajo. Actualmente, se ha dejado de lado Javascript, por lo que es necesario trabajar con C#. Personalmente animo a todo programador de Javascript que no tenga miedo con el C#, es muy poderoso e inmensamente mejor para desarrollar aplicaciones y juegos modernos y robustos.

3. Arrastrar y soltar para referenciar y casi todo. Este aspecto es criticado por muchos, pero yo lo veo muy interesante. Consiste en que, cuando un objeto dispone de referencias a otros de forma pública, estos objetos pueden arrastrarse al primero físicamente, con lo cual se establece la referencia a ese objeto en tiempo de diseño. Cuando se ejecuta el programa, no hay que referenciar ese objeto, ya está hecho. Está bien para juegos sencillos o medianos. En juegos complejos prefiero crear las referencias en tiempo de ejecución, sobre todo si hay muchas referencias en un objeto. Eso enlentece la operación claro, pero es más cómodo. Puede usarse una combinación de técnicas, que es lo que hago yo según la situación. A veces es interesante integrar componentes en tiempo de ejecución, pero yo soy bastante dado a dejarlo todo listo y estructurado en tiempo de diseño. Como siempre, la experiencia te dará la directriz, pero creo que es un acierto. También muy interesante poder añadir los llamados “componentes” en tiempo de diseño para tener el objeto completo a nivel de edición, por ejemplo, los sonidos que va a tener, si el objeto se ve afectado por la física, si debe detectar colisiones, cómo hacerlo y el área implicada, y mucho más. Actualmente combino ambas técnicas, lo cual permite grandes posibilidades. Es genial.

4. Asset Store. Unity 3D tiene sin duda la tienda más completa de complementos para los juegos. Desde escenarios, armas, sonidos, módulos de control de cualquier cosa, y un sinfín de elementos que permiten crear juegos visualmente impactantes. Estos assets permiten rebajar en gran manera el desarrollo de un juego, y a mí y a miles de desarrolladores nos han ahorrado cientos de horas de trabajo. Ahora bien, como todo, se puede abusar. Muchos desarrolladores se bajan un asset, lo implementan cambiando cuatro cosas, y ya tienen un juego a la venta. Naturalmente esto crea dos cosas: primero, juegos muy sencillos, y segundo, juegos repetidos, si varios hacen lo mismo. Además, para aprender es mejor realizar esas funciones a mano aunque no sean tan sofisticadas, porque entonces ves cómo funcionan las cosas por dentro. Como siempre, la solución está en el equilibrio.

5. Multiplataforma. La verdad es que siempre he sido reacio a los productos “milagro multiplataforma”. He visto software anterior que generaba código para Windows y Mac, o iOS y Android, con resultados muchas veces lamentables. Unity 3D gestiona muy bien este tema, y las pruebas que he hecho hasta ahora permiten desarrollar bien en todas las plataformas. Pero atención, si un juego es gráficamente potente y muy complejo, ejecutarlo en un dispositivo móvil no va a dar el mismo resultado que con una tarjeta gráfica de PC de última generación con un Intel I7 a 3 Ghz. Este es un error en el que cae mucha gente. La herramienta es multiplataforma. El juego no siempre va a serlo, y muchas veces debes trabajar para los binomios Windows/Mac o iOS/Android.

En mi experiencia con Xbox One por ejemplo, es muy importante desarrollar el juego pensando en ahorrar toda la memoria posible. Dejar de lado gráficos sorprendentes, y usar calidades en los materiales más bajos, con menor resolución. Se sigue viendo bien en un televisor, y se ahorra mucha memoria. Más de 2048 en las texturas debería ser solo para elementos fundamentales.

Desventajas del uso de Unity 3D

No todo son ventajas claro, y aunque es una herramienta excelente, hay que tener cuidado, y entender que este tipo de software tan complejo lleva aparejado siempre cuestiones de diversos tipos. Veamos cinco.

1. Espacio ocupado por los proyectos. Los proyectos se expanden enseguida en tamaño, especialmente si se usan assets complejos o modelos 3D de alta resolución, por no hablar de sonido de alta calidad. No el ejecutable final, pero sí el proyecto. En mi caso, en un juego de complejidad media-alta, en el que conscientemente he tenido cuidado de no abusar de los assets, la carpeta ocupa 3,1 gigas en el disco. Esto es mucho, sin ninguna duda, y gestionarlo es tedioso. Cada copia de seguridad y cada operación conlleva mover literalmente miles de ficheros, porque son miles los que se almacenan. Tendemos a querer tener el mejor juego a todos los niveles, gráfico, de sonido, de opciones… Eso tiene un precio, y es el espacio ocupado.

2. Rendimiento. Unity 3D es una herramienta compleja, que simplemente estando en modo edición tiene varias tareas activas, no hablemos ya cuando se está ejecutando un programa. El ordenador se calienta, la CPU se dispara, y necesitamos tener un PC en condiciones. Es recomendable usar monitores grandes por supuesto, mejor dos que uno, pero sobre todo es recomendable que el PC esté bien ventilado, y tenga al menos 8 gigas de RAM, mejor 16, y que la CPU y la gráfica sean potentes. Esto naturalmente tiene un coste en forma de calor, y ello conlleva que el equipo esté bien diseñado en cuanto a diseño de ventilación. No es que sea una desventaja en sí, pero es el precio a pagar por querer hacer productos potentes y vistosos. El rendimiento, sin embargo, ha mejorado con las últimas versiones. Pero que nadie se engañe: hay que optimizar para conseguir un buen desarrollo.

3. Gestión de las versiones. Cuando se pasó de la versión 4 a la 5 de Unity hubo muchos quebraderos de cabeza. Muchos elementos e instrucciones quedaron como obsoletos, y a veces, si un juego es complejo, reconvertirlo es tedioso. Esto es algo que pasa con todas las herramientas, pero en Unity 3D, al tener programas complejos, lo es más. Además si un asset importante de un tercero que usamos ya no tiene mantenimiento, tendremos que readaptarlo nosotros, o cambiarlo por otro que haga una funcionalidad similar. Esto muchas veces es más fácil de decir que de hacer. Otro ejemplo de pesadilla se ha dado con la versión 5.3, que ha dejado obsoletas más instrucciones y la gestión de niveles, entre otras cosas. Mucha gente decide quedarse en versiones anteriores, pero claro, luego dejan de mantenerse y tendremos más problemas. Ahora con las versiones que se mueven por años, como Unity 2018.1, los problemas con Mac se han mejorado. Yo en todo caso recomiendo desarrollar con Windows siempre que sea posible, ya que incluso puede generar código para Mac. Eso sí, si debe ser para iOS, entonces necesitaremos un Mac para tomar el programa generado para XCode, compilarlo, y subirlo a la App Store.

4. Política de precios y costes. Entramos en un tema subjetivo, pero que crea mucha polémica. Y recientemente más por el cambio de tarifas de Unity. Este producto tiene una versión gratuita que anteriormente era bastante limitada, pero que ahora permite realizar la mayor parte de las posibilidades que otorga el producto, en todo caso suficientes para un desarrollador que se inicia con la herramienta. Pensando en indies como yo, Unity ha sacado un nuevo nivel, que admite una ventana de splash personalizada, cosa que antes no se podía, y aunque sigue saliendo el logo de Unity, al menos permite poner el logo de cada uno. Luego hay una versión profesional y otra para empresas. Las tarifas han cambiado, y ello ha provocado un alud de quejas y aplausos, y Unity ha retocado estos elementos. Para mí esto es una ventaja, pero para mucha gente es una desventaja. Como digo, muy subjetivo.

5. Invasión de juegos. Ya lo comentaba antes. Cuando hacer un juego requería de trabajo intensivo y conocimientos altos de programación, usando Objective C o C++, mucha gente se retraía de hacer juegos. Pero con Unity puedes hacer juegos sencillos en dos tardes, y quedan resultones precisamente gracias a su potencia. Claro que resultones no significa buenos, significa que se ven bien a la vista. Esto conlleva que haya un alud de juegos, y plataformas como Steam Greenlight se ven sacudidas por juegos absurdos que tapan los buenos juegos que entonces nadie ve. Todo el mundo pierde, nadie gana. Esto no es culpa del Unity directamente, pero debemos tenerlo en cuenta. Vamos a tener que demostrar que somos realmente buenos, y eso va más allá del talento y la calidad del juego. Entra en el mundo del marketing y la publicidad, para acercar el producto a la gente. Pero eso, como suele decirse, es otra historia.

En fin, esas son algunas de mis ideas, totalmente personales y subjetivas, con Unity grosso modo. Voy a seguir trabajando con mi beta. Para cualquier duda, aquí estamos. Larga vida y prosperidad.


Puedes ver  el vídeo en la imagen inferior.

Anuncio publicitario

Autor: Fenrir

Amateur writer, I like aviation, movies, beer, and a good talk about anything that concerns the human being. Current status: Deceased.

23 opiniones en “Cinco cosas buenas y cinco no tan buenas de Unity 3D”

  1. Muy interesante tu post, concuerdo contigo unity es muy facil de usar y esto atrae personas llenando los market de juegos demasiado simples(por no decir estupidos), y si unity ocupa bastante espacio enrelidad esto es un gran problema en proyectos grandes, sobre el rendimiento pues unity no exige mucho he llegado a correrlo en computadores con 1gb de RAM aunque claro tododepende del tipo de juego a desarrollar, pero si esto te parece exagerado echale un ojo a los requisitos de Unreal minimo 8gb :/, en fin saludos!!

    Me gusta

    1. Sí, es cierto que Unreal es más exigente, supongo que por el hecho de ser un producto más ambicioso y complejo que Unity. Unity tiene de bueno el equilibrio, no es sencillo pero tampoco demasiado complejo, y cualquiera puede hacer sus inventos. Realmente mucho depende del juego que se desarrolle, yo ahora tengo uno en Steam Greenlight que por sus características requiere un equipo de mediana potencia, pero eso es un poco culpa mía por supuesto. No existe la herramienta perfecta, pero para indies creo que es lo que mejor se ajusta al ideal de herramienta para todo. Gracias por tu comentario.

      Me gusta

  2. Perdón, escribí un comentario anterior pero no se si se envió…
    Resumo lo que escribí..

    Para mi lo mas importante es el rendimiento del motor, algunos dicen que Unity requiere menos máquina para correr sus juegos y Unreal un monstruo de maquina, pero después de ver en algunos videos el mismo escenario comparando el render y los FPS de Unreal y Unity, pues me queda la duda, el mismo escenario en Unity corría a 105 FPS y en Unreal a 140 … visualmente eran idénticos un 95%..

    Buen post.
    gracias.

    Me gusta

    1. Hola. El rendimiento de Unity ha cambiado mucho en los últimos meses. El rendimiento de Unity 2017.4.3 que es la versión que uso es muy bieno, en 2018.1 parece que incluso se ha mejorado. Pero no olvidemos algo muy importante: muchas veces el problema está en la gestión de la memoria y los recursos. No usar la carpeta resources excepto en casos críticos, cuidado con el tamaño de las texturas, precarga de objetos importantes, y activación de la GPU en los shaders por lo menos más importantes. Todo esto son mejoras al rendimiento, y por supuesto no crear objetos dinámicamente sino al principio, y usar un pool de objetos reutilizables cuando sea posible. Al final mucho tiene que ver el diseñador y programador en el rendimiento. Un saludo y gracias por comentar.

      Me gusta

      1. Hola, si exacto, he leído que la versión 2018 están renovando el pipeline rendering con el cual su potencia llegará a ser prácticamente igual que el de Unreal, pero aún está en progreso..

        Lo que dices de las optimizaciones, es correcto también, solo que me refería a la forma en que trabajaban internamente los motores y la forma en como gestionan la memoria. Yo en estos momentos estoy utilizando ambos motores como que aún no me decido bien, a pesar de que llevo 9 años con Unity, y conozco las bondades que tiene, quizás todo está en lo que dices en el post, hay muchos juegos en la red donde no le han puesto suficiente empeño o no le han sacado la potencia al motor y eso le da mala imagen, es casi psicológico…. Saludos!

        Le gusta a 1 persona

  3. Es un alivio encontrar a alguien que realmente sabe lo que están hablando en blogoesfera . Definitivamente, que sabes cómo llevar articulo a la luz y que sea ameno. Más peña tiene que leer esto.

    Le gusta a 1 persona

    1. Hola Fontamur, gracias por tus palabras, sin duda es una herramienta apasionante que me encanta, además que ha ido mejorando mucho en las últimas versiones, saludos cordiales.

      Me gusta

  4. Saludos . Es posible en este motor realizar un videojuego que te traslade a la historia y te deje interaccionar con personajes? La idea es que por momentos el usuario pierda control sobre el personaje y pueda ver algo parecido a una secuencia animada donde pueda conversar con otros personajes. Muy buen blog

    Le gusta a 1 persona

    1. Por supuesto se puede. Es un motor muy potente 3D y el límite es básicamente la imaginación. Si puedes imaginarlo puedes hacerlo. Gracias y saludos.

      Me gusta

  5. Hola. Ya me descargué e instalé el programa. Qué programa me recomienda para crear yo mismo objetos, casas, construcciones que después pueda importar a unity? Existe un formato específico en el que tenga que guardar estos archivos cuando tenga que cargarlos en unity? Gracias de antemano por la respuesta

    Le gusta a 1 persona

    1. Hola. Para crear tus propios objetos 3D quizás lo mejor sea Blender, porque es gratuito y porque existe una gran comunidad detrás con tutoriales y ejemplos etc. blender exporta en una variedad de formatos y el propio de Blender es compatible con Unity. Es una herramienta muy popular y que crece constantemente. Saludos.

      Me gusta

  6. Excelente post! Qué bueno que me topé con el! me aclaró algunas dudas acerca de :D. Una pregunta, hasta la fecha, ¿qué versión de Unity te parece mejor/ cuál recomendarías? Saludos!

    Me gusta

    1. Hola, me alegro que te guste el post. Para desarrollar con Unity ahora puedes optar por la versión 2019.4 que es estable y segura, o pasar a la 2020.1 que es más avanzada pero menos estable, y con menos assets compatibles de momento. Dependerá de lo que tardes en hacer el proyecto y su complejidad. Para proyectos cortos 2020.1, para proyectos más largos mejor 2019.4 porque tendrás más estabilidad al añadir más elementos. Saludos.

      Me gusta

  7. Hola
    Muy interesante la entrada. Por lo que he visto también has empezado a hacer algo con las hololens de Microsoft. Me interesa saber si has tenido la necesidad de posicionar modelos sólidos 3D sobre el objeto real bajo el concepto de realidad mixta. Es decir, que el modelo 3D se superpone al real totalmente. Para hololens existe la combinación de Unity + Vuforia engine. ¿Sabes si existe algún SDK similar a vuforia engine que me permita hacer object target con tracking como alternativa?

    Le gusta a 1 persona

    1. Hola, efectivamente colocar objetos virtuales sobre reales se consigue mediante la lectura de posicionamiento de planos, algo que ha ido mejorando en los últimos tiempos. Vuforia ha quedado un poco de lado para Unity, ahora hay dos plataformas: AR Foundation y Mars, la primera gratuita, la segunda más potente de pago. Te pego el enlace con la info: https://blogs.unity3d.com/es/2020/05/11/how-ar-foundation-and-mars-work-together-to-enable-interactive-multiplatform-ar-experiences/

      Me gusta

Comentarios cerrados.

A %d blogueros les gusta esto: