EA2013/SimuMonde

=Environnements de simulation de monde virtuel=

Présentation

 * Auteur : Elisa Martinez (Elisa.Martinez@e.ujf-grenoble.fr)
 * Enseignants : Didier Donsez, George-Pierre Bonneau
 * Télécharger la présentation : [[File:EAM_Simulation-Monde-Virtuel.pdf]]

Résumé
En 2012, l'industrie du jeu vidéo a conservé un chiffre d'affaires de 60 milliards d'euros malgré la crise économique. Bien que les principaux supports restent le pc, les consoles de salon et les consoles portables, les supports mobiles explosent et enregistrent une augmentation exceptionnelle et concernent 10% des ventes. De nombreux logiciels sont disponibles, notamment Siafu (open source), Project Anarchy (open source spécialisé mobile) et Unity. 3D est un logiciel 3D temps réel permettant de modéliser des terrains avec de nombreuses fonctions d'éclairage et de caméra. Bien qu'il ne permette pas directement la modélisation d'objets, il permet l'importation de très nombreux formats (3D studio, Blender, Photoshop etc.).

Mots-clé
Environnement, simulation, monde, logiciel, 3D, Unity.

Abstract
In 2012, despite the economic crisis, video games industry lead to a turnover of more than 60 billon euros. Even if main supports remain computer, consoles and portable consoles, mobile supports achieve a great success and record a dramatic increase of 10%. Several software are available such as Siafu (open source), Project Anarchy (open source mobile) and Unity. Unity 3D is 3D real-time software designed to create terrains with lots of light and camera features. Objects creation is not directly available in Unity however the software manages the import of various formats (3D studio, Blender, Photoshop etc.).

Key-words
Environment, simulation, world, software, 3D, Unity.

Contexte
Quelque soit la dimension (2D, 2.5D, 3D), la simulation de mondes virtuels est aujourd'hui utilisée dans de nombreux domaines, dont les principaux sont les applications de simulation et les jeux vidéo qui, malgré la crise économique ont conservé un chiffre d'affaires de 60 milliards d'euros en 2012. Les principaux supports utilisés pour la simulation d'environnements virtuels sont le pc, les consoles de salon et les consoles portables, les supports mobiles. Bien que plus de 50% du chiffre d'affaire concerne encore les consoles de salon (XBox360, PS3), les ventes sur supports mobiles explosent et atteignent 10% des ventes totales.

Aujourd'hui, de nombreux environnements de simulation de mondes virtuels sont disponibles.


 * Siafu

Siafu est un simulateur d'environnement polyvalent et open source codé en Java. Il inclut notamment de nombreux modèles d'agents et de terrains, visualisables via une interface graphique.

(Site officiel : http://siafusimulator.org/)

(Téléchargement : http://siafusimulator.org/download/)


 * Project Anarchy

Project Anarchy est un outil de développement open source gratuit pour iOS, Android et Tyzen développé par Havok. Spécialisé dans la conception de jeux pour supports mobiles, il rencontre un franc succès et propose de très nombreuses fonctionnalités.

(Site officiel : http://www.projectanarchy.com/)

(Téléchargement : http://www.projectanarchy.com/download)


 * Unity 3D

Unity est un logiciel complet et très largement utilisé tant par les particuliers que par les professionnels. En effet, en plus de permettre l'édition de mondes 3D à l'aide de nombreux outils pré-intégrés, une nouvelle fonctionnalité a récemment intégré la possibilité d'éditer du 2D.

(Site officiel : http://unity3d.com/)

(Téléchargement: http://unity3d.com/unity/download)

Unity 3D : Présentation
Unity 3D est un logiciel 3D temps-réel permettant de modéliser des terrains avec des fonctionnalités de textures, éclairage et caméra avancées. Unity se positionne sur des nombreux supports et a notamment permis de réaliser Call of Duty sur iOS, Wasteland2 sur Linux, Mac et PC, ou encore République sur Android, iOS, Mac et PC.

Spécifications
Unity ne permet pas directement la modélisation d'objets 3D; il est seulement possible d'appliquer des textures sur des formes basiques (boules, cylindres, cubes etc.). Cependant, il est possible d'importer de très nombreux formats de données :
 * Textures avec couches depuis Photoshop,
 * Fichiers audio ou vidéo,
 * Scripts (JavaScript, C#, Boo),
 * Squelettes,
 * Animations,
 * Modèles 3D depuis Maya, 3D Studio ou Blender par exemple.

De plus, Unity présente l'avantage de proposer différents types de licences pour particuliers ou professionnels :
 * Licence gratuite,
 * Licence Pro (~1500€) permettant la gestion d'ombres dynamiques, le stream d'audio et vidéo, et l'intégration de scripts C#,
 * Licence IPhone permettant notamment des interactions particulières avec XCode.

De nombreux composants sont pré-intégrés dans le logiciel, y compris dans la version gratuite. On y retrouve notamment un moteur physique (basé sur Physx de Nvidia), un système de collisions ainsi qu'une interface intuitive drag&drop.

Enfin, il est possible d'exporter de nombreux formats stand-alone sur PC, Mac, Iphone et pour le web.

Interface d'intégration
Le logiciel propose cinq vues principales :
 * "Projet" permettant d'accéder rapidement à la liste des éléments des objets,
 * "Inspecteur" permettant d'accéder et de modifier les propriétés des différents objets,
 * "Hiérarchie" permettant de visualiser la hiérarchie des objets du projet,
 * "Scène" permettant l'édition du monde virtuel,
 * "Jeu" permettant un aperçu direct du résultat en "vue personnage" depuis une caméra disposée sur le terrain.

En vue "Scène", de nombreux objets "colliders" sont prédéfinis. On retrouve toutes les formes classiques (boules, cylindres, cubes, etc.) ainsi que quelques formes particulières.

Grâce à son aspect réseau temps-réel, Unity est particulièrement adapté à la création de MMORPG (Massively Multiplayer Online Role Playing Games) ainsi qu'à l'intégration web grâce au Unity Web Player.

Démonstration
Les instructions ci-dessous permettent de créer en quelques minutes un monde virtuel 3D avec Unity 4.3 :

Prérequis
 * Télécharger une texture d'herbe (format carré), par exemple : http://air.imag.fr/index.php/File:Grass.jpg
 * Télécharger une image de terrain en noir et blanc contrastée, par exemple : http://air.imag.fr/index.php/File:Map.png
 * La transformer en fichier ".raw"

Importations
 * Importer "Water (Basics)", "Skyboxes" et "Character Controller" (Menu Assets -> Import Package)

Créer un terrain
 * Menu GameObject -> Create Other -> Terrain
 * Dans la vue inspecteur, cliquer sur l'icône "Settings"
 * Cliquer sur Import raw et sélectionner le fichier raw précédent
 * Menu GameObject -> Create Other -> Directional Light

Personnage principal
 * Dans la vue "Projet", placer la caméra via drag&drop (Assets -> Standard Assets -> Character Controllers -> First person controller)
 * Positionner l'objet légèrement au dessus de la hauteur du sol du terrain

Ciel
 * Dans la vue "Hiérarchie", sélectionner "First Person Controller" -> Main camera
 * Menu Component -> Rendering -> Skybox
 * Dans la vue "Inspecteur", cliquer sur l'icône "ʘ" dans la section "Skybox"
 * Sélectionner "Sunny1 Skybox"

Texture
 * Dans la vue "Hiérarchie", cliquer sur l'objet "Terrain"
 * Dans la vue "Inspecteur", cliquer sur l'icône "Paint texture"
 * Cliquer sur Edit texture -> Add texture -> Select, puis sélectionner la texture d'herbe
 * Pour plus de netteté, changer (x=15 et y=15) en (x=3 et y=3) et valider

Eau
 * Dans la vue "Projet", placer l'eau sur le terrain via drag&drop (Assets -> Standard Assets -> Water (Basic) -> Daylight simple water)
 * Dans la vue "Inspecteur", cliquer sur l'icône "ʘ" dans la section "Water Plane Mesh"
 * Sélectionner "Plane"
 * Étendre sur toute la surface du terrain

Jouer
 * Cliquer sur l'icône "Play" pour pouvoir parcourir la carte via le First Person Controller

(Liens tutoriaux : http://unity3d.com/learn/tutorials/modules)

Références

 * http://www.snjv.org/fr/industrie-francaise-jeu-video/
 * http://www.afjv.com/news/2765_les-plates-formes-de-jeux-video-sur-support-physique.htm
 * http://unity3d.com/
 * http://www.projectanarchy.com/
 * http://siafusimulator.org/
 * http://fr.wikipedia.org/wiki/Unity_(moteur_de_jeu)