¿Desarrollar con Unity es mejor que desarrollar juegos de forma nativa en iOS?

La única forma en que me involucraría con alguien que escribe juegos nativos es si tuvieran una razón extremadamente convincente y estuviéramos dispuestos a pagar significativamente más dinero.

Habiendo escrito un montón de envoltorios nativos de iOS, puedo decirte que hay un mundo de dolor cada año cuando Apple decide lanzar una nueva versión de iOS. Y xcode.

Sus máquinas de construcción no lo harán. Demonios, tengo problemas de compilación de Jenkins con Unity en un iOS más nuevo. Las cadenas de herramientas son CARAS y requieren tiempo y conocimiento especializado para construir y mantener. Espere pasar semanas o meses arreglando todo su código roto. Y esto no entra en la nueva versión de Maya o Photoshop o tener que reescribir su renderizador porque Vulkan es el nuevo atractivo y lo necesita.

Pasas más tiempo trabajando en aplicaciones nativas y menos tiempo trabajando en juegos. Si quisiera pasar tiempo haciendo esas cosas, no estaría en los juegos. Esa es la misma razón por la que generalmente no contrato personas que crean aplicaciones nativas y no tienen una razón extremadamente convincente. Tienden a ser ninjas que escriben código imposible de mantener mientras persiguen la última publicación del blog.

El desarrollo del juego es difícil. He trabajado con personas extremadamente talentosas en grandes equipos de contribuyentes individuales muy experimentados (promedio de 12 años de desarrollo de juegos) y todavía tenía proyectos que colapsan y se queman. Todas las historias de un grupo aleatorio de personas que lanzaron un juego y ganaron millones son literalmente el ejemplo 1: 1,000,00.

Si valoras tu tiempo y te apasiona realmente hacer juegos, aprovecha todo lo que puedas para que tengas más tiempo haciendo y menos tiempo perdido.

Habiendo hecho ambos. Creo que el camino de la Unidad tiene más que recomendarlo.

Las API de Apple, en general, son buenas para una amplia selección de aplicaciones de uso general. Pero en términos de juego puro, hay una serie de problemas.

SceneKit es débilmente compatible y presenta características pobres. Intenté un par de cosas y descubrí rápidamente que SceneKit no permite el nivel de acceso que necesitaba. Hay tan pocas personas que lo usan para el desarrollo de juegos que encontrar soporte o superar problemas es muy difícil. Haga una pregunta en un foro y espere a que pase la planta rodadora.

Un juego típico podría tener elementos 3D y elementos de usuario 2D. Entonces, con las API de Apple, esto sería SceneKit y SpriteKit. Las dos API son similares pero no muy similares. Trabajan de diferentes maneras. Usa metáforas ligeramente diferentes.

Apple agrega algunas características similares a Unity cada año, pero parece ser una tarea ingrata.

En comparación, la Unidad es …

  • Más consistente en todo momento. Con un gráfico de escena 2d / 3d consistente. Y un modelo de objeto / componente bien ejecutado.
  • Hay un editor de escenas apto para su propósito. Y puede ejecutar su propio código en el editor para crear sus propias herramientas.
  • La unidad es mucho más rica en funciones. Ofreciendo soluciones para animación, serialización, personajes, máquinas de estado, postprocesamiento.
  • Existe esta gigantesca biblioteca de complementos que puede comprar. Paquetes de texturas, generadores de escenas,

Lo único que realmente no me gusta en Unity es el lenguaje C #. Creo que Swift es más rápido, más consistente y más fácil de hacer nuevas abstracciones.

Si tuviéramos que comparar el desarrollo de un juego entre un desarrollador nativo de Apple con experiencia y un desarrollador de Unity con experiencia, el desarrollador de Unity llegaría al código de juego jugable más rápido, con menos problemas.

La ruta de Unity le permite al desarrollador llegar más rápido a la “creación de contenido del juego”. Mientras que el desarrollador de Apple tendría que invertir más tiempo en hacer que las cosas funcionen.

Tenga en cuenta que ni siquiera he mencionado las cosas multiplataforma.

Más o menos, sí. Voy a responder la pregunta en todo el espectro de dispositivos móviles, incluido Android en mente.

Las aplicaciones nativas son buenas. Pero no están enfocados especialmente para el desarrollo de juegos. Unity se centra en el desarrollo de juegos, es decir, tiene herramientas increíbles solo para crear juegos. Es un primer programa de juegos.

Nativamente puedes desarrollar juegos, pero tendrás que comenzar desde cero. Que la mayoría de las herramientas y bibliotecas proporcionadas por la unidad que son esenciales para el desarrollo de cualquier juego, tendrá que escribir usted mismo. Escribir código usted mismo puede conducir a errores desconocidos. Adivina cómo vas a hacer una cámara en un juego en 3D. Yo mismo hice uno y creo que es bastante largo y requiere un conocimiento práctico de trigonometría. Deje la cámara a un lado, ¿cómo va a renderizar archivos obj en 3D? Los juegos 2D son aún más fáciles en nativo, pero aún necesitarías muchos conocimientos y experiencia.

Ahí es donde entran en juego los motores de juego como la unidad. Han hecho la parte difícil y te dejan concentrarte en el desarrollo del juego.

He escrito los puertos Android e iOS de mis juegos como aplicaciones nativas, y esta fue definitivamente la parte más (y única) de su desarrollo, incluso si solo requería una pequeña adición de partes específicas del sistema operativo. Mis juegos usan SDL, y se compilan y funcionan sin mayores problemas en Linux, Windows, OSX, en línea y en algunas plataformas exóticas, pero Android e iOS son fuentes constantes de problemas. (Especialmente Android: prefiero Android como usuario en general, pero desarrollarlo es un IME más molesto). Odio cómo tanto Android como iOS crearon originalmente sus propios procesos de desarrollo en lugar de permitir que los programas portátiles se compilen y ejecuten sin problemas. .

Por lo tanto, si es posible que los porte a otras plataformas, recomendaría enfáticamente no desarrollar de forma nativa y usar algo portátil en su lugar. Si esto debería ser Unity, depende del juego: hoy en día SDL2 funciona con Android, iOS y algunas plataformas exóticas que Unity no admite, y es más aplicable para algunos tipos de juegos debido a su ligereza, por lo que preferiría prueba SDL2.

Yo diría que sí. La unidad es multiplataforma. Eso significa que puede escribir una vez e implementar en todas partes. Confía en mí, solo iOS, es una mala mala elección.

Tiene las herramientas para hacer casi todo en Unity, si lo usa correctamente . Escribes para iOS, ¿entonces qué? Portar a otras plataformas necesitaría tiempo .

Pero en Unity, podrías hacer algunos pequeños cambios y subir tu juego a la mayoría de las plataformas: Mac / Linux / Windows, iOS, Android, incluso consolas.

La unidad es simplemente superior. Úselo correctamente y recuperará muchas cosas.

“¿Desarrollar con Unity es mejor que desarrollar juegos de forma nativa en iOS?”

Si no talvez.

Mejor como?

Hay muchas formas en que uno podría ser mejor que el otro. Sin saber qué criterios quieres comparar, es una pregunta inútil. Todas las respuestas anteriores son ciertas para diferentes aspectos del desarrollo.

Personalmente, prefiero mucho Unity y nunca desarrollaría un juego de forma nativa en iOS. Hay otras plataformas por ahí que son mercados enormes y creo que hacer todo el trabajo para hacer un juego que esté encerrado en un solo mercado es completamente idiota.

Eso no es realmente un argumento específico de Unity, es un argumento multiplataforma vs plataforma única.

Hacer juegos es un trabajo duro, volver a hacer todo el juego en un idioma y una herramienta diferentes porque la gente lo quiere, pero lo implementó con herramientas nativas de plataforma única es simplemente tonto.