He trabajado durante algún tiempo con Unity3d y encontré que su parte 2D con OnGUI () o GUITextures es demasiado torpe. Además, incluso un juego más pequeño hecho en Unity3d tiene una descarga de al menos 10 MB, lo que es demasiado para un juego 2D.
Entonces, actualmente estoy buscando un motor para 2D. Intenté Cocos2D pero es solo iOS y no me gustaría volver a escribir todo en otro idioma para Android (por lo tanto, por ejemplo, el puerto Java de Cocos2d para Android no es una opción). En cambio, quiero escribir el código una vez y, sin problemas, implementarlo en iOS, Android y posiblemente en Windows Phone 7. Tengo Mac y Windows.
Para ser más detallados, aquí están mis requisitos para el motor:
- debe ser multiplataforma
- debe ser eficiente
- debe ser C ++, Java, C # u Objective C ya que me siento cómodo con ellos y NO Flash, Javascript, HTML5 ya que no soy desarrollador web
- debe tener una gran comunidad, tutoriales, bibliotecas adicionales que cubran la mayoría de las cosas que tendría al desarrollar directamente en iOS o Android (facturación en la aplicación, Facebook, etc.)
- el paquete final entregado no debe ser demasiado grande
- el motor puede ser gratuito, pero tampoco me importaría pagar un precio razonable
He encontrado los siguientes motores:
- Marmalade (y el motor IwGame encima) - C ++, encontró críticas generales muy positivas de Marmalade pero no estoy seguro acerca de IwGame. EDITAR (marzo de 2013) : Parece que Marmalade SDK ahora incluye Cocos2Dx y algunos IDE integrados que lo hacen mucho mejor (y cuesta $ 150 por año para desarrolladores independientes, lo cual está bien para mí).
- Corona SDK - Lua (eficiencia dudosa), también necesita conexión a Internet para compilar código
- Cocos2d-x - C ++, recibió muchas críticas de los desarrolladores, en su mayoría positivas y muchos piensan que es lo mejor para 2D
- Código de partícula - Java + Eclipse, no se encontraron reseñas ni comentarios
- Moai - Lua, no pude encontrar ninguna opinión
- Motor mono : parece tener muy pocas características
- Haxenme : es Flash, nunca lo he usado y no quiero
- use Unity3d pero con paquetes 2D como 2D Toolkit
- puertos de SDL a Android (también aquí ) e iOS : no parece tener mucho soporte o desarrollo actual (?)
- GLBasic - Lenguaje básico, no me gusta
- playN - parece estar temprano en el desarrollo (?)
- Gamvas - HTML5, no me parece un motor maduro
- Ignifuga - Python, tampoco parece maduro
- ORX : no estoy seguro si todavía está desarrollado (?)
- Constructo 2 : recuerda GameMaker, podría estar bien para prototipos rápidos pero definitivamente no para juegos de nivel industrial
- XNA y luego portar el juego usando ExEn (necesitaría Mono Touch para portar a iOS y Mono para Android a portar a Android) - C #, y probablemente esté más pensado para personas que vienen de productos de Microsoft como xBox (vengo de Android). Además, esas herramientas Mono cuestan $ 800 en total para pequeños desarrolladores
- Impacto : JavaScript, utiliza HTML5. No estoy muy interesado en JavaScript (por ejemplo, C # preferido en Unity3d), tampoco estoy seguro de la eficiencia ya que se ejecuta en el navegador (?)
- GameMaker : lenguaje de scripting propio GML y de hecho recuerdo este como una herramienta para no programadores. ¿Se ha convertido realmente en un motor real, quiero decir para un desarrollo serio?
- AppGameKit - C ++, aunque parece ser bastante nuevo. No he encontrado ninguna crítica
- use Cocos2D y Objective C para desarrollar solo para iOS y luego haga un APK para Android con Stella SDK . ¿Alguien ha hecho esto? Estoy bastante seguro de que habrá limitaciones, y ¿qué hay de la facturación en la aplicación de Google, la integración de AdMob y Facebook en Android?
- Moscrif - JavaScript, parece que es más para ex desarrolladores web
- Starling - Flash 11, no estoy muy interesado en Flash
- ND2D : aún no es 1.0, ¿tiene muchas características?
Por lo tanto, me encantaría que pudieras comentar tus experiencias con los motores y sugerir cuál en la lista (o cualquier otra cosa que me haya perdido) es la mejor para los requisitos descritos. También puedo estar equivocado con mis primeras impresiones sobre algunos de los motores.
Actualmente estoy pensando en Marmalade + IwGame como la mejor opción, pero como no tengo mucha información sobre Cocos2d-x y el código de partículas, no estoy muy seguro de eso.
¡Gracias!
EDITAR (junio de 2013): Hasta ahora hice 2 juegos 2D multiplataforma y usé Unity3D con el complemento 2D Toolkit para ambos. Para el juego con GUI simple, utilicé un sistema GUI simple hecho a sí mismo basado en el propio Unity. Para uno más complejo (por ejemplo, donde los elementos de la GUI pueden superponerse) utilicé el complemento NGUI. Recientemente, 2D Toolkit agregó algunas clases más para GUI, lo cual es muy útil ya que uno tenía que usar 2 sistemas diferentes para atlas de texturas al combinar NGUI con 2D Toolkit. Definitivamente lo intentaré en el próximo juego 2D. La razón principal para elegir Unity3D para juegos 2D fue que ya estaba profundamente inmerso en Unity3D tanto en términos de experiencia como de fragmentos de código acumulados para su reutilización. Además, compré Unity3D pro (con Android Pro e iOS Pro) para juegos en 3D y tenía sentido pagar solo $ 60 adicionales por el Kit de herramientas 2D para obtener juegos 2D también cubiertos. Hasta ahora no Lamento mi decisión, parece haber sido óptima para mi caso. Lo único que me dio dolor de cabeza fue agregar funciones sociales con los complementos de Prime31 (complementos sociales de Android e iOS), pero supongo que sus errores no son culpa de Prime31 sino de Twitter / Facebook, por lo que probablemente vería los mismos errores en cualquier otro motor o complemento.
EDITAR (enero de 2014) : supongo que con Unity 4.3 la respuesta a mi pregunta es bastante obvia ahora: el nuevo sistema de sprites de Unity y tal vez también 2DToolkit superaron por completo cualquier otra cosa, especialmente para las personas que (como yo) han estado en Unity por un tiempo y compró la versión Pro con complementos.