Il y de cela 2 ans environ, je me suis lancé dans la construction d’un simulateur de navette spatiale, ou plutôt le développement d’un jeu d’exploration du système solaire integré dans une cockpit fait maison.
Je vais donc présenter dans cet article ce projet qui m’a pris beeeaaaauuuccouuup de temps, mais qui a été vraiment super à réaliser.
Projet Initial
Comme je le disais en intro, l’idée de ce projet était de concevoir un jeu d’exploration du système solaire et d’intégrer ce jeu dans une cabane comportant un cockpit interagissant avec ce jeu. Cette cabane serait ensuite placée dans la chambre de mon beau-fils, accoté à son lit mezzazine.
Quelques images du projet initialement pensé :
Organisation du Projet
Ce projet s’est déroulé selon plusieurs phases, et s’est étalé sur environ 2 ans (avec une bonne pause au milieu, donc un temps de développement d’environ 6 mois en cumulé je dirais).
Voici les différentes étapes de ce projet :
- Définition du projet et besoins (dessins/plans préliminaires, besoins HW & SW)
- Développement du jeu d’exploration sous Unity (C#)
- Plans finaux de la cabane
- Construction du panneau de contrôle (avec intégration de toute l’électronique)
- Tests du jeu après intégration
- Bug fix / améliorations
- Construction du reste de la cabane
- Installation
Définition des besoins
Pour réaliser ce projet, j’ai tout d’abord mis sur le papier toutes les idées que j’avais (forme de la cabane, intégration avec le lit, avoir un cockpit intégrant un écran, des boutons lumineux, des joysticks, gameplay, … ).
Les éléments essentiels à ce projet ce sont vite démarqué: du bois pour cabane, le combo PC + écran, un set de boutons/joysticks d’arcade. Le reste étant principalement du travail de dev. Au fil du projet d’autres éléments se sont ajouté: des potentiomètres, des leds, des interrupteurs (des éléments « immersion », n’ayant aucunes influence sur le jeu lui même). Je les présente plus bas dans cet article.
Développement du jeu
Le plus gros du boulot a été le développement du jeu. La raison principale est que je n’y connais rien en développement de jeu vidéo. Toutefois, grâce à mon boulot, j’avais déjà pu touché un peu au framework Unity, et je développais déjà un peu en C#. Bon, l’environnement de développement posé, il faut maintenant se mettre au boulot.
1ère étape : définir le jeu, son gameplay, ses fonctions…bref, faire des spécs.
Principe du jeu :
Le jeu est très simple, il s’agit d’un jeu d’exploration du système solaire. Ni plus, ni moins. En conséquence, il s’agit de piloter un vaisseau (vue à la 1ère personne, pour simuler la vue depuis la fenêtre du cockpit). On peut donc se balader n’importe où, et aller découvrir les différentes planètes et le soleil.
Lorsque le jeu commence, le joueur se trouve en orbite autour de la Terre, face à l’ISS d’où il vient de se détacher.
Fonctionnalités :
Voici les quelques fonctionnalités du jeu :
- Déplacement libre
- Gestion de la vitesse: orbitale / nominale / boost
- « GoTo » : montre la direction d’une planète par un appui bouton
- U.F.O : déplacement automatique vers un O.V.N.I. qui se ballade de manière aléatoire au voisinage du soleil
- Restart : retour vers l’ISS
- Appuis boutons générant seulement des sons d’ambiance (« radar », «warning »).
- Banque de son d’ambiances issus des missions Apollo / Discovery / Mercury (https://assetstore.unity.com/packages/audio/sound-fx/nasa-mission-audio-776)
Présentation de l’interface :
L’interface est largement inspirée de l’interface du logiciel de docking du Soyouz (d’où le cyrillique!)
- Infos tout à fait inutiles
- position spatiale de l’ovni sur la map
- temps écoulé depuis le début de la partie
- position spatiale du vaisseau sur la map
- position angulaire du vaisseau
- indicateurs de vitesse (vitesse courante / acceleration (bool) / BOOST (bool)
Objets du système solaire représentés :
Voici ci-dessous la liste des objets de notre système solaire que l’on peut visiter :
- Soleil
- Mercure
- Venus
- Terre / ISS / Lune (+LEM sur la lune)
- Mars / Phobos / Deimos
- Jupiter / Io / Europa
- Saturne
- Uranus
- Neptune
- Pluton
Tous les assets représentés ici sont des assets payants / libres que l’on peut trouver dans l’asset store d’Unity (https://assetstore.unity.com/). J’ai fais le choix d’utiliser des ressources existantes car je n’avait ni les compétences ni le temps pour les créer.
Voici donc les liens vers les différents packages d’Unity que j’ai pu utiliser :
- Le système solaire est issu du package « Solar System » développé par Adam Bielecki (https://assetstore.unity.com/packages/templates/packs/solar-system-16139). Ce package constitue la base du jeu, je n’ai gardé que les planètes et le systèmes d’orbite. J’ai développé par dessus tout le gameplay (navigation du vaisseau, pointage automatique des planètes, … ).
- La skybox « Milky Way Skybox » est développée par Adam Bielecki (https://assetstore.unity.com/packages/2d/textures-materials/milky-way-skybox-94001).
- Les assets ISS et LEM sont issues du package « NASA Space Flight Assets » développées par Unity Technologies (https://assetstore.unity.com/packages/3d/vehicles/space/nasa-space-flight-assets-756)
- L’asset UFO est issue du package « Flying Saucer PBR » développé par GamePoly (https://assetstore.unity.com/packages/3d/vehicles/space/flying-saucer-pbr-107721).
Compilation et déploiement
Le jeu a été développé avec le framework Unity, sous Windows, puis compilé et déployé pour la plateforme Unix. Le versioning du projet a été fait avec Gitlab dans mon repo privé.
Construction du cockpit
Design / plans du cockpit
Une fois le jeu assez bien avancé, j’ai pu commencer la construction du cockpit. La première étape étant de dessiner un peu mieux ce à quoi cela devrait ressembler. Les plans et croquis ont été fait sous Sketchup.
Ci-dessous une vue du cockpit en cours de dessin (ce n’est pas la version finale, les enceintes ont été par la suite délocalisées plus bas).
Le cockpit est composé de 2 parties:
- Le panneau frontal, qui comprend l’écran du jeu, et des éléments de décor (potentiomètres, LED, interrupteurs).
- Le panneau de commandes composé des boutons et joysticks permettant de contrôler le vaisseau et d’envoyer des commandes au jeu. Il y a 2 joysticks de prévu : à gauche la commande d’accélération (1 axe vertical), à droite le joystick de direction (2 axes pitch / roll)
Niveau boutons, 8 boutons « planètes » sont prévu afin de pointer la direction de chacune pour un accès plus facile parmi l’étendu du système solaire. 1 bouton de boost, pour se déplacer plus vite, 1 bouton « restart » pour recommencer la partie, 1 bouton « UFO » pour se déplacer jusqu’à l’OVNI, et 2 boutons émettant des sons de radar et de d’alarme.
Construction du cockpit
Après les plans, il est temps de passer à la phase de construction ! Direction le magasin de bricolage !
Pour réaliser l’ensemble de la cabane, il ne m’a pas fallu grand chose à savoir des grands panneau de contreplaqué de 10mm d’épaisseur, de la colle à bois, de la vis à bois, des pointes. Niveau outillage, du classique tel que scie sauteuse, scie circulaire, visseuse, ponceuse.
Voici des photos prises au court de la construction :
Construction du panneau de commandes
Construction du panneau de frontal
Construction des panneaux latéraux
On commence à en voir le bout, ici, quelques photos des panneaux latéraux. Dans celui de droite (celui qui donnera sur la chambre), j’y ai percé un hublot.
Quelques logo de l’ESA, du CNES et d’Arianespace imprimés et collé sur les panneaux pour plus de réalisme !
Assemblage Final / Installation
Après tant d’heures passées sur ce projet, la fin pointe le bout de son nez, encore un dernier effort de bricolage et voici le résultat final de la cabane installée dans la chambre :
Vidéo Démo
Voici une vidéo de démo du jeu, il y a un petit peu de lag parfois, dû à l’enregistrement en temps réel.
Résumé Matériel
Au final, niveau équipement/matériel, voici tout ce qui a été utilisé :
pour le jeu :
- 1 PC de bureau sous Ubuntu + 1 écran HDMI
- 1 kit Arcade 2 joueurs
- 2 paires de hauts parleurs (treble + medium)
pour le panneau frontal :
- 1 bouton ON/OFF lumineux (câblé sur le bouton ON/OFF du PC) 12 potentiomètres de décor
- 12 switch connectés au total à 16 LED (éléments de décor)
- 1 carte Arduino (pour alimenter les LED via un USB branché au PC)
pour la construction de la cabane :
- des panneaux de contreplaqués de 10mm d’épaisseur
- pâte à bois
- colle à bois
- visserie / pointes
- quelques tasseaux pour solidifier et assembler les panneaux
Pour terminer
Ce projet m’aura pris pas mal de temps, entre le développement du jeu, la construction de la cabane, les nombreux essais, les bug fix, les améliorations, ..Mais ce fût une expérience très enrichissante. J’ai ainsi pu me former au développement de jeu vidéo, approfondir mes connaissances sur le système solaire (sa mécanique et quelques uns de ses constituants), et développer mes compétences au travail du bois. Bref, un travail assez complet, qui a su m’animer jusqu’au bout.
Malgré le caractère amateur d’une telle réalisation, les approximations, les défauts de conception, les bugs, ou autre, je pense que ma plus belle fierté sur ce projet restera sans hésitation d’avoir réussi à faire rêver un petit garçon qui à découvert le jour de son anniversaire un vaisseau spatial dans sa chambre…
A bientôt, pour une nouvelle réalisation,
Loïc