
Un monde VRChat où un personnage vous encourage pendant que vous faites des pompes et des squats.
VRChat
Unity / UdonSharp
Machine à états
Conception des classes
Maker Faire
Plateforme
VRChat, développé avec Unity et UdonSharp
Entrée
Position du casque uniquement — aucune manette ni capteur supplémentaire
Mon rôle
Presque toutes les étapes : conception du projet, machine à états, conception des classes et implémentation sous Unity
Sortie
Annoncé sur Twitter en novembre 2022 ; présenté à l’Ogaki Mini Maker Faire 2022
Depuis la pandémie, le besoin de compenser le manque d’exercice à la maison — et de faire du sport en VR — a grandi. Nous nous sommes intéressés à un problème bien connu : s’entraîner seul et en silence, c’est difficile à tenir dans la durée. L’objectif était un monde d’entraînement dans VRChat où l’on peut vérifier sa posture à côté d’avatars, continuer grâce aux encouragements, et y prendre vraiment plaisir.
Le cœur technique était une contrainte d’interaction : compter les squats et les pompes en utilisant uniquement la position du casque déjà fournie par VRChat (headData.position.y), sans manette ni capteur supplémentaire. La hauteur de la tête devait être suivie en temps réel pour que chaque descente soit comptée avec précision.
Contrainte : Aucun appareil supplémentaire : chaque répétition est comptée à partir de la seule hauteur de la tête.
Développé au sein de l’équipe ailab*, mais j’ai pris en charge presque toutes les étapes moi-même — de la conception du projet à l’implémentation sous Unity, en passant par la machine à états et la conception des classes.
Un monde d’entraînement où l’on imite l’avatar d’à côté et où l’on est encouragé à continuer.
Quatre états de jeu, et les événements qui font passer le jeu de l’un à l’autre.
De petites classes qui observent chacune l’état de jeu partagé et agissent de façon autonome.
Le monde lui-même, avec des couloirs séparés pour les pompes et les squats.
Plateforme
VRChat : le monde est construit avec Unity et UdonSharp.
Entrée
Aucun appareil supplémentaire. Le mouvement est détecté uniquement à partir des données de suivi de la tête du joueur (headData.position.y).
Gestion des états
GameStatus définit quatre états — GameStart → TrainingStart → TrainingEnd → GameEnd — et une machine à états passe de l’un à l’autre selon les événements : monter sur le tapis ou en descendre, appuyer sur Start, atteindre l’objectif, appuyer sur EXIT.
Le jeu est découpé en petites classes. Chacune observe l’état de jeu partagé et agit de façon autonome :
GameManagement
Déroulement et état du jeu.
MatON
Détection de présence sur le tapis.
PlayerUI
Écran et boutons.
Counter
Compteur de répétitions.
SoundSystem
Musique et voix d’encouragement.
CalorieCount
Affichage des calories.
Mirror
Réglages du miroir.
Le terrain comporte plusieurs couloirs — pour les pompes, pour les squats, etc. — afin que chaque joueur monte sur son propre tapis et joue indépendamment.
Pour compter précisément une répétition à partir de la seule position de la tête, j’ai ajusté les seuils et le timing des squats.
Pour que plusieurs personnes jouant sur des tapis différents ne se perturbent jamais, chaque tapis possède sa propre machine à états indépendante.
Atteindre l’objectif déclenche une voix d’encouragement — un sentiment d’accomplissement digne d’un jeu, renforcé par le son et l’interface.
Mise en ligne publique
Annoncé sur Twitter en novembre 2022 et ouvert à tous : un monde auquel n’importe qui peut jouer dans VRChat.
Ogaki Mini Maker Faire 2022
Exposé à l’Ogaki Mini Maker Faire 2022.
Accueil du concept
L’idée de pouvoir imiter l’avatar d’à côté pour s’entraîner avec une bonne posture a été bien accueillie.