Jeux ?

Askerat

Membre confirmé
14 Décembre 2008
20
0
Bonjour,

J'ai quelques difficultés liées aux performances lors du développement d'un petit jeu en 2D. Je fais tourner ça avec un NSTimer. Pour les sprites, j'utilise des CGImageRef, que j'affiche avec CGContextDrawImage(). C'est du temps réel, un petit jeu de "shoot" avec un avion qu'on contrôle. Rien que les déplacements du vaisseau seul semblent saccadés.

Quel est le bon procédé pour faire un jeu 2D ? QuartzCore est-il lourd ? Il vaut mieux utiliser directement OpenGL ?

Si quelqu'un savait m'aiguiller ..

edit: L'architecture de l'application c'est une NSView, qui contient une classe Board, qui elle même contient un tableau de Vessel ( mes vaisseaux ) qui ont une méthode draw appellée par le NSView dans drawRect:. L'image est un png qui pèse 4ko.
 
Oui, Quartz est lourd, il est plutôt destiné à créer des logiciels de PAO que des jeux. Une des idées sous-jacentes est de ne redessiner que les rares éléments qui changent. Tout le contraire d'un jeu où tous les éléments graphiques changent à chaque raffraîchissement.

Je te conseille à nouveau d'utiliser OpenGL en compagnie de la SDL. En plus, ça te permettra de rendre tes développements portables sous d'autres plateformes. Avec OpenGL, tu charges tes images dans la mémoire de la carte vidéo, et tu commandes à chaque raffraîchissement le remplissage de rectangles avec ces textures. Il n'y a rien de plus rapide.
 
J'appelle bien setDisplay. Et vous sauriez comment utiliser la sdl pour iPhone ? Avec le simulateur ça fonctionne bien mais quand je compile en device j'ai une erreur. J'ai pourtant bien suivi le protocole d'installation. J'ai cherche d'autres libs equivalentes pour iphone sans succès.
 
A force d'insister, j'ai finis par trouver une librairie intéressante pour le dev de jeux sur iphone. Elle s'appelle Cocos2d, propose un moyen très facile pour générer des animations, de gérer le temps et le fps. Il fonctionne via différentes "scènes" qui s'enchainent dans le jeu, que l'on peut mettre en pause, ajouter à la pile des scènes et faire pop la scène courante. On peut enchainer les chaines via différentes transitions. Il propose également un système de particules des plus simples à utiliser ( les systèmes générés sont basiques, mais il n'est pas dur de sous classer ce système pour lui faire faire ce que l'on veut ), le code est bien présenté et simple à comprendre.

La librairie semble être suivie, puisqu'il y a environ 3 mises à jour par mois. Et les performances ont l'air tout à fait correctes pour les quelques tests que j'ai fait. Bien supérieures à QuartzCore en tout cas, qui visiblement n'utilise pas l'accélération matérielle du iPhone contrairement à openGLES sur lequel est basé Cocos2d.

Il y a également un gestionnaire de collisions, très pratique. Enfin vraiment de quoi être productif, l'interface publique est vraiment très simple à manier. De quoi développer un jeu très facilement, et surtout, rapidement. La documentation propre est claire.

La librairie est à la base développée en python, et a été portée en objective-C sur iPhoneOS.

Les liens à présent :

accueil du projet : http://cocos2d.org/.
documentation pour la version iphone :http://www.sapusmedia.com/cocos2d-iphone-api-doc/index.html.

En espérant avoir pu guider du monde, car ça fait quand même un mois que je patoge à trouver quelque chose de correct pour développer un jeu. J'étais pas loin de commencer à développer mes propres outils basés directement sur openGLES ( niveau productivité c'est pas génial ).
 
Effectivement, si c'est pour l'iPhone je comprends mieux.

Cocos2D est très sympa. Je te l'aurais conseillé. Dans tes questions, précises bien que tu développes pour iPhone/iPod (D'autant que tu parles de NSView et pas d'UIView).

PS: Ne pas oublier de désactiver le mode Thumb dans ton projet perso pour avoir des performances optimales.
 
J'ai fait quelques essais avec l'AppKit avant de me lancer sur le iPhone à vrai dire, mais j'ai lu je ne sais plus où ( désolé pour la source ), que QuartzCore ne bénéficiait pas de l'accélération matérielle sur le iPhone. Etant donné que QuartzCore est basé sur openGL ça me parait bizarre tout de même. On peut faire tourner des shaders glsl sur le iPhone via openGL ES, il doit donc y avoir un processeur graphique.

Faudrait regarder le code de QuartzCore, mais il y a quelque chose qui close dans l'histoire, enfin bref, cocos2d conviendra bien sur ce coup là.