Cocos2D
Introduction
Afin de réaliser ce programme, je voulais démarrer avec un outil de développement cross-plateform spécialisé dans les jeux.
Après quelques recherches Cocos2D était alors le choix parfait. C’est un framework open-source et facile à prendre en main.
En effet, l’idée était aussi d’étendre la portée de la réalisation de l’application en dehors des plates-formes Apple.
Ainsi mon choix a porté sur Cocos2D-x, le petit frère de Cocos2D qui permet en plus le développement sur Android, Windows Phone, Bada, Windows et Linux.
La différence entre Cocos2D et Cocos2D-x est que le premier est développé en Objective-C et le second en C++. Cependant, les développeurs ont bien fait leur travail pour sortir une solution qui est extrêmement proche où l’on manie les classes NSObject par des classes CCObject.
Ainsi travailler sur l’un ou l’autre environnement était pareil, sauf que sous Cocos2D-x il est possible de déployer son application sur plus de plates-formes sans faire d’ajout supplémentaire de lignes de code commun au jeu.
Principe
Pour faire simple, à partir du moment où un terminal quel-qu'il soit support OpenGL, alors il est possible d’avoir un port Cocos2D-x sur celui-ci.
Ensuite, dans le core de ce projet, on trouve des classes pour manier les Graphismes, l’Audio, le Réseau, les Threads, …
L’idée est basée sur les Nodes (ou Noeuds) dont héritent par exemple les Sprites, les Layers, les Scènes. Chaque noeud connaît sa position relative à son parent, et un Noeud peut-être composé de plusieurs sous-Noeuds.
Pour faire classiquement un Jeu, on le découpe alors en plusieurs Scènes (ex : Le Menu du jeu, la scène d’Intro, le Jeu en lui même, la scène de Fin).
Chaque Scène aura plusieurs Layers (ex : un Layer graphique, un Layer qui gère l’interaction utilisateur).
Et donc on fini dans ces Layers par charger des éléments graphiques tels que les Sprites, qui par exemple seront représentées par des Objets que l’on aura défini pour découler le mécanisme du Jeu.
Évidement cette présentation succincte n’est qu’une introduction de ce que l’on peut faire avec Cocos2D-x, le site internet sera bien plus approprié si vous souhaitez vous même vous renseigner dans son fonctionnement.
Le développement du jeu
Dans mon cas, je souhaitais reprendre une structure de fichier propre à mon expérience passée, un peu différent de l’approche vue par Cocos2D. C’est à dire quelque chose de cohérent et simple, lorsqu’on ouvre le dossier source, on voit apparaître le dossier Common pour lequel on retrouve les sous-dossiers :
- Src : les sources commune au Jeu ainsi que les Bibliothèques utilisées dont Cocos2D, Archivist pour manier les sauvegardes, JSPP pour manier des structures “à la javascript” en C++.
- Bin : tous les graphismes, les fichiers audio commun au jeu.
Puis ensuite, les dossiers propres à chaque plateforme du Jeu avec la même structure de dossier.
Le Jeu étant assez simple, il est composé d’une seule Scène (GameScene.h) pour laquelle deux Layer sont présents : le Layer du Jeu (Game.h) et le Layer du Menu (Menu.h).
La classe Game se charge de gérer le déroulement du jeu en lui même, le plateau de jeu, les cartes (Card.h).
La classe Menu se charge de gérer les préférences utilisateurs à travers l'interaction par les boites de dialogues (MenuBox.h).
Les les entrées/sorties utilisateurs ainsi que le Layout sont, dans le code, configurées indépendamment pour les deux scènes.