Développement de jeux 3D avec la suite ShiVa3D Présentation du projet

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!


Introduction de la série

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..


Organisation de la série

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..


Crédits

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..


Description du jeu

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..

Figure 1. Écran de démarrage

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.

Figure 2. Canard et œuf - Global Motion

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..

figure 3. Canard - Mouvement local

De même, l'œuf tourne autour de son axe x local, indépendamment de son mouvement global (voir ci-dessous)..

Figure 4. Œuf - Mouvement local

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.)

Figure 5. Déplacer l'œuf

À 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.

Figure 6. Points de collision

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..

Figure 7. Redémarrer le jeu

Avant le redémarrage de l'application, un message d'information s'affiche pendant environ une seconde, comme indiqué ci-dessous..

Figure 8. Redémarrage du jeu

Lorsque l'application redémarre, les positions du canard et de l'œuf ainsi que le score initial sont tous réinitialisés..

Environnement de développement ShiVa3D

Concepts ShiVa3D

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..

Outils ShiVa3D

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..

Figure 9. Processus de développement ShiVa3D

Laissez-nous discuter des étapes individuelles de ce processus.

ShiVa Editor

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:.

  • Développer:
    • Créer un nouveau jeu.
    • Créer une nouvelle scène et l'associer au jeu.
    • Importer des modèles 3D, éditer leurs attributs et les positionner dans une scène.
    • Créez des AIModels, associez-les aux modèles et écrivez des scripts pour les AIModels.
    • Attachez des capteurs aux modèles et écrivez des scripts pour gérer les événements associés à ces capteurs.
    • Compiler les scripts dans le jeu.
  • Tester:
    Vous pouvez effectuer un test initial de votre jeu dans l'environnement de développement avant de le déployer sur un appareil cible. Les tests sont effectués via la fonctionnalité Animate de ShiVa Editor. Pour l'animation, vous pouvez modifier les paramètres de la taille de l'écran pour voir comment le jeu sera affiché sur le périphérique cible réel. Vous pouvez saisir un clic de souris et des événements clés à partir de la souris et du clavier de votre ordinateur de développement. Pour émuler des événements tactiles, vous aurez peut-être besoin de dispositions supplémentaires. Par exemple, pour tester un gestionnaire d'événements tactiles, une option consiste à écrire un gestionnaire pour les événements clés qui encapsule les fonctionnalités du gestionnaire d'événements tactiles. (Voir http://www.stonetrip.com/developer/1720-mix-mouse-and-multitouch.) Une autre option consiste à installer les outils de développement de périphérique (http://www.stonetrip.com/download.html). Intégrez ensuite le périphérique cible réel, exécutant le simulateur d’entrée de périphérique 3D ShiVa, avec l’éditeur ShiVa dans la machine de développement via un réseau Wi-Fi. Avec cette option, vous pouvez simuler les entrées directement à l’aide du périphérique cible..
  • Exportation:
    Une fois vos tests terminés, exportez le jeu. Cela générera un fichier avec une extension .stk. Le jeu exporté sera utilisé par l’outil de création de Shiva, qui est présenté ci-après..

Outil de création ShiVa

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:.

  • Importer: Importer le jeu exporté via l'éditeur ShiVa.
  • Création: Il existe deux types de création: package APK et projet..
    • Si le type de création est sélectionné en tant que package APK, cela créera un fichier apk prêt à être déployé sur le périphérique cible. Vous pouvez éventuellement choisir l'option d'installation pendant la construction. Cela installera automatiquement le fichier APK sur l'appareil dans le cadre du processus de construction. Si vous ne choisissez pas l'option d'installation lors de la création, le package APK résultant peut être installé ultérieurement sur le périphérique cible à l'aide de l'outil Android SDK ADB..
    • Si le type de création est sélectionné en tant que Projet, cela créera une archive zip pouvant être importée dans Eclipse en tant que projet Android. Le projet contiendra des fichiers Java et C créés par Shiva Authoring Tool. Vous pouvez modifier ces fichiers pour personnaliser davantage l'application pour le périphérique cible. Veuillez noter qu'il n'est pas nécessaire de choisir le type de création en tant que projet, sauf si vous souhaitez personnaliser davantage votre application dans Eclipse..

    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..

Éclipse

On peut personnaliser le jeu dans Eclipse comme suit.

  • Importer: importer l'application Android dans Eclipse.
  • Développer: Personnalisez le code. Vous pouvez modifier les codes Java et C générés automatiquement par Shiva Authoring Tool..
  • Build: Compilez le code Java via Eclipse. Compilez le code C et construisez les bibliothèques natives via l'utilitaire Cygwin make.
  • Installer: installez l'application sur le périphérique cible via Eclipse.

Prérequis logiciels

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..


Fichiers en téléchargement

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.

  • Le dossier set1 comprend les fichiers duck.dae, duckCM.tga, marble.jpg et sphere.dae utilisés pour créer le jeu dans l'éditeur ShiVa. Veuillez vous reporter à la section 'Développement du jeu dans l'éditeur ShiVa' pour plus d'informations sur l'utilisation de ces fichiers..
  • Le dossier set2 est composé de app_icon.png, app_icon_72x72.png, app_splash.png et app_splash_800x1280.png. Reportez-vous à la section intitulée "Outil de création Shiva" pour plus d'informations sur l'utilisation de app_icon.png et app_splash.png. Voir «Personnalisation du jeu dans Eclipse» pour plus d'informations sur l'utilisation des applications app_icon_72x72.png et app_splash_800x1280.png..
  • Dans set3, il y a trois fichiers: Duck.ste, Duck.stk et Duck_Android_final.zip..
    • Duck.ste est une exportation du jeu tutoriel Duck de l'éditeur ShiVa. Il vous fournit une version complète du jeu avec toutes ses ressources, y compris le code, ainsi que duck.dae, duckCM.tga, marble.jpg et sphere.dae. Il représente l'état final du jeu dans la section "Développement du jeu dans l'éditeur ShiVa". Si vous rencontrez un problème en suivant les instructions de cette section, Duck.ste devrait être particulièrement utile. Vous pouvez ouvrir deux instances distinctes de l'éditeur ShiVa, importer Duck.ste dans une instance en tant que référence et travailler sur l'autre instance pour exécuter les instructions. (Afin d'importer Duck.ste dans l'éditeur ShiVa, allez à Main -> Projets pour afficher la boîte de dialogue Paramètres, puis cliquez sur Ajouter pour ajouter un nouveau projet. Ensuite, dans ce projet, ouvrez l'Explorateur de données et sélectionnez Importer -> Archive. Dans le champ de texte Importer une archive, spécifiez le chemin d'accès complet à Duck.ste.)
    • Duck.stk est une exportation du jeu de didacticiel Duck from ShiVa Editor sous forme de package d'exécution Android. Ceci est entré dans l'outil de création ShiVa. Si vous le souhaitez, vous pouvez ignorer toutes les étapes de la section "Développement du jeu dans l'éditeur ShiVa", accédez à la section "Outil de création de Shiva" et commencez à créer en important Duck.stk..
    • Enfin, Duck_Android_final.zip est une archive de projet Android dans laquelle la personnalisation du code a déjà été faite. Cette archive de projet peut être bénéfique de plusieurs manières:
      • Vous pouvez vous en servir comme référence en suivant les instructions de la section "Personnalisation du jeu sous Eclipse"..
      • Si vous souhaitez ignorer les instructions de la section "Personnalisation du jeu sous Eclipse", importez-le simplement dans Eclipse. N'effectuez aucune modification de code, puis déployez le jeu sur votre appareil. (Remarque: l'emplacement de votre SDK Android doit être défini dans les préférences Eclipse de votre environnement Eclipse, comme décrit dans la section «Personnalisation du jeu dans Eclipse».)
      • Cette archive contient le fichier d'application Android Duck.apk dans le dossier Duck \ bin \ classes qui peut être facilement installé sur un appareil compatible Android 3.2 via l'outil Android SDK ADB sans Eclipse..

Remarques de clôture pour la partie 1

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..