Projet VR "Sauvons Mars" : L'Interaction au service de la Simulation

Jeu de Gestion et de Simulation en Réalité Virtuelle

Type : Projet Académique
Durée : 2 mois
Technologies : Unity, C#, XR Interaction Toolkit
Focus : Gameplay VR, UI 3D, Game Logic

Contexte du Projet

Scénario : En 2137, la Terre est submergée par ses propres déchets. Dans un acte désespéré, le gouvernement planétaire les envoie sur Mars. Cinquante ans plus tard, l'humanité a quitté sa planète d'origine et votre mission est de réparer les erreurs du passé : nettoyer Mars pour en faire le nouveau berceau de l'humanité.

"Sauvons Mars" est un jeu qui utilise ce scénario pour sensibiliser aux enjeux écologiques. L'objectif était d'exploiter les forces de la VR — l'immersion et l'interaction directe — pour créer une expérience où le joueur devient acteur de la dépollution.

Démonstration Vidéo

Note : La capture vidéo peut présenter quelques saccades dues à la charge de l'enregistrement, non présentes dans l'expérience de jeu réelle.

Un Gameplay Bâti sur l'Interaction VR

Plutôt que de reposer sur des clics de souris, le gameplay a été entièrement pensé autour d'interactions physiques et intuitives.

  • Interaction Physique Directe : Le cœur du jeu est la manipulation. Le joueur doit :
    • Activer les machines en appuyant physiquement sur des boutons 3D.
    • Saisir les déchets qui défilent avec ses mains virtuelles (XR Grab Interactable).
    • Trier activement en jetant chaque déchet dans la bonne poubelle.
  • Gestion Stratégique via Interface Diégétique : La complexité du jeu est gérée via un grand écran de contrôle intégré à l'environnement, où le joueur peut consulter son inventaire, acheter des machines et améliorer ses équipements.
  • Un Monde Réactif et Guidé : Le feedback est essentiel. Des sons immersifs, des jingles de succès et des indicateurs visuels clairs (boutons qui changent de couleur) guident et récompensent le joueur.

Galerie d'Images

Ma Contribution : Architecture de l'UI et Logique de Jeu

Mon rôle s'est articulé autour de l'architecture complète de l'interface utilisateur et de la logique de jeu sous-jacente. J'ai conçu l'écran de contrôle non pas comme un menu, mais comme une pièce maîtresse interactive.

Techniquement, j'ai résolu le défi de la lisibilité en VR en adoptant TextMeshPro. Une étape cruciale fut la résolution d'un bug d'interaction : une première version de l'UI bloquait le `raycast` du contrôleur. J'ai pris la décision de retirer les `UI Panels` problématiques pour garantir une fonctionnalité parfaite, un arbitrage essentiel en développement. Cette expérience a souligné l'importance de construire l'UI sur un "XR UI Canvas" avec un Tracked Device Graphic Raycaster.

Extraits de Code C#

1. Gestion de la Progression Exponentielle

Pour rendre les améliorations significatives, leur coût et leur rendement suivent une progression exponentielle.

// Dans Ecran.cs
private int ProductionAmount(int level)
{
    // La production double à chaque niveau : 1, 2, 4, 8...
    return (int)Mathf.Pow(2, level - 1);
}

private int MachineEnergyConsumption(int level)
{
    // La consommation suit la même courbe
    return 5 * (int)Mathf.Pow(2, level - 1);
}

2. Production Asynchrone avec les Coroutines

Chaque machine produit des ressources de manière asynchrone sans bloquer le jeu, grâce à une coroutine.

// Dans Ecran.cs - Méthode d'amélioration
private void UpgradeMachine1()
{
    // ... (vérification des ressources)

    // Redémarrer la coroutine est crucial pour mettre à jour la vitesse
    if (produceMachine1Coroutine != null)
        StopCoroutine(produceMachine1Coroutine);
    produceMachine1Coroutine = StartCoroutine(ProducePlastic());
}

Potentielles Améliorations

  • Intégrer un système de feedback haptique pour sentir les interactions.
  • Développer des interactions plus complexes pour les machines, avec des mini-jeux de maintenance.
  • Ajouter des effets de particules lors du recyclage pour un meilleur feedback visuel.
  • Implémenter un système de sauvegarde de la progression du joueur.