Puis-je développer des jeux pour plates-formes mobiles en C ++?

16

J'ai une bonne maîtrise de C ++ et C et j'ai également de l'expérience dans le développement de jeux AAA en C ++. Maintenant, je pense sans vergogne à plonger dans le développement de jeux mobiles sur iOS ou Android. Malheureusement, je ne connais pas l'objectif-C et java et je n'ai pas non plus le courage de l'apprendre. Ainsi, comme indiqué ci-dessus, existe-t-il une possibilité de faire du développement mobile en C ++ sans utiliser une seule déclaration de JAVA et Objective-C?

James Bern
la source

Réponses:

13

Certains objectifs C doivent être écrits pour les applications iPhone. Cela étant dit, vous pouvez écrire une couche assez mince d'obj-c puis faire tout votre code de jeu en C ou C ++.

Sur Android, recherchez le NDK. Je n'ai aucune expérience avec cela, mais il promet d'être un sdk natif, vous devriez donc être capable d'écrire la plupart des choses en C ou C ++.

Cela étant dit, vous vous limitez artificiellement à la barrière de la langue. Sur iOS, si vous voulez faire quoi que ce soit avec la couche OS (comme GameCenter, leur plate-forme sociale), ou utiliser n'importe quel type de middleware, vous seriez probablement confronté à une API C objective.

Je peux en quelque sorte comprendre le sentiment. Le C ++ en particulier est un langage énorme. Mais obj-c n'est pas un gros. C'est un boulon sur C (donc les fondamentaux devraient être familiers) avec quelques éléments supplémentaires ajoutés en haut. Ce n'est pas aussi complexe ou profond que C ++.

Tetrad
la source
2
Veuillez garder à l'esprit que l'utilisation d'Android NDK signifie laisser les avantages de «écrire une fois déployer partout», car vous devez compiler votre code pour plusieurs plates-formes, ce qui peut entraîner plusieurs problèmes de génération. NDK est destiné à être utilisé pour appeler la fonction C à partir du code java, et non pour écrire l'application entière (alors que c'est encore possible).
FxIII
1
Je pense également que Google a explicitement déclaré que NDK ne doit pas être utilisé pour une implémentation complète du jeu. En outre, la syntaxe java est presque identique à C ++ et devrait prendre quelques jours pour se familiariser. Si vous voulez gagner de l'argent, vous devriez probablement vous concentrer sur les jeux iOS.
Nailer
Que dites-vous de Unity3D, si j'apprends le C #
James Bern
1
À partir d'Android 2.3, Google a ajouté une activité native qui vous permet d'écrire une application complète en 100% c ++ (principalement pour les jeux).
5
Je recommanderais Unity3D, surtout si vous souhaitez déployer sur plusieurs plates-formes. C # n'est pas si difficile à apprendre si vous connaissez déjà le C ++, et leur contenu de forum est de premier ordre avec des tonnes d'exemples de code (bien que la plupart du code soit en JavaScript).
Doug.McFarlane
7

J'écris un jeu depuis un bon moment en c ++ pour Android. Je dois toucher le code java toutes les quelques semaines, mais pour la plupart, j'ai modifié l'un des exemples d'applications fournis avec le NDK et j'ai écrit le c ++ autrement. J'ai aussi dû faire un peu de travail JNI, ce qui n'est jamais amusant. Cependant, j'ai de nombreuses années d'expérience en Java, donc avoir à écrire en Java ou en JNI ne me ralentit pas particulièrement.

Mon jeu fonctionne aussi bien sur ma box Linux que sur mes appareils de test. La version linux est du pur C ++ et le problème que j'ai rencontré pour faire ce travail est rentable à chaque fois que j'apporte un changement itératif à mon jeu.

Mon projet a 836 lignes de code java, 331 lignes de code jni C hideux et environ 40k lignes de code C ++.

notlesh
la source
Utilisez-vous un système de génération qui peut générer pour chaque cible de manière automatisée? J'utilise CMake pour autoriser les builds multi-plateformes, et je me demandais si je pouvais l'intégrer avec ndk-build.
Martin Foot
J'ai vu d'autres projets NDK utiliser CMake.
2012
4

Il existe également Marmalade qui vous permet d'utiliser c ++ pour créer des applications mobiles pour une large gamme d'appareils tels que iPhone, Android, Win Mobile, Bada et bien d'autres.

impmja
la source
2

J'utilise cocos2d-x depuis un moment, c'est un moteur de jeu basé sur c ++. (il s'agit en fait d'un port c ++ de cocos2d-iphone). en utilisant ce moteur, vous pouvez facilement exécuter et tester vos codes sur Windows, puis compiler le même code pour l'exportation iphone / android.

Ali1S232
la source
comprend également maintenant bada et certaines personnes l'ont utilisé au-dessus de Marmalade
Andy Dent
1

Si vous voulez vraiment juste C ++, Marmalade pourrait être bon pour vous

Mais pour des capacités complètes, vous devez utiliser au moins un objectif-C (ou java, mais je parle de "capacités complètes") . Mais avec une fine couche d'objectifs-C, vous pourriez faire tellement, donc je vous recommande de regarder dans le développement iOS avec Xcode.


Si vous avez un look mac sur Xcode , sinon, essayez plutôt corona avec lua .

Il existe de nombreuses façons d'optimiser votre code C ++ à exécuter sur l'iPhone. Un programme gratuit sur le Mac App Store pourrait aider à augmenter l'utilisation du C ++ dans les produits basés sur Objective-C:

Cela s'appelle les en -têtes de préprocesseur objective-C ++

Cela vous permet de faire encore plus avec C ++ plutôt qu'avec Objective-C.

Programmation iOS :

Comradsky
la source
-3

Oui, vous pouvez utiliser le langage de programmation C ++ pour développer des jeux mobiles. L'application de jeu C ++ semble toujours un peu plus vive que Java sur le même matériel. Donc, si vous êtes expert en C ++ et intéressé à développer un jeu Android, il est maintenant facile et gratuit de programmer en Java.

Jacob Selvestar
la source