jueves, 19 de marzo de 2015

Unreal Engine 4 VS Unity3D 5

De un día para otro, además literalmente, ha salido Unreal Engine 4 de manera gratuita para todos y además la esperada versión 5 de Unity3D, ahora bien, ¿Cual es mejor? ¿Cual de los dos tiene mas potencial? ¿Cual es mas rápido a la hora de desarrollar? Vamos a analizar esto paso a paso.


He de decir que, mi visión puede no ser totalmente acertada y recomiendo encarecidamente que cada uno haga sus propias pruebas y saque sus propias conclusiones, pero no está de más tener en cuenta la opinión de los demás, en este caso, de alguien que se dedica a programar con Unity3D y desde el punto de vista de esta plataforma principalmente, busco las carencias y las ventajas de Unreal Engine.

En primer lugar diré que en cuanto ha salido Unreal Engine de manera gratuita me lo he descargado e instalado, pensaba dedicarle una entrada al mismo, pero al día siguiente salió Unity 5 y es la mejor oportunidad para comparar.

Empecemos, ¿Para qué plataforma están?
Para empezar que menos que la instalación de ambos entornos de desarrollo, ambos se encuentran para Windows y OS X dejando una vez mas de lado a Linux, debatiendo esto con otros desarrolladores llegamos a la conclusión de que seguramente no es por no sacarlo en Linux, si no que, sacarlo en OS X es simplemente por poder desarrollar para iOS ya que necesitamos xCode para compilar, de manera que, en igualdad de condiciones en este aspecto, los mismos sistemas operativos para cada uno y el espacio hoy día no lo consideraría relevante, ya que todos hoy día, en especial para desarrollar tenemos discos duros de 500GB en adelante y es absurdo preocuparse por un GB arriba o uno abajo en lo que al entorno de desarrollo se refiere.


Documentación
En este caso, Unity3D me ha gustado muchísimo siempre, una web con ejemplos y explicando cada una de las clases que ellos han creado y las que no, las puedes encontrar en el MSDN de Microsoft el cual contiene todo lo referente a C#, por otro lado tenemos a Unreal Engine con C++, que la documentación al respecto, ya sea para Unreal o la propia del lenguaje es muy amplia y fácil de encontrar y daré un punto a favor muy grande a Unreal Engine simplemente por haber facilitado un tutorial para usuarios de Unity el cual anticipo que traduciré y adaptaré un poco para a la vez que aprendo, enseñar aquí lo aprendido.

Desarrollo
Siento decir que seguramente aquí, no puedo ser del todo objetivo ya que estoy acostumbrado a una plataforma y el proceso de adaptación siempre es tedioso por estar acostumbrado a tener las herramientas ubicadas en otro sitio o facilidades que el otro entorno no dispone o al menos no a primera vista, así que realmente en la fluidez de trabajo no puedo hacer aún una comparativa a fondo pero si quiero aclarar un par de puntos a favor de cada uno bastante obvios.

En el caso de Unity3D, C# es mucho mas sencillo que C++ ya que dispone de ciertas librerías que te facilitan muchísimo la labor de la programación y al menos a mi parecer, también es mas rápido de programar, sobretodo si lo hacemos a base de scripting.

Por el lado opuesto tenemos otra gran evidencia que da un gran punto a Unreal Engine y es que, aunque tardes más en hacer el desarrollo, es mas óptimo, gasta menos recursos y a la vez al ser una capa por debajo, siempre habrán ciertas cosas que podremos hacer mas fácilmente que en Unity3D.

También tenemos Blueprint en el lado de Unreal que, quizás podamos enconrar un plugin externo en Unity parecido llamado PlayMaker, el cual es de pago aunque ya tiene una versión gratuita, si bien no soy muy partidario de estas herramientas, para una persona que no se lleve muy bien con la programación o que esté empezando, quizás le pueda servir de ayuda.

En este caso, lo dejaré en un empate aunque he de decir que superar la curva de aprendizaje de Unity3D es realmente difícil a mi parecer al menos ya que es asombrosamente rápida, no obstante, Unreal nos facilita un grandioso tutorial para aprender a usarlo como si fuese Unity3D.

Economía
He de decir que esta parte, por lo general suele ser la mas importante ya que nadie vive del aire y evidentemente cuanto más nos ahorremos mejor.

En mi opinión el ganador está clarísimo pero quizás no todos lo vean tan claro.

Para empezar diremos que, Unity3D sigue teniendo una licencia de pago y otra gratuita, que en el caso de usar la gratuita, si llegas a ganar 100.000$ debes pagar la licencia pro, y en el caso de la pro, también tenemos subpagos si además queremos Android, iOS, Videoconsolas... además destacar que nos deja o comprar la licencia de un solo golpe (1500€) o pagar cuotas mensuales como un alquiler, el cual cuando se actualice no nos hará falta comprar ninguna licencia ya que pagamos mensualmente, en cambio si pagamos la licencia total, sería en este caso para Unity3D 5, y al salir el 6, no tendríamos versión de pago.

Unreal Engine por otro lado ha hechado toda la leña al fuego y directamente será gratuito PERO, al ganar 3.000€ o más de benefício ellos se llevarán un 5% de lo que ganes.

En principio no suena nada mal, de hecho yo mismo me he visto bastante atraido por la idea, pero ahora pensemos en el caso de una desarrolladora no indie, una de las grandes que gana al día mucho más de lo que nosotros aspiramos al año, por ejemplo clash of clans, un juego para dispositivos móviles, se filtró la ganancia que tuvo en un solo día y fueron mas de cinco millones de dolares, de los cuales si le quitamos un 5% es mucho, pero muchísimo más que los 1500€ que deberíamos pagar por Unity3D o por los pagos mensuales de Unity3D en definitiva.

Por supuesto por una apuesta indie está genial, porque si un mes no ganas mucho, no te repercutirá tanto en tus ganancias tener que pagar a Unreal y a su vez, si ganas simplemente, lo suficiente para subsistir, tampoco es un pago excesivamente grande, ya que en el caso de ganar 1000€ al mes, (no discutiremos que ganancia sería apropiada y menos con las cuotas de autónomo en España, eso es otro tema de amplio debate) dar 50€ a Unreal significa mucho menos que lo que deberías pagar mensualmente a Unity3D por su licencia Pro.

Así que en el caso de ser Indie yo si apostaría por Unreal Engine, pero a nivel económico quizás a la larga o para una gran empresa, puede salir mucho mas rentable Unity3D.

En definitiva
Es muy difícil destacar una de las dos herramientas bajo mi punto de vista, quizás una sea mas rápida, otra te permita hacer cosas mas potentes, pero sin duda, ambas son muy buenas herramientas y desde luego, no voy a negarme a usar ninguna de las dos ya que me parecen muy potentes y una buena práctica, quizás destacaría el lado económico ya que a todos nos gusta comer y queremos ser recompensados por lo que hacemos, a nivel profesional quizás lo más importante tristemente, sea lo económico lo que dicte nuestro camino, por supuesto si lo hacemos por gusto somos libres de hacer lo que nos entre en gana sin tener que mirar por nuestro bolsillo, que al final, hace que los videojuegos transmitan el más puro sentimiento que queríamos transmitir con el.

Por último decir que mañana a las 17:00 empieza la Familiar Game Jam, a los que vayáis nos veremos allí, a los que no, ya el domingo espero poder contar un poco la experiencia antes de irme a dormir.

30 comentarios:

  1. Está muy bueno el post! Si me permitís agregar una opinión personal, me parece que Unreal Engine es más "violento" que Unity. Con ambos se pueden hacer grandes cosas, pero creo que Unity es algo más práctico para mobile, mientras que con Unreal.. bueno... Mortal Kombat X jaja estaría bueno que agregues, cuáles son los juegos más conocidos hechos con cada engine... solo para ilustrar un poco y conocer el potencial. Gracias por la infor! Abrazo grande desde Argentina!

    ResponderEliminar
    Respuestas
    1. Bueno, el tipo de juego que se haga con el motor, creo que no está directamente relacionado con el motor en si, con Unity3D se podría hacer un Mortal Kombat, al igual que con Unreal un juego para móvil, por otro lado me apunto para mas adelante comentar los videojuegos mas conocidos hechos con dichos motores, ¡Gracias y un gran abrazo desde el otro lado del charco! ;)

      Eliminar
  2. Soy aficionado a unity 3D y he tocado algo unreal (creo que este último es más potente) .
    ¿donde puedo encontrar ese grandioso tutorial de unreal, para desarrolladores de unity? Gracias.

    de paso dejo un enlace de interés para tanto para unity como enreal o cry engine.

    http://forum.cgpersia.com/plugins-unicrydk/

    ResponderEliminar
    Respuestas
    1. Ciertamente he dejado en el tintero ese tutorial, intentaré publicarlo pronto.

      ¡Gracias por tu aporte!

      Eliminar
  3. es mejor Unreal engine, mayores gráficos y jugabilidad

    ResponderEliminar
    Respuestas
    1. La calidad gráfica y la jugabilidad la aportas tu como modelador 3D y programador respectivamente, lo que si es cierto es que tiene mejor soporte para cargas pesadas de 3D respecto a Unity3D, pero poco a poco Unity3D está empezando a hacerle sombra.

      ¡Ya veremos que nos depara el futuro!

      Eliminar
    2. ¿Jugabilidad? ¿Que tiene que ver eso con un engine? La jugabilidad es mala si el juego esta mal diseñado/programado el motor no tiene nada que ver. Hay juegos hechos en javascript con una jugabilidad brutal.
      En cuanto a la calidad grafica, la ultima version de Unity no tiene nada que envidiar al Unreal. De hecho ilumina mejor que Unreal. Aunque unreal maneja mejor cargas pesadas de graficos.

      Eliminar
    3. Una comparacion http://not-lonely.com/blog/making-of/unity-ue-comparison/

      Eliminar
  4. Me ha gustado el post, muy útil, sólo dos comentarios, creo que te has olvidado de una parte muy importante de Unreal Engine, y es que el código fuente también es gratuito y está disponible para descarga, lo cual es un punto a su favor muy grande. Por otro lado, en la parte económica estoy en parte contigo, Unity en principio suena muy bien, pero creo que los 1500€ que hay que pagar en Unity son por plataforma, lo cual es, a priori, más difícil de amortizar, mientras que Unreal es "gratis" en todas. En cuanto a Blueprints, por lo que he leído y probado lo bueno que tiene es que puedes desarrollar un juego de manera rápida, hacer un testing para ver donde hay cuellos de botella, y para cada función Blueprint existe una función C++ que funciona 10 veces mas rápido que la de Blueprints.

    Y lo dicho, gracias por el aporte.

    ResponderEliminar
    Respuestas
    1. ¡Gracias a ti por tu aportación!

      Creo que el código fuente es algo a favor siempre y cuando vayas a necesitarlo, es decir, es bueno saber con qué estás desarrollando, pero normalmente no debería hacerte falta, salvo cosas excepcionalmente puntuales no necesitas mas que saber como usarlo, no como funciona por dentro, pero desde luego, saber como funciona internamente te hará saber como darle un uso mas correcto, pero es algo que comunmente (Por desgracia) no se suele hacer...

      Hay que tener en cuenta también que esas licencias de Unity3D no vas a comprarlas todas, no creo que saques el mismo juego en Android y en Windows por ejemplo, podría ser, pero una vez mas, no es el caso mas común, pero desde luego es algo que no he añadido, muy bien visto.

      Respecto a Blueprints, el equivalente en Unity3D sería usar UnityScript, que tiene el mismo problema que Blueprints en cuanto a los cuello de botella.

      Muchas gracias por tu aportación.

      Eliminar
  5. Un punto fuerte de unreal: es de codigo abierto, uno puede modificarlo, ademas por este mismo punto de ser "abierto", y para mi sorpresa si esta para linux (basta bajarlo ejecutarlo y esperar que se intale).
    Otro punto fuerte de unreal: unity necesita compilar y luego "exporta" lo compilado (utiliza algo como una capa de compativilidad de su mismo motor).
    Unreal en cambio compila con librerias nativas de cada sistema dando un paquete ya ejecutable (o en caso de dispositivos) o instalables.

    Sinceramente me gusta más unreal, aún así la politica de unreal es mejor que la de unity, porque no pide que pagues, y luego arreglate con el motor, sino mas bien te dejan "arreglarte con su motor", que vendas trabajes y luego donas lo apropiado de acuerdo a tu ganancia...
    En fin unreal me parece mejor, igual estoy evaluando otras alternativas menos comerciales para comenzar... como un pequeño motor 2D y 3D llamado GODOT engine www.godotengine.org/projects/godot-engine aunque es muy nuevo y quizas no tiene muchas funciones que estos dos grandes motores tienen es una alternativa interesante a probar (se programa con python que es un lenguaje super sensillo)

    ResponderEliminar
    Respuestas
    1. Muchas gracias por tu aporte, como expliqué en otro comentario, el ser de código abierto tiene una clara ventaja, pero no se suele usar comunmente, aunque debería ser así y lo apoyo totalmente.

      Por otro lado, el tema de Linux es algo que en Unity están haciendo, juraría que vi una alpha por internet.

      En cuanto a GODOT, tengo muchas ganas de probarlo, en cuanto tenga mas tiempo espero poder dedicarle algún tutorial en esta web.

      Como dato añadido, en GODOT puedes programar en alto nivel en python y en mas bajo nivel para procesos mas complejos en C++.

      ¡Muchas gracias por comentar!

      Eliminar
  6. A esta altura ya salio una version alfa de unity 3d para linux y el unreal se compila desde fuente y no es muy complicado de instalar para linux. Siempre di prioridad a la velocidad y claramente c++ es mas rapido que C#, la unica ventaja real que veo de unity es para juegos 2d que tiene menues especificos a diferencia de unreal, en cuanto a lo demas me quedo con unreal.

    ResponderEliminar
    Respuestas
    1. Si, unreal tiene mas potencial, es indudable, pero hay que tener en cuenta una cosa y es que no siempre necesitas exprimir el 100% de ese potencial, y en ese caso, si con otro motor (sea Unity3D u otro cualquiera) lo puedes desarrollar mas rápido o mas sencillo, ¿Por qué no?

      Por supuesto, si estás acostumbrado a desarrollar con Unreal y te sientes cómodo con ese motor, ¿Por qué usar otro?

      Eliminar
  7. Soy programador analista y estoy interesado en comenzar con el desarrollo de videojuegos (estoy harto de las aplicaciones empresariales), me da gusto encontrar información sobre ambas plataformas, tengo un proyecto y no sabia cual usar pero con esto, creo que me ire por unreal, aunque soy mas bueno usando C#, me gusta la forma de pago del engine, Unreal te deja un porcentaje fijo y sinceramente no creo alcanzar cifras multimillonarias con mi primer proyecto y me gustaría mejorar mis habilidades con C++ :)

    ResponderEliminar
    Respuestas
    1. En ese caso yo te aconsejo probar Unity3D ya que tienes una versión gratuita en la que hasta que no ganes bastante dinero no tendrás que pagar la licencia y creeme, si ganas esa cantidad de dinero comprarías gustoso esa licencia.

      Por supuesto si quieres mejorar tus habilidades con C++, es la escusa perfecta para probar Unreal.

      ¡Mucha suerte en tu proyecto!

      Eliminar
  8. Hola! Espero no llegar tarde :)

    Mis dudas en cuanto uno u otro, vienen más del lado de la carga en red que puedan soportar. No tanto el tema gráfico, ya que para mi proyecto no necesito unos grandes requisitos pero sí una buena respuesta cuando se juega en red. Por supuesto que esto dependerá muy mucho de la programación de lado servidor, pero estoy seguro que debe haber alguna diferencia de rendimiento entre estos dos grandes engines.

    Un saludo!

    ResponderEliminar
    Respuestas
    1. hola, buenas noches, ys que nombraste la red, cualquier motor ahorita es una buena opcion, unity es un gran motor pero los 1500 dolares espentan a algunos clientes como ami, unreal hace lo mismo, y es mas economico, pero si quieres algo mas simple, pero potente en el 2d, usa game maker o cocos2d, son exelnetes

      Eliminar
  9. Gracias a todos por sus aportes, creo que ambos motores tienen un gran potencial, al menos eso he visto en los reviews generales; sinembargo no he encontrado algo que te hable acerca de como es su comportamiento con los modelos 3d, es decir al importar un modelo originalmente realizado en maya, ¿Cuál se comporta mejor?, cuál deja nuestros modelos más exactos, cuál de estos me permite modelamiendo en tiempo real gastando menos recursos; aunque soy ingeniero programadador, tengo experiencia con renderización a nivel de arquitectura. A la hora de compilar nuestro juego , ¿Cuál de estos dos exigirá menos recursos de máquina enfrentandolo por ejemplo contra la calidad?.

    Les agradezco y muy buen foro.

    ResponderEliminar
  10. Buen día, gracias por el articulo. Para un principiante de C# y C++ cual de los dos lenguajes seria mas fácil de aprender?.
    Gracias.

    ResponderEliminar
  11. Que buen post los felicito a todos mientras mas informacion uno tenga mejor pero muy claras las explicaiones fenomenal

    ResponderEliminar
  12. Hola, yo quiero comentar, que hago desarrollos interactivos con unity para exportarlos en HTML5 y que se vean desde un navegador. Son desarrollos sencillos, pero el problema de UNREAL es que una escena simple, con un suelo, 2 cajas y un personaje, al exportarlo en HTML5 pesa mínimo 500 MB, mientras que con Unity lo mismo serán 8 0 10 Mb.

    Ese es el problema que tengo con Unreal.

    ¿Que opinan?

    ResponderEliminar
  13. Felicitar al que escribio este post, muy buen aporte hermano, saludos.

    ResponderEliminar
  14. Como aporte, desde mi experiencia con ambos motores, me gustaría añadir que ninguno de los dos es mejor que el otro, sólo depende de lo que quieras hacer.

    Para alguien que está empezando o para alguien interesado en desarrollos para móvil, sin duda Unity es la mejor opción. El manejo del motor es mucho más sencillo e intuitivo, la comunidad de desarrolladores y cantidad de recursos para aprender es brutal, y además, puedes encontrar miles de assets ya hechos que te ayudan mucho con el desarrollo, permitiendo sacar juegos mucho más rápido.

    El problema de Unity llega cuando quieres hacer algo más grande que un juego para móvil, con grandes escenarios, cientos de modelos, mundo abierto, etc. Ahí es cuando este motor flaquea muy seriamente. Cada pequeño cambio en la escena requiere de horas de cálculo de iluminación, y hasta que no termina este cálculo (si es que termina, porque a veces queda colgado), no ves cómo está quedando realmente. Esta cuestión es crucial y hace que usar Unity para un gran proyecto sea extremadamente lento, lo que lo hace prácticamente inviable. Ahí es cuendo entra Unreal, mucho más robusto manejando grandes escenarios y claramente pensado para grandes proyectos, eso sí, con una curva de aprendizaje mucho mayor.

    Quizá, en un futuro, Unity solucione sus problemas con la iluminación de grandes escenarios. Si esto ocurre algún día, no habrá duda y será con diferencia el mejor motor del mercado, pero de momento no es así.

    Sólo hay que ver lo que hay en las distintas stores. La mayoría de juegos de móvil, incluso los hechos por grandes empresas, usan Unity (aunque hay algunos hecho con unreal, no es lo normal). La mayoría de juegos de Steam usan Unreal (aunque hay algunos hechos con Unity, no es lo normal). Esto lo dice todo.

    ResponderEliminar
    Respuestas
    1. Es como lo has dicho, en Unity puedes hacerte un juego AAA.. pero es complejo en el sentido que es lento el desarrollo por los lightmaps, y hay otro factor, los juegos AAA en unity requieren mas máquina que los hechos en unreal.. porque unity viene mas optimizado para juegos mas livianos o sin tanto detalle.... a cambio de eso.. es muy facil y entretenido usarlo..

      Eliminar
  15. a mi opinion, MI OPINION, me gusta mas unity

    ResponderEliminar
  16. Visualmente ambos consiguen lo mismo hoy en dia...
    en ambos puedes hacer un resident evil 7, la verdadera diferencia puede estar en el rendimiento del proyecto compilado...

    Supongamos que se ha hecho un Mortal Kombat X en Unity y otro en Unreal, y ambos lucen exactamente igual, iluminacion global, buenos shaders, buenos efectos post-processing... si llevamos estas dos compilaciones a la misma máquina, notaremos que el Mortal Kombat de Unity corre mas lento que el de Unreal.. Esto quiere decir que Unreal optimiza mas el proyecto ya que Unity utiliza Mono C# el cual es algo mas lento ya que esta un nivel superior al lenguaje nativo de C++. a cambio de esta lentitud, programar un juego en c# es mucho mas facil.

    ResponderEliminar