Curieux de développer des jeux en 3D? C'est le moment d'apprendre! Cette série de tutoriels en cinq parties montrera comment créer un jeu simple avec ShiVa3D Suite, un moteur de jeu 3D multi-plateforme et un outil de développement. Cette série était à l'origine destinée aux membres Tuts + Premium uniquement, mais sera plutôt offerte gratuitement à la communauté, chaque partie étant publiée consécutivement au cours des 5 prochains jours. Continuez votre lecture pour commencer votre voyage dans la programmation 3D!
Dans cette série de didacticiels, nous présenterons le développement de jeux 3D pour plates-formes Android à l’aide de ShiVa3D Suite. Le développement d'une application Android avec des graphiques 3D peut être difficile pour plusieurs raisons. Les développeurs doivent connaître l’API OpenGL et l’API Android spécifique qui la prend en charge. En outre, le développement graphique 3D peut inclure du code C / C ++ natif pour des raisons de performances, en plus du code Java / Objective-C. Cela augmente le niveau de connaissances et les efforts requis pour développer une application Android 3D. En outre, la création de graphiques 3D implique une expertise unique, indépendante des compétences en programmation Java ou C / C ++. En résumé, le développement d'applications 3D nécessite des compétences avancées issues de différentes disciplines.
ShiVa3D Suite est un ensemble d’outils conçus pour développer des applications 3D multiplates-formes. Ces outils facilitent la conception et la composition de votre application en fonction de tâches et de concepts spécifiques. Par exemple, vous pouvez séparer un modèle visuel 3D de son comportement et travailler sur ces aspects indépendamment. En outre, le développement de jeux dans la suite ShiVa3D permet d’abstraction du jeu à partir de la plate-forme cible concernée. Les jeux développés avec cette suite peuvent être déployés sur plusieurs plates-formes cibles, notamment Windows, iOS et Android OS, entre autres..
Ce didacticiel explique comment développer un jeu en 3D pour la plate-forme Android à l'aide de deux éléments principaux de la suite ShiVa3D, l'éditeur ShiVa et l'outil de création ShiVa. Le système d'exploitation cible de ce didacticiel est Android 3.2 (Honeycomb). Toutefois, nous expliquerons également comment porter le jeu sur des appareils iOS, tels que l'iPhone / iPod Touch et l'iPad / iPad2..
Ce tutoriel a été organisé en une série de 5 parties. Dans la première partie, nous présenterons l’application du didacticiel, présenterons divers concepts de ShiVa3D et les principaux outils de la suite ShiVa3D. Dans la première partie, nous expliquerons également les fichiers de l’archive de téléchargement accompagnant ce didacticiel. Dans la deuxième partie, nous commencerons par décrire comment développer le jeu à l’aide de l’éditeur ShiVa. Nous allons présenter les modules de l'éditeur ShiVa utilisés dans le développement de l'application de tutoriel. Ensuite, nous parlerons des fichiers de modèle Collada représentant les personnages principaux de l’application. Enfin, nous aborderons quelques étapes initiales pour créer l’application, telles que la création du jeu et de la scène, ainsi que l’importation des modèles Collada..
Dans la partie 3, nous montrerons comment modifier la scène de notre application. Nous allons également commencer à entrer le code pour les AIModels du jeu. Dans la partie 4, nous allons terminer le codage des modèles AIM restants et effectuer des tests unitaires en animant le jeu. Nous exporterons ensuite le jeu à partir de l'éditeur ShiVa pour l'importer dans l'outil de création de Shiva. Enfin, nous allons discuter de deux options de création différentes dans l'outil de création de Shiva: une pour générer un exécutable Android et une autre pour générer un projet Eclipse..
Dans la partie 5, nous commencerons par personnaliser le jeu dans Eclipse. Cela inclura la configuration du projet Eclipse, les modifications de code et la construction du code Java et des bibliothèques natives. À ce stade, nous aurons terminé le didacticiel en termes de développement et de déploiement. Dans la suite de la partie 5, nous examinerons le code, discuterons du portage du jeu sur des appareils iOS et donnerons quelques conclusions..
Le modèle Collada et les fichiers images associés pour le canard de baignoire jaune ainsi que le modèle Collada pour l'œuf sont une gracieuseté de Sony Computer Entertainment Inc. Ces modèles ont été téléchargés à partir de la section Échantillons de base de la banque de modèles collada.org, et sont sous licence selon les termes de la licence SCEA Shared Source License.
La texture "marbre" utilisée à l'arrière-plan a été téléchargée à partir du site http://www.texturewarehouse.com et est sous licence Creative Commons License, Attribution-NonCommercial-ShareAlike 2.0..
L'auteur a grandement bénéficié d'un livre sur ShiVa3D, intitulé Introduction à la programmation 3D avec ShiVa. De plus, le code de gestion des événements multitouch expliqué dans la section "Révision du code" a emprunté une technique introduite dans un tutoriel sur le site du développeur ShiVa3D, nommée Multitouch Management..
Le jeu commence par un écran de démarrage qui affiche les personnages principaux du jeu: un canard de baignoire jaune au premier plan et un œuf derrière, comme indiqué ci-dessous..
Ensuite, l'écran principal du jeu apparaît avec deux objets, le canard et l'œuf. Le canard effectue un mouvement angulaire dans un espace 3D sur un plan fixe défini par y = 3. L'œuf ne peut se déplacer que sur une droite définie par x = 0, y = 3. Le mouvement du canard et de l'oeuf dans les axes globaux x, y, z est présenté ci-dessous.
En même temps, le canard tourne autour de ses axes locaux x, y, z, indépendamment de sa rotation globale, comme indiqué ci-dessous..
De même, l'œuf tourne autour de son axe x local, indépendamment de son mouvement global (voir ci-dessous)..
Le mouvement (global) de l'œuf le long du trajet linéaire peut être contrôlé par l'action tactile unique de l'utilisateur sur l'écran. Si le doigt de l'utilisateur se déplace de gauche à droite, l'œuf se déplace dans la direction z négative. Inversement, si le doigt de l'utilisateur se déplace de droite à gauche, l'œuf se déplace dans la direction z positive. (Voir ci-dessous.)
À partir de la géométrie de la figure 2, observez que le chemin linéaire décrivant le mouvement global de l'œuf se situe sur le plan fixe sur lequel le canard effectue son mouvement global. Par conséquent, le canard et l'œuf peuvent entrer en collision aux deux points d'intersection définis par la trajectoire linéaire de l'œuf et la trajectoire angulaire du canard. Les points de collision sont montrés dans le diagramme ci-dessous.
Si le canard et l'œuf entrent en collision, la rotation du canard changera de sens, du sens horaire au sens contraire, ou inversement.
Le but du jeu est de percuter l’oeuf et le canard autant de fois que possible. Chaque fois qu'une collision se produit, le score de l'utilisateur, affiché dans le coin inférieur droit de l'écran, sera incrémenté. En outre, l'appareil Android vibre pendant une durée de 100 millisecondes..
L’utilisateur peut redémarrer le jeu en appliquant une action tactile double (par exemple, en déplaçant deux doigts sur l’écran) comme indiqué ci-dessous..
Avant le redémarrage de l'application, un message d'information s'affiche pendant environ une seconde, comme indiqué ci-dessous..
Lorsque l'application redémarre, les positions du canard et de l'œuf ainsi que le score initial sont tous réinitialisés..
Dans cette section, nous aborderons les concepts de base du développement de jeux 3D avec ShiVa3D. La majeure partie de la discussion ici est empruntée à la documentation originale de ShiVa3D. Pour plus d'informations, veuillez consulter http://www.stonetrip.com/developer/doc/ et le manuel d'utilisation fourni avec l'éditeur ShiVa..
Jeu représente un jeu, l'entité principale de l'application. Il encapsule tout le reste de l'application, tels que caméras, scènes, modèles, etc. Le jeu est une unité de déploiement autonome..
Scène représente un lieu ou une vue associée au jeu. Il existe un ensemble d'objets ou de modèles associés à une scène. Un jeu peut avoir plus d'une scène. Pour des raisons de simplicité, le jeu de l'application de tutoriel comporte une seule scène..
Caméra représente un point de vue dans le jeu. L'utilisateur verra le jeu à travers la caméra. Une caméra peut se déplacer d'une position à une autre ou sa direction peut être modifiée. Dans notre tutoriel, la caméra restera fixe.
Modèle est un objet ou un ensemble d'objets avec divers attributs tels que la forme, la lumière et le capteur. Dans notre jeu, il existe deux modèles: un canard et un œuf. Ce sont des objets en trois dimensions qui jouent un rôle particulier dans notre jeu. Chaque rôle du canard et de l'œuf possède son propre AIModel (voir ci-dessous) pour décrire ce rôle via un code..
AIModel implique «intelligence artificielle» et représente le comportement. Un AIModel peut être associé à un utilisateur qui joue le jeu ou à un objet du jeu. Dans ce tutoriel, nous n'utiliserons que l'objet AIModels. Un AIModel peut avoir des fonctions, des gestionnaires, des états et des variables pour décrire les comportements spécifiques.
Scénario contient le code dans un AIModel, par exemple, le code d'une fonction ou d'un gestionnaire. Le langage de script dans ShiVa3D est Lua. (http://www.lua.org)
Capteur peut détecter certains événements physiques. Dans notre jeu, le canard et l'œuf ont des capteurs de collision pour détecter une collision. Lorsqu'un capteur détecte un événement, il peut être géré par le gestionnaire d'événements approprié dans le modèle AIM associé à l'objet contenant le capteur..
HUD signifie «affichage tête haute» et est un terme utilisé pour représenter divers widgets d'interface utilisateur tels que des boutons, des étiquettes, des listes et des curseurs, permettant à l'utilisateur d'interagir avec le jeu. Les seuls composants HUD que nous allons utiliser dans notre jeu sont les étiquettes de texte..
Pour développer notre application de tutoriel, nous utiliserons la version gratuite de la suite ShiVa3D (http://www.stonetrip.com/download.html), qui comprend ShiVa Editor PLE (édition d'apprentissage personnel) et l'outil de création ShiVa. Le diagramme ci-dessous donne un aperçu du processus de développement que nous avons utilisé avec ces outils..
Laissez-nous discuter des étapes individuelles de ce processus.
ShiVa Editor contient divers composants permettant de développer et de tester un jeu en 3D à partir de rien. Une caractéristique importante de ShiVa Editor est qu’un jeu développé avec cet outil peut être déployé (après avoir été créé dans ShiVa Authoring Tool) sur différents appareils dotés de systèmes d’exploitation différents (par exemple, un ordinateur fonctionnant sous Windows, une tablette avec Android OS ou iPhone).
Certaines des actions de base que vous pouvez effectuer avec l’éditeur ShiVa sont les suivantes:.
L'objectif principal de Shiva Authoring Tool est de convertir un jeu créé via l'éditeur ShiVa en une application pouvant être déployée sur un appareil particulier (par exemple un iPhone, un iPad ou une tablette Android). Certaines restrictions s’appliquent au système d’exploitation de la machine exécutant Shiva Authoring Tool et du périphérique cible à convertir. Par exemple, l'outil de création Shiva fonctionnant sur un ordinateur Windows ne peut pas générer d'application iPad ou iPhone. Dans ce tutoriel, nous avons utilisé un PC Windows comme machine de développement et notre plate-forme cible est Android. Les informations ci-dessous s'appliquent à cet environnement particulier.
Certaines des actions de base que l’on peut effectuer avec Shiva Authoring Tool sont les suivantes:.
Remarque: pour chaque type de création, il existe deux options de génération: Distribution et Développement. Dans ce tutoriel, nous ne discuterons que du type de build de développement..
On peut personnaliser le jeu dans Eclipse comme suit.
Pour utiliser l'outil de création ShiVa dans l'environnement Windows pour le développement Android, nous avons utilisé le logiciel pré-requis suivant. Notez qu'Eclipse et ADT pour Eclipse ne sont nécessaires que si vous souhaitez générer un projet Eclipse pour la personnalisation du code. Pour plus de détails, voir http://www.stonetrip.com/developer/doc/authoringtool/installation..
Logiciel | Version utilisée dans l'application du tutoriel |
SDK Android | révision 13 (Android 3.2) |
NDK Android | révision 7 |
Cygwin, GNU make package | version 3.82.90 |
Apache Ant | version 1.8.0 |
SDK Java | version 1.6 |
Éclipse | version 3.7 |
ADT pour Eclipse | version 16.0.1 |
Notez que notre objectif principal dans ce tutoriel est Android 3.2 (Honeycomb), pour lequel l'application a été testée..
Dans cette section, nous allons donner une description des fichiers du fichier d’archive accompagnant ce tutoriel..
Le fichier archive a trois sous-dossiers: set1, set2 et set3.
Dans la première partie de ce didacticiel, nous avons présenté l’application du didacticiel, abordé divers concepts de ShiVa3D ainsi que les principaux outils de la suite ShiVa3D. Nous avons également expliqué les fichiers de l’archive de téléchargement accompagnant ce didacticiel. Dans la deuxième partie, nous commencerons par décrire comment développer le jeu à l’aide de l’éditeur ShiVa. Nous allons présenter les modules de l'éditeur ShiVa utilisés dans le développement de l'application de tutoriel. Ensuite, nous parlerons des fichiers de modèle Collada représentant les personnages principaux de l’application. Nous discuterons ensuite des étapes initiales de la création de l'application, telles que la création du jeu et de la scène, ainsi que l'importation des modèles Collada..