I. Introduction▲
Project Anarchy est un moteur 3D regroupant les outils de Havok dans une suite complète facilitant la création de jeux vidéo. L'outil permet de développer vos jeux à l'aide d'outils simples et vous permet aussi de réaliser des scripts en Lua et C++.
Stuart Johnson, développeur chez Havok, a profité de son passage à Paris pour tenir une session à l'école d'art digital : Isart. Au cours de celle-ci, il a utilisé Project Anarchy pour réaliser un prototype de jeu 3D Android en une heure. J'ai eu l'occasion d'assister à cette session et vous en propose un compte-rendu détaillé.
II. Conférence▲
Cliquez pour lire la vidéo
III. Fichiers▲
Vous pouvez télécharger :
- le projet Project Anarchy ;
- le prototype pour Android ;
- le document de Stuart Johnson décrivant étape par étape la construction du projet.
IV. Présentations▲
IV-A. Présentation de l'intervenant▲
Stuart Johnson est un vétéran dans le monde du jeu vidéo. Cela fait 35 ans qu'il programme : quinze en utilisant le langage Assembleur, notamment sur de vieilles machines très limitées, vingt en C++. Il a travaillé dans plusieurs studios de développement comme Disney Interactive, Ocean, Pop Cap et Vivendi.
IV-B. Présentation de Havok▲
Havok est une suite d'outils à la pointe de la technologie. Elle est utilisée dans plus de 500 jeux commerciaux et possède l'avantage d'avoir des mises à jour régulières. Le premier outil, le moteur physique, a été développé en 1999. Depuis, de multiples autres outils pour l'intelligence artificielle, l'animation et le rendu ont été ajouté à l'ensemble.
IV-C. Présentation de Project Anarchy▲
Project Anarchy est une version entièrement gratuite des outils Havok. Il vous donne accès au moteur physique, au moteur d'intelligence artificiel et au moteur de rendu ainsi qu'à des utilitaires.
IV-C-1. Moteur physique▲
Le moteur physique implémente les dynamiques entre les corps rigides robustes (« Robust rigid body dynamics ») et leurs contraintes. De plus, il permet une simulation multithreadé et de fondre des ragdolls (animation d'un squelette suivant des forces) aux animations.
IV-C-2. Moteur d'intelligence artificielle▲
Le moteur d'intelligence artificielle permet la génération automatique de mesh de navigation gérant même l'escalade de murs. Il gère aussi l'évitement entre personnages et les objectifs locaux.
IV-C-3. Studio d'animation▲
Le studio d'animation permet de créer vos animations, d'optimiser le fondu entre les animations. De plus, il permet d'utiliser des machines à états, possède des algorithmes de compression pour les animations et permet de créer des fondus pour les animations en ragdoll…
IV-C-4. Vision Engine▲
Le Vision Engine est un moteur de rendu en C++, dont l'éditeur de niveau WYSIWYG (What You See Is What You Get) « vForge » est réalisé en C#. Celui-ci dispose d'un système d'ajout flexible, d'un système de gestion de ressources, de plugins d'exportation pour 3DS Max, Maya et Blender et permet les itérations rapides et l'édition simultanée par de multiples utilisateurs.
IV-C-5. Outils▲
Finalement, Project Anarchy propose une multitude d'outils secondaires :
- un débogueur visuel ;
- un débogueur de script ;
- un outil d'animation ;
- Intel GPA (profile de performances) ;
- vFileServer (outil de gestion des fichiers à travers les plateformes) ;
- vFontGenerator (génération de fontes) ;
- vSceneViewer (visualiseur de scènes).
De plus, Project Anarchy permet le contrôle à distance, permettant ainsi de déboguer sur PC tout en ayant les contrôles d'une tablette. Vous pouvez scripter votre jeu en Lua et avoir une GUI en HTML 5. Finalement, Project Anarchy intègre FMOD et dans sa prochaine version Scaleform.
IV-C-6. Prix▲
Project Anarchy est totalement gratuit. Havok ne demande aucune redevance. La seule chose qui apparaîtra sur votre jeu est un écran au démarrage. De plus, votre jeu pourra être sélectionné par Intel pour les démonstrations des capacités de Project Anarchy.
IV-C-7. Support▲
Avec Project Anarchy, Havok propose des forums sur lesquels les développeurs de Project Anarchy vous répondent, des zones d'idées, des tutoriels et d'autres vidéos.
Le code source du SDK est disponible sur GitHub, où vous aurez accès aux dernières corrections et améliorations.
V. Réalisation du jeu ▲
V-A. Description▲
Le jeu (ou prototype) est constitué d'un terrain, d'une skybox, d'une boule qui peut rouler sur le terrain et que la camera suit. Le joueur peut la contrôler et renverser des barils enflammés.
Toutes les ressources utilisées pour ce projet proviennent du SDK.
V-B. Création du projet▲
La première étape consiste en la création d'un nouveau projet et d'une nouvelle scène. Pour le développement d'un jeu pour plateformes mobiles, vous devez utilisez le « Mobile Forward Renderer ». D'ailleurs Stuart le recommande pour tous les cas. Ensuite, dans les effets de posttraitement, il a activé le « Tone mapping » et finalement, il n'a pas choisi de gestion du temps de la journée.
Une fois la scène créée, vous pouvez rajouter un mesh (fichier .vmesh de terrain). Ensuite, vous pouvez ajouter un nouveau calque (« layer ») afin de séparer le terrain des éléments du jeu. Vous pouvez ajouter autant de calque que vous voulez afin de séparer les différents éléments et ainsi avoir un meilleur contrôle sur votre scène. Ainsi, vous pourrez afficher ou cacher certaines couches.
Ensuite, Stuart à ajouter la skybox. La skybox est un cube englobant la scène, constitué de six textures donnant une impression de monde infini. Il explique que les développeurs ont voulu laisser la possibilité de choisir les six textures individuellement afin de donner une plus grande liberté aux créateurs de jeux. Puis, il a défini la visibilité sur tous les niveaux de masque et une teinte orangée (pour donner une impression de coucher de soleil).
V-B-1. Lumières▲
Une fois la skybox ajoutée à la scène Stuart Johnson a ajouté des lumières. La lumière du soleil est implémentée par une lumière directionnelle. Une seconde lumière « back light » est aussi utilisé permettant de donner un effet plaisant à l'œil. En conséquence, elles sont placées pour correspondre au soleil de la texture de la skybox.
Pour que le Vision Engine prenne en compte ces modifications, il faut recalculer les lumières.
V-B-2. Brouillard▲
Le brouillard est simple à mettre en place. Auparavant, il était souvent utilisé pour cacher les limites graphiques des jeux, mais ce n'est maintenant plus le cas. Stuart a défini le brouillard pour démarrer à une distance de 1000 unités et s'étaler (« Range ») sur 16 000 unités augmentant le réalisme de la scène.
V-B-3. Entités physiques▲
V-B-3-a. Balle▲
Maintenant que l'environnement est prêt, il faut ajouter des entités. Toujours avec la méthode du glisser/déposer à partir de l'explorateur de ressources, Stuart a ajouté une « ballGunBullet ». Ensuite, il a modifié les propriétés pour que celles-ci aient une ombre dynamique (« Cast dynamic shadow »). Finalement, pour que la balle subisse les lois physiques, il a ajouté un composant (« Component ») « Havok Rigid Body » avec une masse de 25, une friction de 0.8 et une restitution de 0.2. Puis, il a défini a « True » l'option « Tight FitShape », afin que la simulation physique colle au mieux au modèle. Bien entendu, vous pouvez choisir les options qui vous plaisent suivant le résultat que vous recherchez.
Pour tester le résultat, il a cliqué sur « Animate Game ». On voit la balle rouler sur le sol.
V-B-3-b. Barils▲
Ensuite, Stuart a rajouté un baril auquel il a ajouté un composant physique comme pour la balle. Pour ne pas répéter ces manipulations, il a simplement copié l'entité pour obtenir plusieurs barils.
V-B-3-c. Cônes ▲
Il a aussi ajouter des cônes de construction, de la même manière que pour les barils.
Afin que toutes les entités soient au sol, vous pouvez les sélectionnées dans l'arborescence des entités (panneau de gauche) et faire un clic droit > « Drop to the floor ».
V-B-3-d. Camera▲
Pour compléter le jeu, Stuart a rajouté la caméra pour le joueur (composant « Player Camera ») en l'attachant à la balle. Ensuite, il a défini les propriétés de suivi (« Follow fixed ») à True et les propriétés de distance de la caméra par défaut à 1000, la distance minimale à 1000 et la distance maximale à 2000.
V-B-3-e. Contrôle▲
Finalement, il a lié un script Lua à la balle. Il avait préparé à l'avance ce script. Il permet de contrôler la caméra avec l'un des joysticks de la manette Xbox 360 et le second joystick est utilisé pour contrôler la balle. Vous pouvez trouver plus de détails sur la gestion des contrôles dans ce tutoriel.
Tous les éléments étant en place, il a testé le jeu.
V-C. Visual Debugger▲
Pour faire fonctionner le Visual Debugger, il suffit de le lancer, de le connecter à Project Anarchy, puis de lancer le jeu. Grâce à lui, vous pourrez voir ce que voit le joueur, déplacer les objets en pleine partie, afficher les forces s'appliquant aux objets. De plus, vous pouvez enregistrer une séquence d'action, l'envoyer à un autre développeur et il pourra ainsi analyser, par exemple, les bogues que vous avez rencontrés.
V-D. Portage Android▲
Pour déployer le projet sur Android, il suffit de créer un nouveau profil en sélectionnant la plateforme Android. Il est conseillé d'augmenter la valeur de la propriété « Downscale Level » afin de réduire le poids de l'application et son coût en performance pour le périphérique mobile.
V-E. Divers▲
V-E-1. Particles Editor▲
L'éditeur de particules est très puissant mais aussi très complexe. Le plus simple et de juste utiliser un des templates du SDK et de le modifier pour obtenir l'effet que vous souhaitez.
Pour utiliser des particules dans votre scène, il suffit de glisser/déposer les particules sur un objet afin de les attacher à celui-ci.
V-E-2. Préfabriqué▲
Pour ne pas répéter de multiples fois les mêmes changements de propriétés, ou configuration de composants, vous pouvez créer des préfabriqués. Sélectionnez une entité entièrement configurée et vous pourrez la définir comme modèle préfabriqué et ainsi, rajouter d'autres entités exactement configurées de manière identique dans votre scène.
V-E-3. Sons▲
Les sons sont gérés de la même manière que les autres éléments de la scène. Vous pouvez les ajouter en glissant/déposant la ressource dans votre scène.
V-E-4. Musique▲
Pour obtenir une musique de fond, glissez/déposez votre musique dans la scène et définissez les propriétés afin qu'elle puisse boucler (« loop ») et qu'elle ne soit pas 3D.
VI. Questions/Réponses▲
VI-A. Quelle est la version minimum d'Android nécessaire ?▲
La version minimum d'Android, pour que les jeux créés avec Project Anarchy fonctionne est : 2.3.
VI-B. Y a-t-il une version Linux de Project Anarchy ?▲
Aucune version de Project Anarchy pour Linux n'existe, car les clients de Havok n'en ont jamais eu besoin.
VI-C. Quelle est la configuration recommandée ?▲
Windows 7 et une carte graphique supportant le shader model 3. Les versions compatibles de Visual Studio pour le développement sont 2008, 2010 et 2012.
VI-D. Est-il possible de faire des jeux 2D avec Project Anarchy▲
Cela est possible, mais ce n'est pas ce qu'il y a de plus simple. Stuart conseille de créer son propre moteur pour les jeux 2D, ce qui nécessitera moins de travail.
VI-E. Est-il possible d'avoir un rendu OpenGL sur PC ?▲
Non, OpenGL n'est utilisé que pour les périphériques mobiles. Même si le moteur de rendu n'utilise pas la même bibliothèque du PC au périphérique mobile, le langage de shader est unique. De plus, il n'y a pas de possibilité de distribution de jeu pour Windows dans Project Anarchy.
VII. Remerciements▲
Je remercie Stuart Johnson pour sa présentation expliquant comment utiliser Project Anarchy.
Je tiens aussi à remercier Anthony Charbonnier pour m'avoir contacté et indiqué cet événement.
Je remercie Torgar pour sa relecture orthographique.