Eu trabalhei por algum tempo com o Unity3d e achei a parte 2D com OnGUI () ou GUITextures muito desajeitada. Além disso, mesmo um jogo menor feito no Unity3d tem pelo menos 10 MB de download, o que é demais para um jogo 2D.
Atualmente, estou procurando um mecanismo para 2D. Eu tentei o Cocos2D, mas é apenas para iOS e não gostaria de reescrever tudo em outro idioma para Android (por exemplo, a porta Java do Cocos2d para Android não é uma opção). Em vez disso, quero escrever o código uma vez e, com menos problemas, implantá-lo no iOS, Android e possivelmente no Windows Phone 7. Eu tenho o Mac e o Windows.
Apenas para ser mais detalhado, eis os meus requisitos para o mecanismo:
- deve ser multiplataforma
- deve ser eficiente
- deve ser C ++, Java, C # ou Objective C, pois estou confortável com eles e NÃO Flash, Javascript, HTML5, pois não sou desenvolvedor web
- deve ter uma grande comunidade, tutoriais, bibliotecas adicionais que cubram a maioria das coisas que você teria ao desenvolver diretamente no iOS ou Android (cobrança no aplicativo, facebook etc.)
- o pacote final entregue não deve ser muito grande
- o motor pode ser gratuito, mas eu também não me importaria de pagar um preço razoável
Encontrei os seguintes mecanismos:
- Marmalade (e o mecanismo IwGame em cima) - C ++, encontrou resenhas muito positivas do Marmalade, mas não tenho certeza sobre o IwGame. EDIT (março de 2013) : Parece que o Marmalade SDK agora inclui o Cocos2Dx e algum IDE embutido, o que o torna muito melhor (e custa US $ 150 por ano para o desenvolvedor independente, o que é bom para mim).
- Corona SDK - Lua (eficiência duvidosa), também precisa de conexão com a internet para compilar código
- Cocos2d-x - C ++, recebeu muitas críticas de desenvolvedores, principalmente positivas e muitas acham que é melhor para 2D
- Código de partícula - Java + Eclipse, não foi encontrado nenhum comentário ou comentário
- Moai - Lua, não encontrou nenhum comentário / opinião sobre ele
- Mecanismo de macaco - parece ter poucos recursos
- Haxenme - é o Flash, nunca o usei e não quero
- use o Unity3d, mas com pacotes 2D como o 2D Toolkit
- portas de SDL para Android (também aqui ) e iOS - não parece ter muito suporte ou desenvolvimento atual (?)
- GLBasic - Linguagem básica, eu não gosto
- playN - parece estar no início do desenvolvimento (?)
- Gamvas - HTML5, não me parece um mecanismo maduro
- Ignifuga - Python, também não parece maduro
- ORX - não tenho certeza se ele ainda está desenvolvido (?)
- Construto 2 - lembra o GameMaker, pode ser bom para protótipos rápidos, mas definitivamente não é para jogos no nível da indústria
- XNA e depois portar o jogo usando ExEn (seria necessário o Mono Touch para portar para iOS e Mono para Android para portar para Android) - C #, e provavelmente é mais pensado para pessoas provenientes de produtos da Microsoft como xBox (eu venho do Android). Além disso, essas ferramentas Mono custam US $ 800 no total para pequenos desenvolvedores
- Impacto - JavaScript, usa HTML5. Eu não gosto muito de JavaScript (por exemplo, C # preferido no Unity3d), também não tenho certeza sobre a eficiência, pois ele roda no navegador (?)
- GameMaker - linguagem de script própria GML e, na verdade, eu me lembro dessa como uma ferramenta para não programadores. Ele realmente se transformou em um motor real, quero dizer para desenvolvimento sério?
- AppGameKit - C ++, ainda parece ser bastante novo. Ainda não foram encontrados comentários
- use o Cocos2D e o Objective C para desenvolver apenas para iOS e faça um APK para Android usando o Stella SDK . Alguém já fez isso? Tenho certeza de que haverá limitações e a integração com o faturamento no aplicativo do Google, a AdMob e o Facebook no Android?
- Moscrif - JavaScript, parece mais para ex-desenvolvedores da web
- Starling - Flash 11, não gosto muito de Flash
- ND2D - ainda não 1.0, possui muitos recursos?
Então, ficaria feliz se você pudesse comentar suas experiências com os mecanismos e sugerir qual da lista (ou qualquer outra coisa que eu tenha perdido) é a melhor para os requisitos descritos. Também posso estar errado com minhas primeiras impressões sobre alguns dos motores.
Atualmente, estou pensando em Marmalade + IwGame como a melhor opção, mas como não tenho muitas informações sobre Cocos2d-x e código de partículas, não tenho muita certeza.
Obrigado!
EDIT (junho de 2013): Até agora, criei 2 jogos 2D multiplataforma e usei o Unity3D com o plugin 2D Toolkit para ambos. Para o jogo com GUI simples, usei um sistema de GUI simples e auto-fabricado, baseado no próprio Unity. Para um mais complexo (por exemplo, onde os elementos da GUI podem se sobrepor), usei o plug-in NGUI. Recentemente, o 2D Toolkit adicionou mais algumas classes para a GUI, o que é muito útil, pois é necessário usar 2 sistemas diferentes para atlas de textura ao combinar o NGUI com o 2D Toolkit. Definitivamente vou tentar esse no próximo jogo 2D. O principal motivo para escolher o Unity3D para jogos em 2D foi que eu já estava mergulhado no Unity3D, tanto em termos de experiência quanto em trechos de código acumulados para reutilização. Além disso, comprei o Unity3D pro (com Android Pro e iOS Pro) para jogos em 3D e fazia todo o sentido pagar apenas US $ 60 adicionais pelo 2D Toolkit para obter também jogos em 2D. Até agora eu não lamento minha decisão, parece ter sido ideal para o meu caso. A única coisa que me deu dor de cabeça foi adicionar recursos sociais aos plugins do Prime31 (plugins sociais Android e iOS), mas presumo que os erros deles não sejam culpa do Prime31, mas do Twitter / Facebook, então provavelmente veria os mesmos erros nos qualquer outro mecanismo ou plugin.
EDIT (Jan 2014) : Eu acho que com o Unity 4.3 a resposta para minha pergunta é bastante óbvia agora: o novo sistema de sprites do Unity e talvez o 2DToolkit superam totalmente qualquer outra coisa, especialmente para pessoas que (como eu) estão no Unity há algum tempo e comprou a versão Pro com complementos.