web-dev-qa-db-fra.com

Moteur de jeu multi-plateformes 2D pour Android et iOS?

Je travaille depuis quelque temps avec Unity3d et j'ai trouvé sa partie 2D avec OnGUI () ou GUITextures trop maladroite. En outre, même un plus petit jeu réalisé sur Unity3d nécessite au moins 10 Mo de téléchargement, ce qui est trop pour un jeu en 2D.

Donc, je suis actuellement à la recherche d'un moteur pour la 2D. J'ai déjà essayé Cocos2D, mais uniquement pour iOS et je ne voudrais pas tout réécrire dans une autre langue pour Android (donc, par exemple, le port Java de Cocos2d pour Android n'est pas une option.) . Au lieu de cela, je souhaite écrire le code une fois et le déployer avec moins de tracas sur iOS, Android et éventuellement Windows Phone 7. J'ai à la fois Mac et Windows.

Juste pour être plus détaillé, voici mes exigences pour le moteur:

  • doit être multi-plateforme
  • doit être efficace
  • devrait être C++, Java, C # ou Objective C puisque je suis à l'aise avec eux et PAS Flash, Javascript, HTML5 puisque je ne suis pas un développeur web
  • doit avoir une grande communauté, des tutoriels, des bibliothèques supplémentaires couvrant la plupart des éléments que vous auriez lors du développement sur iOS ou Android directement (facturation intégrée, Facebook, etc.)
  • le colis final livré ne doit pas être trop volumineux
  • le moteur peut être gratuit, mais cela ne me dérangerait pas de payer un prix raisonnable

J'ai trouvé les moteurs suivants:

  • Marmalade (et moteur IwGame en plus) - C++, a trouvé dans l'ensemble des critiques très positives sur Marmalade mais pas sur d'IwGame. EDIT (mars 2013) : On dirait que Marmalade SDK inclut désormais Cocos2Dx et certains IDE intégrés, ce qui le rend bien meilleur (et coûte 150 USD par an pour le développement indépendant qui me convient).
  • Corona SDK - Lua (efficacité douteuse), a également besoin d'une connexion Internet pour compiler le code
  • Cocos2d-x - C++, a reçu de nombreuses critiques de développeurs, pour la plupart positives et beaucoup pensent que c'est mieux pour la 2D
  • Code de particules - Java + Eclipse, n'a trouvé aucun avis ou commentaire
  • Moai - Lua, n'a trouvé aucun avis/avis à ce sujet
  • Monkey engine - semble avoir trop peu de fonctionnalités
  • Haxenme - c'est Flash, je ne l'ai jamais utilisé et je ne veux pas
  • utilisez nity3d mais avec des packages 2D tels que 2D Toolkit
  • ports de SDL à Android (aussi ici ) et iOS - ne semble pas avoir beaucoup de soutien ou développement en cours (?)
  • GLBasic - Langage de base, je ne l'aime pas
  • playN - semble être au début du développement (?)
  • Gamvas - HTML5, pour moi, ne ressemble pas à un moteur mature
  • Ignifuga - Python n'a pas l'air mûr
  • ORX - ne sait pas s'il est encore développé (?)
  • Construct 2 - rappelle GameMaker, pourrait être bon pour les prototypes rapides mais certainement pas pour les jeux de niveau professionnel
  • XNA puis portez le jeu à l'aide de ExEn (aurait besoin de Mono Touch pour mettre en communication sur iOS et Mono pour Android = porter sur Android) - C #, et est probablement plus pensé pour les gens de produits Microsoft comme xBox (je viens d’Android). En outre, ces outils Mono coûtent 800 $ au total pour les petits développeurs.
  • Impact - JavaScript, utilise HTML5. Je ne suis pas très habitué à JavaScript (par exemple, le C # préféré sur Unity3d), et je ne suis pas sûr de l'efficacité, car il fonctionne dans le navigateur (?)
  • GameMaker - propre langage de script GML et je me souviens de celui-ci comme d'un outil pour les non-programmeurs. A-t-il réellement évolué pour devenir un véritable moteur, je veux dire pour un développement sérieux?
  • AppGameKit - C++, mais semble être encore assez récent. N'a pas trouvé de commentaires à ce sujet
  • utilisez Cocos2D et Objective C pour développer uniquement pour iOS, puis créez un APK pour Android avec Stella SDK . Quelqu'un a-t-il fait ça? Je suis à peu près sûr qu'il y aura des limites, et qu'en est-il de la facturation in-app de Google, de l'intégration AdMob et de Facebook sur Android?
  • Moscrif - JavaScript, on dirait que c'est plus pour les anciens développeurs web
  • Starling - Flash 11, je ne suis pas très intéressé par Flash
  • ND2D - pas encore 1.0, est-ce qu'il a beaucoup de fonctionnalités?

Donc, je serais heureux si vous pouviez commenter de vos expériences avec les moteurs et suggérer lequel de la liste (ou autre chose que j'ai manquée) est le meilleur pour les exigences décrites. Je peux aussi me tromper avec mes premières impressions sur certains moteurs.

Je pense actuellement à Marmalade + IwGame comme la meilleure option, mais comme je n'ai pas beaucoup d'informations sur Cocos2d-x et le code de particule, je n'en suis pas vraiment sûr.

Je vous remercie!

EDIT (juin 2013) : Jusqu'à présent, j'ai créé 2 jeux 2D multiplateformes et utilisé le plug-in Unity3D avec 2D Toolkit pour les deux. Pour le jeu avec une interface graphique simple, j’ai utilisé un système graphique simple et personnalisé, basé sur celui de Unity. Pour plus complexe (par exemple, où les éléments de l'interface graphique peuvent se chevaucher), j'ai utilisé le plugin NGUI. Récemment, 2D Toolkit a ajouté quelques classes supplémentaires pour l’interface graphique, ce qui est très pratique car il fallait utiliser 2 systèmes différents pour les atlas de texture lors de la combinaison de NGUI avec 2D Toolkit. Je vais certainement essayer celui-ci dans le prochain jeu en 2D. La raison principale qui a poussé à choisir Unity3D pour les jeux en 2D est que j’étais déjà profondément attaché à Unity3D, à la fois en termes d’expérience et de fragments de code accumulés à des fins de réutilisation. De plus, j'ai acheté Unity3D pro (avec Android Pro et iOS Pro) pour les jeux 3D et il était logique de simplement payer 60 $ supplémentaires pour la boîte à outils 2D afin que les jeux 2D soient également couverts. Jusqu'à présent, je ne regrette pas ma décision, elle semble avoir été optimale pour mon cas. La seule chose qui me donnait mal à la tête était d’ajouter des fonctionnalités sociales avec les plugins de Prime31 (plugins sociaux Android et iOS) mais je suppose que leurs bogues ne sont pas la faute de Prime31 mais de Twitter/Facebook, alors je verrais probablement les mêmes bugs sur tout autre moteur ou plugin.

EDIT (Jan 2014) : Je suppose qu'avec Unity 4.3, la réponse à ma question est maintenant assez évidente: le nouveau système de sprites de Unity et peut-être aussi 2DToolkit totalement dépassé toute autre chose, en particulier pour les personnes qui (comme moi) utilisent Unity depuis un certain temps et ont acheté la version Pro avec des add-ons.

257
iseeall

J'ai travaillé avec Marmalade et je l'ai trouvé satisfaisant. Bien que ce ne soit pas gratuit et que la communauté de développeurs ne soit pas assez nombreuse, vous pouvez néanmoins gérer la plupart des tâches à l'aide de ses tutoriels. (J'écrirai mes tutoriels une fois que j'en aurai eu quelques fois aussi).
IwGame est un bon moteur, développé par l'un des utilisateurs de Marmalade. C'est bon pour un jeu de base, mais si vous cherchez des choses sérieuses pour les jeux avancés, vous pouvez aussi utiliser _Cocos2D-x_ avec Marmalade. Je n'ai jamais utilisé Cocos2D-x, mais il existe une extension sur Github de Marmalade.
Une autre bonne chose à propos de Marmalade, c’est EDK (Extension Development Kit), qui vous permet de créer une extension pour toute fonctionnalité dont vous avez besoin, disponible en code natif, mais pas dans Marmalade. Je l'ai utilisé pour développer ma propre extension Admob personnalisée et une extension Facebook.

Modifier :
Marmalade a maintenant son propre outil RAD (Rapid Application Development) juste pour le développement 2D, nommé Marmalade Quick . Bien que le codage ne soit pas en C++ en Lua, mais puisqu'il repose sur C++ Marmalade, vous pouvez facilement inclure une bibliothèque C++ et toutes les autres extensions EDK. De même, les extensions _Cocos-2Dx_ et _Box2D_ sont incluses dans le Quick. Ils ont récemment lancé sa version Release (elle était en version bêta pendant 3-4 mois). Je pense que nous recherchons uniquement du développement 2D, vous devriez l'essayer.

Mise à jour:
Unity3D a récemment lancé la prise en charge des jeux 2D, qui semble meilleure que tout autre moteur de jeu 2D, en raison de son interface graphique et de son éditeur. Physics, Sprite etc., le support est intégré. Vous pouvez y jeter un coup d'oeil.

Mise à jour 2
Marmalade va cesser d’utiliser son SDK au profit de la production de ses jeux en interne. Donc, ce ne sera pas une sage décision de compter sur cela.

31
noob

LibGDX est l'un des meilleurs moteurs que j'ai jamais utilisés. Il fonctionne sur presque toutes les plateformes et fonctionne deux fois plus vite que cocos2d-x dans la plupart des tests que j'ai effectués. Vous pouvez utiliser n’importe quelle langue JVM. voici un tutoriel en 13 parties en Java, et voici un groupe utilisant jruby. Il existe un bon outil d'animation squelettique qui fonctionne avec ici , et il prend également en charge les cartes TMX en mosaïque. Le framework d'interface utilisateur est génial, et il a un graphique de scène et une API de style d'acteur similaires aux scènes, aux sprites et aux actions de cocos2d. La communauté est géniale, les mises à jour sont fréquentes et la documentation est bonne. Ne laissez pas la partie Java vous effrayer, elle est rapide et vous pouvez utiliser jruby ou scala ou ce que vous préférez. Je le recommande fortement pour le travail 2D ou 3D, il prend en charge les deux.

42
Kamek

Vous mentionnez Haxe/NME mais vous semblez le détester instinctivement. Cependant, mon expérience en la matière a été très positive. Bien sûr, l'API est une réimplémentation de l'API Flash, mais vous ne pouvez pas uniquement cibler Flash. Vous pouvez également compiler au format HTML5 ou natif d'applications Windows, Mac, iOS et Android. Haxe est un langage agréable et moderne, similaire à Java ou C #.

Si cela vous intéresse, j'ai un peu écrit sur mon expérience avec Haxe/NME: link

12
zwets

V-Play (v-play.net) est un moteur de jeu multi-plateformes basé sur Qt/QML avec de nombreux composants de jeu V-Play QML utiles pour la gestion de résolutions et de formats d'affichage multiples, d'animations et de particules. , physique, multi-touch, gestes, recherche de chemin, etc. Référence de l'API Le cœur du moteur est écrit en C++ natif, associé au moteur de rendu personnalisé, les jeux atteignent une performance solide de 60 images par seconde sur tous les appareils.

V-Play est également livré avec des modèles de jeu prêts à l'emploi pour les genres de jeux les plus réussis tels que la défense en tour, les jeux de plateforme ou les jeux de réflexion.

Si vous êtes intéressé par les jeux réalisés avec V-Play, en voici une sélection rapide:

(Avertissement: je suis l'un des gars derrière V-Play)

11
Alex Huber

Voici une réponse de Richard Pickup sur LinkedIn à une question similaire:

J'ai utilisé la marmelade et l'unité de cocos 2dx sur iOS et Android. Pour les jeux en 2D, cocos2dx est la voie à suivre à chaque fois. L'unité est juste un peu exagéré pour les jeux en 2D et, comme nous l'avons déjà indiqué, marmalade n'est qu'une mince couche d'abstraction, pas vraiment un moteur de jeu. Vous pouvez même exécuter cocos2d sur la marmelade. Mon approche consisterait à utiliser cocos2dx sur iOS et Android, puis à exécuter à l'avenir le code cocosd2dx au-dessus de marmelade comme moyen facile de porter en port bb10 et de gagner le téléphone 7.

6
iseeall

Je trouve un Nice and Tidy moteur de jeu Wave il y a quelques jours. Il utilise le C # et dispose également de convertisseurs Windows Phone et Windows Store, ce qui en fait un excellent remplacement de XNA pour moi.

6
Deadcow

et que dire de LibGDX de BadLogicGames?

5
Ewoks

Check out Loom ( http://theengine.co ) est un nouveau moteur de jeu 2D multiplate-forme proposant des codes et des ressources échangeables à chaud sur les appareils. Cela signifie que vous pouvez utiliser vos ressources dans Photoshop, vous pouvez mettre à jour votre code, modifier l'interface utilisateur de votre application/jeu, puis voir les modifications apportées sur votre/vos appareil (s) pendant l'exécution de l'application.

En pensant aux autres moteurs de jeu multi-plateformes dont j'ai entendu parler ou avec lesquels j'ai même joué, le moteur de jeu Loom est de loin le meilleur à mon avis avec de nombreuses fonctionnalités exceptionnelles. La plupart des autres moteurs de jeu similaires (Corona SDK, MOAI SDK, Gideros Mobile) sont basés sur Lua (avec une syntaxe étrange, du moins pour moi). Loom Game Engine utilise LoomScripts, un langage de script inspiré d'ActionScript 3, doté de quelques fonctionnalités empruntées au C #. Si vous avez déjà développé ActionScript 3, C # ou Java, LoomScript vous semblera familier (et je suis plus à l'aise avec cette syntaxe qu'avec la syntaxe de Lua).

La licence d’un an pour Loom Game Engine coûte 500 USD, et je pense que c’est un prix abordable pour tout développeur de jeux vidéo indépendant. Il y a quelques semaines, une licence d'un an a été offerte gratuitement. Une fois la licence expirée, vous pouvez toujours utiliser Loom pour créer et déployer vos propres jeux, mais vous ne recevrez aucune autre mise à jour. Les créateurs de Loom sont très confiants et ils ont promis d’améliorer constamment leur bébé, ce qui en valait la peine.

Sans plus tarder, voici les grandes fonctionnalités de Loom:

  1. Plateforme croisée (iOS, Android, OS X, Windows, Linux/Ubuntu)

  2. Le flux de travail inspiré de Rails vous permet de passer votre temps à travailler avec votre jeu (une commande pour créer un nouveau projet et une autre pour l'exécuter)

  3. Compilateur rapide

  4. Modification en direct du code et des ressources

  5. Possibilité d'intégrer des bibliothèques tierces

  6. Utilise Cocos2DX pour le rendu

  7. XML, support JSON

  8. LML (langage de balisage) et CSS pour le style des éléments d'interface utilisateur

  9. Bibliothèque d'interface utilisateur

  10. Injection de dépendance

  11. Cadre de test unitaire

  12. Physique du chipmunk

  13. Voir vos changements en direct facilite le développement multi-services

  14. Petite taille de téléchargement

  15. Construit pour les équipes

Vous pouvez trouver plus de vidéos sur Loom ici: http://www.youtube.com/user/LoomEngine?feature=watch

Découvrez également ce didacticiel en 4 parties: http://www.gamefromscratch.com/post/2013/02/28/A-closer-look-at-the-Loom-game-engine-Part -one-getting-started.aspx

4
balazs.bohonyi

J'ai essayé AppGameKit, c'est à la fois c ++ et basique. Il est très facile de coder des jeux 2d dans la variante Basic, avec de la physique, des collisions et plus encore. C'est aussi en développement actif et vraiment pas cher (65 $). Le principal problème est qu’il est très difficile de compiler pour Android (vous devez télécharger des tas de fichiers et suivre des guides difficiles, etc.) Mon opinion est que ce n’est pas encore assez bon pour un usage commercial, mais c'est bon pour les programmeurs indépendants Il a une communauté de taille moyenne

4
Steven Kaydn

J'utilise actuellement Corona pour les applications d'entreprise avec un grand succès. En ce qui concerne les jeux, j’ai l’impression que cela ne fournit pas les performances comparables à celles des autres moteurs de développement multiplate-forme. Il convient de noter que Carlos (fondateur de Ansca Mobile/Corona SDK) a démarré une autre société avec un moteur concurrent; Lanica Platino Engine pour Appcelerator Titanium. Bien que je n’aie pas travaillé avec cela personnellement, cela semble prometteur. Rappelez-vous toutefois que le prix est de 999 $/an.

Cela dit, je fais des recherches sur Moai depuis un moment (car je connais déjà bien la syntaxe Lua) et cela semble prometteur. Le fait qu’il puisse compiler pour plusieurs plates-formes, sans se limiter aux environnements mobiles, est attrayant.

Multimedia Fusion 2 est également un concurrent sérieux compte tenu de la complexité des jeux produits et de leurs performances. Vincere Totus Astrum ( http://gamesare.com ) vient à l’esprit.

2
Sean Perryman

Récemment, j'ai utilisé un moteur AS3: PushButton (maintenant mort, mais il reste fonctionnel et vous pourriez utiliser autre chose) pour faire ce travail. Pour que cela fonctionne avec Android et iOS, le projet a été compilé dans AIR pour les deux plates-formes et tout a fonctionné sans dommage pour les performances. Comme Flash Builder est assez cher (249 USD), vous pouvez utiliser FlashDevelop (il existe quelques tutoriels à compiler dans AIR avec ce logiciel).

Flash pourrait être une option car il est très facile à apprendre.

2
Kleber