2010-06-19 6 views
3

Est-il préférable de programmer un jeu pour l'iPhone en Objective C ou en C++.
Dans quelle langue serait écrit un jeu comme Flight Control?
Dans quel format les graphiques doivent-ils s'afficher correctement et se charger rapidement sur l'iPhone?Jeux de programmation pour iPhone

Répondre

2

Vous devrez créer vos vues de niveau supérieur et l'interface de votre système d'exploitation en Objective C ou en Objective C++. Il n'y a aucun moyen d'appeler les API Apple haut niveau sans cela. Une fois que vous arrivez à la logique du jeu, vous pouvez faire la plupart de votre travail en C si vous souhaitez utiliser Core Graphics ou OpenGL.

5

Des jeux comme Flight Control sont généralement écrits en Objective-C avec quelques appels C vers OpenGL et d'autres API C. Les graphiques peuvent être stockés au format PNG ou JPEG. Je resterais en dehors de C++ sauf si je devais utiliser du code C++ ou si j'avais des développeurs ayant de bonnes connaissances en C++. Selon mon expérience, le goulot d'étranglement est rarement dans la langue, de sorte que vous n'avez pas grand chose à gagner en passant au C++.

+1

ne pas mentionner que vous trouverez beaucoup plus des exemples de code pour l'iPhone (comme tous Apple) écrit en Objective-C que toute autre langue. –

3

Vous ne pouvez pas éviter d'utiliser Objective-C ou Objective-C++, en raison des nombreuses API avec lesquelles vous devrez interagir. Que vous utilisiez également C++ pour le cœur de votre jeu dépend largement de l'expérience et des outils tiers que vous prévoyez d'utiliser.

j'ai écrit mon jeu principalement en C++, même si le seul élément majeur tiers J'utilise — Chipmunk physique — est écrit C. Cela est principalement parce que je l'ai été la programmation C++ depuis des années, et je suis beaucoup plus à l'aise avec c'est qu'avec Objective-C. D'autres auront bien entendu des perspectives différentes, en fonction de leur expérience. Parlant plus subjectivement, je trouve que C++ est un langage bien meilleur pour l'écriture de la logique de jeu spatiale. Sa capacité à représenter des vecteurs, des matrices, etc., en tant que classes et à surcharger les opérateurs mathématiques, rend les choses beaucoup plus propres. Aussi, je trouve que le modèle de rétention/diffusion d'Objective-C est un PITA royal, comparé au RAII de C++.

WRT, images. J'ai trouvé que PNG était assez adéquat, bien que mon jeu ne soit pas lourd. This page fournit beaucoup de perspicacité dans le stockage de texture efficace sur l'iPhone. Les atlas de texture sont particulièrement importants.

+0

Point intéressant sur la gestion de la mémoire. Je me sens exactement à l'opposé :) J'ai trouvé le comptage des références très pratique et sûr, je l'aime beaucoup et c'est assez rare pour moi de créer une fuite car tout semble si simple. – zoul

+0

@zoul: c'est peut-être mon manque d'expérience avec Objective-C, mais je me retrouve constamment à traquer les fuites, et à découvrir invariablement que j'ai oublié de sortir quelque chose, ou je l'ai gardé quand je n'aurais pas dû, ou trouver qu'un NSString a été nettoyé avant que je ne m'y attendais (même après avoir lu les règles de propriété/cycle de vie). –

0

Vous pouvez maintenant accélérer votre développement en utilisant un langage qui ne nécessite pas de développeur pour gérer manuellement votre mémoire et vous soucier des fuites, la langue est C#. L'avènement de MonoTouch est la magie qui rend cela possible, mais avant même que MonoTouch j'ai entendu le Unity framework a été utilisé pour plusieurs jeux iPhone avec succès.

Ok, pour être moins d'un « commercial » (foule difficile ...)

en utilisant C# vous permettra au port relativement facilement votre jeu à d'autres plates-formes mobiles (comme le Droid) sans réécriture du code. L'objectif C n'est guère une langue acceptée largement au-delà de la communauté Apple. L'AppStore continue de grandir grâce à iPhone4 et à l'iPad mais l'Android n'a rien à éternuer et il y a d'autres appareils mobiles à considérer au-delà des deux grands ...

Voir ce related answer en ce qui concerne la prise en charge de l'Android.

La ligne de fond est plus grande audience = plus de revenus pour vous lorsque vous écrivez le même code. Mes excuses si vous cherchiez une sélection de Objective C ou C++ sans apporter une autre option à la lumière ...

+4

Cela semble être une publicité. – BobbyShaftoe

+1

On peut dire que Objective-C fournit également une gestion automatique de la mémoire. Cela semble un peu comme une prise pour C# sans beaucoup de soutien quant à la raison pour laquelle c'est une meilleure façon d'écrire du code pour l'iPhone. –

+0

Bien que MonoTouch soit plutôt sympa, je pense que la personne qui a posé la question aimerait rester avec la pile Apple dans une certaine mesure. – icktoofay

0

J'apprécie la réponse rapide et l'expertise de tout le monde.

Je suis en train d'apprendre C++ ou Objective C et il semble que l'objectif C soit plus direct sur l'iPhone.

Mon arrière-plan est "gasp" COBOL85 (entre autres langues arcanes). Je préférerais que quelqu'un connaisse déjà le code du jeu, mais j'imagine que les coûts de développement le rendraient un peu prohibitif. J'ai une demande d'offre préparée, avec "pseudocode", si quelqu'un voudrait le voir et donner un devis. Pendant ce temps, il ne semble pas être un avantage pour C++ Ken [email protected]

+0

Eh bien, il y a un avantage à C++. C'est plus de plateforme croisée. Si vous envisagez de développer votre jeu pour d'autres choses que l'iPhone, vous devez utiliser Objective-C uniquement pour le code de l'interface utilisateur. – JeremyP

Questions connexes