Quels outils dois-je envisager si mon objectif est de rendre un jeu accessible au plus grand nombre de plateformes possible? [fermé]


8

Nous prévoyons de développer un jeu de puzzle 2D basé sur une grille, et bien qu'il soit encore très tôt dans les étapes de planification, nous aimerions bien prendre nos décisions dès le début.

Notre stratégie sera de rendre le jeu disponible sur autant de plateformes que possible, par exemple les PC (Windows, Mac et / ou Linux), les téléphones portables (téléphones iPhone et / ou Android), les consoles de jeux (XBLA et / ou PSN) PC mettra l'accent, mais je pense que c'est la plate-forme la plus flexible, donc cela ne devrait pas être un problème.

Alors, quel langage de programmation, moteur de jeu, frameworks et outils polyvalents seraient les mieux adaptés à notre objectif?

PS: Je parie qu'un ensemble d'outils ne couvrira pas TOUS ceux-ci, et qu'il y aura toujours une sorte d'effort de "traduction" pour certaines plateformes, mais nous aimerions savoir quels sont les plus étendus.


Réponses:


12

Nous avons un cadre C ++ épais au-dessus d'une couche plate-forme mince, également C ++. Porter un jeu sur une nouvelle plate-forme consiste à implémenter une nouvelle couche de plate-forme, ce qui, parce qu'il est assez mince, est assez rapide à faire.

De plus, toutes nos dépendances sont des bibliothèques open source et multiplateformes, telles que SDL, Ogg, LibPNG, etc.

Par exemple, nous avons une plate-forme Win32 / DirectX, une plate-forme SDL / OpenGL pour Linux et Mac, travaillant sur une plate-forme iOS pour iPhone / iPad, et un port android serait également possible. Pendant un certain temps, nous avions une plate-forme Playground, ce qui signifie que notre framework fonctionnait au-dessus du moteur Playground de PlayFirst. Cette approche en couches vous permet de tirer parti de l'interface que vous avez avec le matériel / système d'exploitation sous-jacent, tant que vous pouvez dessiner un quad texturé, obtenir une entrée et jouer un son, vous êtes à peu près prêt.

Je serai flambé pour cela, mais C ++ est probablement le langage le plus multiplateforme qui soit. Chaque architecture et système d'exploitation a probablement un compilateur C ++ ou gcc peut y être porté.


3
Pas de flamme, c'est une déclaration correcte et une partie de la raison pour laquelle nous l'utilisons toujours.
Klaim

9

Utilisez simplement Unity


L'impression générale semble être que Unity est cool pour la 3D, mais pas si cool pour la 2D. Et la question concerne un jeu 2D
bluescrn

6
Étant donné que j'ai expédié un jeu 2D avec Unity (et d'autres personnes également: unit3d.com/gallery/game-list ), je vais devoir être en désaccord avec l'impression générale. Oui, il n'y a pas de manière intégrée de dessiner des sprites animés par lots, mais vous pouvez facilement étendre l'éditeur pour le faire vous-même. Cela, combiné à ce qui se rapproche le plus de la véritable compatibilité multiplateforme à bouton-poussoir et à la faible barrière à l'entrée en fait la réponse la plus évidente.
Tetrad

Je suis d'accord. J'ai lu ceci et cela et utilisé la boîte à outils 2D et je dois dire qu'il est beaucoup plus facile de faire de la 2D que je ne l'aurais pensé.
NoobsArePeople2

1
Lien uniquement réponse, commentaire rachète cela assez je suppose. : /
MichaelHouse

6

Je viens de découvrir NME il y a quelques jours dans une autre question et j'ai pensé qu'il valait la peine de passer le mot. Au sujet de la prise en charge multiplateforme, la première page indique ce qui suit:

Choisir NME ouvre des opportunités presque infinies. Créez une application et publiez sur Facebook, l'App Store iOS, le catalogue d'applications webOS, l'Android Market, le Mac App Store, le marché Ubuntu, les applications NOOK, le Chrome App Store, Steam et d'autres marchés sans écrire de code spécifique pour chaque plate-forme .

Je ne l'ai pas encore testé personnellement, mais cela m'a semblé intéressant pour plusieurs raisons:

  • L'API est très similaire à Flash , que beaucoup de gens connaissent déjà. J'ai personnellement fait de nombreux jeux dans Flash / AS3 auparavant et c'est assez facile à apprendre et à travailler.
  • Il utilise un langage appelé Haxe qui est très similaire à ActionScript 3, mais peut être compilé dans une multitude de formats , y compris C ++ natif.
  • Ce qui précède, combiné avec quelques pipelines intelligents mis en place pour vous par NME, lui permet d'être extrêmement multi-plateforme . Sur le PC, vous pouvez cibler Windows, OS X et Linux et sur mobile, vous pouvez cibler iOS, Android et webOS (tout en obtenant des performances natives en utilisant C ++ avec OpenGL ES sous le capot). Enfin, il permet également le développement de jeux Web en utilisant une toile Flash ou HTML5.
  • C'est totalement gratuit .

Je n'ai pas beaucoup de temps pour l'essayer pour le moment, donc si quelqu'un le fait, il serait utile que vous puissiez laisser des commentaires à ce sujet.


1

Eh bien cela dépend, pouvez-vous programmer en C / C ++, Obj-C et C #?

Unity3D est la meilleure taille 1, mais les jeux 2D peuvent être difficiles (pour un jeu 2D de toute façon).

Si vous ciblez la Xbox avec XNA (alias le magasin indépendant), vous devez utiliser C #. Mais vous ne pouvez pas vraiment utiliser C # avec iOS (sauf avec l'unité). Bien que vous puissiez utiliser C / C ++ pour iOS, vous devez toujours utiliser un peu d'Obj-C, sauf si vous utilisez une sorte de middleware.

Si vous n'utilisez pas de moteur, je pense que la meilleure chose à faire est d'écrire votre propre couche d'abstraction. Pour que tous les appels à votre bibliothèque passent par cette couche intermédiaire, donc quand vient le temps de porter, il vous suffit de changer l'implémentation de la couche d'abstraction et votre code de jeu est plus ou moins intact.


1
Théoriquement, xna touch permet aux jeux xna écrits en c # de fonctionner sur ios à travers mono. xnatouch.codeplex.com
Steve H

@Steve H, bon appel, même si cela semble bloquer Android.
PhilCK

@PhilCK Mono peut être conçu pour fonctionner à la fois sur Android et iOS, et MonoGame les prend en charge tous les deux. Cependant, vous devrez payer pour une licence de Xamarin.
Cole Campbell

1

D'autres réponses ont assez bien couvert les outils et les langues, mais du côté des graphiques, je recommanderais certainement de créer vos graphiques (2D) dans un format vectoriel et de vous assurer qu'ils ont l'air bien dans les petites et grandes tailles. Trop de détails se dégradent mal, trop peu de détails se dégradent mal.


1

Moai SDK est un framework open source et est actuellement en mesure de publier sur Android, IOS et Chrome. Moai pourrait être étendu pour couvrir des hôtes tels que les consoles de jeux, selon vos compétences et vos connaissances dans ces domaines.


0

Je dirais que votre meilleur choix de langue serait c #. Vous pouvez l'utiliser pour développer dans Unity pour un certain nombre de plates-formes. c # est également le langage utilisé dans MonoTouch (pour le développement pour iOS) et MondoDroid (pas encore sorti mais vous permettra de cibler les plateformes Android). Et, bien sûr, c # peut être utilisé dans XNA qui vous permet de cibler les téléphones XBOX 360 et Windows.

Cela couvre à peu près tout. Il y aura encore du travail à faire dans le fait que vous utiliserez différents outils pour manipuler le contenu du jeu, mais votre logique de jeu de base ne devrait pas avoir besoin de changer si tout est en c #.

oh et bien sûr c # est utilisé dans Silverlight qui vous permettrait également de cibler le web.


2
Bien que ce soit un langage agréable, C # semble vraiment un mauvais choix pour les développeurs de jeux multiplateformes. Outre les problèmes de performances sur les plates-formes non PC, n'oubliez pas que XNA n'est disponible que sur quelques plates-formes et que vous manquerez un grand nombre de bibliothèques multiplateformes potentiellement utiles qui seraient disponibles si vous utilisiez C / C ++. Oui, cela signifie ne pas prendre en charge Windows Phone ou Xbox Indie Games sans un port complet (mais est-ce vraiment une grosse perte, du point de vue des ventes, quand vous pouvez prendre en charge à peu près tout le reste?)
bluescrn

0

La première étape devrait probablement être de créer le jeu, au moins un prototype décent, en utilisant vos outils / technologies préférés, pour une seule plate-forme (ou un petit nombre de plates-formes).

Il est très facile de s'enliser dans les outils multiplateformes / le développement technologique. Se concentrer trop sur la multiplicité des plateformes avant d'avoir un jeu est un peu comme une optimisation prématurée. Il vaut certainement la peine d'y penser dès le début, mais n'y passez pas tout votre temps avant d'avoir un jeu.

Essayer de prendre en charge chaque plate-forme avant de savoir si le jeu sera un succès ressemble à une stratégie à haut risque - en particulier s'il s'agit d'un jeu simple à petit budget (où le coût de développement de systèmes multiplateformes pourrait largement dépasser le coût de développement du jeu lui-même?).

Ne serait-il pas logique de le lancer sur un petit nombre de plates-formes, de voir à quel point il fonctionne et de déterminer s'il vaut la peine de prendre en charge les plates-formes les plus difficiles (par exemple, les systèmes moins puissants, ceux avec des périphériques d'entrée arkward ou ceux qui nécessitent une port vers C # ou Java)


0

Je sais que c'est impopulaire, mais AS3 avec Starling pourrait être votre réponse pour mobile, ordinateur de bureau et web. C'est ÉTONNANT et se produit d'une manière surprenante. J'ai fait et un jeu iOS kinect qui fonctionnait également sur Windows et Android. Il n'y avait rien d'autre qui pouvait gérer les besoins de calcul et c'était cette plateforme multiplateforme. De plus, vous pouvez connecter n'importe quel projet Arduino de manière transparente. La plupart des gens n'ont tout simplement pas remarqué ce qu'Adobe a fait aux outils Flash / Flash Builder récemment ...


-3

Flash et Java ont un support très répandu; ils fonctionnent sur tous les PC (plus ou moins) et sur de nombreux appareils mobiles (plus ou moins), et je suis sûr qu'ils sont à peu près aussi faciles à porter sur une console que tout autre projet avec une influence PC.


3
Vous n'allez pas obtenir Java sur 360 ou PS3, ni sur les plateformes iOS. De même pour le flash. En ce qui concerne un langage, je dirais que C ++ est beaucoup plus portable dans le cas général, à part spécifiquement XNA (mais pas XBLA).
Tetrad

Flash est parfois utilisé pour des choses comme les interfaces utilisateur et les mini-jeux avec des middlewares comme Scaleform ( scaleform.com/products/gfx ). Je ne suis pas en mesure de trouver beaucoup d'informations sur Java pour les consoles, bien que le support Bluray de la PS3 semble impliquer une simple JVM. Quoi qu'il en soit, vous devez faire beaucoup de travail pour porter quoi que ce soit sur une console (moins pour le 360 ​​s'il est à l'origine dans XNA). Si vous concevez votre code pour la portabilité, même changer de langue dans un port n'est pas impossible.
Gregory Avery-Weir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.