- New WebGL build (data +6MB, wasm +92KB) with all bug fixes
- Fix MapSchema foreach: iterate via .Keys with explicit casts
- Fix sbyte->int cast for playersAlive Listen callback
- Updated Tutorial.unity scene
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CameraOrbitKeyboard: clic droit = unlock, clic gauche = re-lock (coherent avec PlayerController)
- CameraOrbitKeyboard: bloque les inputs quand ChatUI est ouvert
- CameraOrbitKeyboard: OnEnable ne verrouille plus la souris si un panel UI est ouvert
- NetworkManager: alimente GameHUD.SetPlayersAlive via Listen(playersAlive)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PlayerController: block WASD/jump callbacks when ChatUI is open
- PlayerController: clic droit = unlock souris, clic gauche = re-lock (n'est plus un toggle)
- PlayerController: ajoute ResetInputs() appelé à l'ouverture du chat
- ChatUI: appelle ResetInputs() quand le panel s'ouvre pour éviter les touches collées
- NetworkManager: seed les joueurs déjà présents dans la room à la connexion
(les OnAdd Colyseus peuvent être manqués si l'état est décodé avant l'enregistrement des callbacks)
- NetworkManager: garde anti-doublon dans OnPlayerAdd
- NetworkManager: fallback sphere si remotePlayerPrefab est null
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Unity build last_build remplace build_mai
- NetworkSchema.cs: correction types sbyte pour int8 (fix OverflowException Colyseus)
- StatsTracker: envoi periodique toutes les 30s, plus de dependance aux round events
- StatsTracker: cooldown client 6s pour respecter le rate-limit serveur
- StatsPage: correction row.value au lieu de row[activeTab]
- StatsPage: suppression onglet Courses (racesPlayed)
- Backend index.js: logging POST /stats/update
- Scene Tutorial: mise a jour, suppression assets obsoletes (TutorialInfo, physicMaterials)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Backend:
- GET /rooms via matchMaker.query() pour lister les salles actives
- ArenaRoom: setMetadata avec nom de salle (Salle #<id6>)
NetworkManager:
- FetchRooms() / OnRoomsRefreshed event (UnityWebRequest GET /rooms)
- JoinByRoomId(), CreateRoom() en plus de JoinArena()
- Refactoring: PrepareJoin/FinishJoin/HandleJoinError pour eviter duplication
LobbyUI:
- Redesign: panel 620x520 avec setup perso (gauche) + liste rooms (droite)
- Bouton Rejoindre par salle, Creer une salle, Rejoindre n importe
- Pseudo pre-rempli depuis PlayerPrefs
- Refresh automatique toutes les 4s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
NetworkManager: inverser ordre OnDisconnected/Cleanup pour que les listeners
aient encore acces a LocalPlayerName au moment du callback.
StatsTracker: mettre en cache le nom a la connexion comme fallback supplementaire.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ChatUI: PlayerName utilise PlayerPrefs comme fallback si non connecte
- NetworkManager: sauvegarde le nom dans PlayerPrefs a la connexion
- GameCanvas: version build bump -> 20260517b (cache bust)
- Nouveaux fichiers build_mai (data + wasm mis a jour)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Colyseus disconnectait le client si le handler chat n'était pas
déployé côté serveur. Le endpoint HTTP /chat/send broadcaste déjà
dans les rooms Colyseus, donc le path Colyseus est superflu.
Ajout poll immédiat après envoi pour affichage sans délai.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- turnDamping 7→1.5, idleDrag 3→0.2 : comportement boule plus naturel
- Fix billboard : LookRotation inversé (texte faisant face à la caméra, pas dos)
s'applique aux labels local (PlayerController) et remote (RemotePlayerController)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
userId [Type(0)] inexistant cote serveur decalait tous les champs d un
cran : x recevait y, y recevait z, positions et rotations toutes fausses.
isReady etait en [Type(23)] alors que le serveur l envoie en index 20.
Les deux bugs cassaient toute la synchronisation reseau multi.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sol top=y=0, pads/checkpoints au sol relevés de 0.01 (bottom>=0.01)
- GelOrange_E/W, GelViolet_Trap, CaptureZone_Visual : y 0.2->0.21
- CP0_Start, CP4_Finish : y 0.15->0.16
- Plateforme élevée top=y=4.5, objets relevés au-dessus :
CP1/CP2_Mid/CP3 : y 4.15->4.66, GelBleu_Elev : y 4.2->4.71
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PlayerController: MovementSpeed 5->25, ajout turnDamping+idleDrag pour virages nets
- CheckpointSystem: auto-assign checkpointIndex depuis l'array, déclenche race HUD sur CP0
- GameHUD: course visible dès passage de la porte (CP0), timer local indépendant du serveur
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Couleurs appliquées sur tous les objets (sol, murs, plateformes, gel pads, portiques, checkpoints)
- 10 panneaux TextMeshPro 3D : DÉPART, ARRIVÉE, CP1-3, ZONE DE CAPTURE, tooltip gel pads, flèche montée
- CheckpointSystem rewired vers les nouveaux triggers (CP0-CP4)
- CaptureZone repositionnée sur CaptureZone_Visual (0, 0, -4)
- Scène sauvegardée
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Lit Mouse.current.delta directement (pas d'accrochage au bord d'écran)
- CinemachineInputAxisController désactivé (on gère tout nous-mêmes)
- OnEnable/OnDisable : lock/unlock automatique selon état Player
- Clic droit = toggle cursor lock (pas besoin de maintenir)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
rolld.io pointe sur CloudFront sans exposer le port 2567.
Le game server Coolify est accessible via game.rolld.kerboul.me (Traefik).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>