Commit Graph

29 Commits

Author SHA1 Message Date
391c000a73 feat: systeme de lobby avec liste de rooms
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>
2026-05-17 22:14:27 +02:00
44b758360c remove: scripts CheckpointSystem, CheckpointTrigger, EliminationOverlay
Nettoie aussi les references dans GameManager, GameHUD et StatsTracker.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:59:45 +02:00
385b4f690e fix: stats jamais envoyees - OnDisconnected avant Cleanup + cache du nom joueur
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>
2026-05-17 21:55:01 +02:00
b3651f8027 fix: gameServer.define() n'est pas async dans Colyseus 0.17
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:58:47 +02:00
7327f073d8 fix: remapper F1/F2/F3 -> backtick/Tab/T pour compatibilite WebGL navigateur
- DebugNetworkUI: F1 -> backtick (`)
- KeyBindingUI: F2 -> Tab
- ChatUI: F3 -> T (ouvrir seulement), Escape pour fermer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:53:07 +02:00
b993c6b3e6 fix: chat PlayerName fallback + nouveau build WebGL 20260517b
- 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>
2026-05-17 20:21:00 +02:00
e0da6c4f00 scene: ajout ChatUI sur NetworkManager, StatsTracker sur PlayerSphere
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 19:02:09 +02:00
597bfe1723 fix: chat envoie toujours via HTTP, pas Colyseus
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>
2026-05-17 19:01:48 +02:00
01d6128209 feat: WebGL build mai 2026 + GameCanvas update
- Ajout build_mai.{data,framework.js,loader.js,wasm} dans public/unity-build/Build
- GameCanvas.jsx: préfixe build_mai, version 20260517, suppression SetServerURL (hardcodé côté Unity)
- .gitignore: exception pour frontend/public/unity-build/, règle build_mai/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 18:46:35 +02:00
5c98f1638a feat: stats + chat + frontend pages (Stats, Chat, NavBar)
Backend:
- StatsManager.js: JSON persistence, leaderboard, rate-limit 1/5s
- ChatManager.js: 200-msg buffer, JSON persistence
- index.js: routes GET/POST /stats, /chat/history, /chat/send (Zod validation)
- ArenaRoom.js: chat handler broadcasts to room + persists via ChatManager

Unity:
- StatsTracker.cs: distance, maxSpeed, jumps, bumps, checkpoints, raceTime tracking
- ChatUI.cs: F3 toggle, bottom-right panel, polling 3s, unread badge
- NetworkManager.cs: SendChatMessage() + OnMessage<ChatUI.ChatMessage>(chat)
- CheckpointSystem.cs: RegisterCheckpoint/Finish hooks
- PlayerController.cs: RegisterJump/Bump hooks, physics rebalance, billboard fix
- GameHUD.cs: LocalRaceTimer, SetTotalRounds, OnRoundStart signature fix
- GameManager.cs: spectator cam reconnect fix

Frontend:
- NavBar.jsx: fixed top nav, Accueil/Stats/Chat/Jouer
- App.jsx: page state (home/play/stats/chat) + NavBar
- StatsPage.jsx: 6-tab leaderboard, auto-refresh 30s
- ChatPage.jsx: polling 3s, localStorage name, Enter to send

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 18:33:06 +02:00
526d30c569 Fix physique boule (moins de drag) + billboard name tags vers caméra
- 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>
2026-05-17 16:47:13 +02:00
c835f932b0 Fix GameHUD.OnRoundStart signature (ajoute totalRounds)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 16:35:10 +02:00
4743c307a6 Supprime les mini-jeux (survival/teams), corrige tous les bugs identifiés
- Supprime DeathZone.cs, ZoneCapture.cs, ArenaZoneBuilder.cs
- ArenaRoom.js : mode race uniquement, fix _checkRoundEndCondition, fix _getActiveCount
- GameState.js : supprime team (Player) et deathZoneY/teamScoreRed/teamScoreBlue (GameState)
- NetworkSchema.cs : aligne sur le nouveau schéma serveur (supprime team, indices corrigés)
- NetworkManager.cs : supprime OnDeathZoneYChanged/SendDeathZoneHit/SendInZone, OnRoundStart passe totalRounds
- GameManager.cs : subscriptions OnEnable→Start/OnDestroy, fix Lobby (player visible si connecté), HandleRoundStart(totalRounds)
- GameHUD.cs : supprime blocs survival/teams, ajoute SetTotalRounds, supprime dead code
- PlayerController.cs : cache Rigidbody, fix OnCollisionStay gel (supprime else), SetSpawnPosition
- CheckpointSystem.cs : flash le prochain checkpoint actif, supprime FinishFlash vide
- LobbyUI.cs : CancelInvoke sur connexion, appelle SetSpawnPosition

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 16:28:37 +02:00
456d876847 Fix: NetworkSchema — supprimer userId fantome, corriger ordre isReady
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>
2026-05-17 15:21:06 +02:00
f62eeab50d Fix Z-fighting : corriger les Y de tous les objets overlapping
- 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>
2026-05-16 21:02:06 +02:00
7aa4a518db Steering, HUD course, auto-index checkpoints
- 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>
2026-05-16 20:52:36 +02:00
a167930048 Level design complet : matériaux, panneaux TMP, wiring checkpoints
- 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>
2026-05-15 15:20:36 +02:00
026b1d954c fix: caméra — delta souris direct, toggle clic droit, no InputAxisController
- 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>
2026-05-15 14:44:35 +02:00
065ae8465f fix: colliders ProBuilder, cursor lock continu, déduplique CameraOrbitKeyboard
- MeshCollider ajouté sur Floor, 4 murs, CenterPlatform, 4 rampes, 4 piliers
- CameraOrbitKeyboard : enforce cursor lock à chaque frame quand actif (gameplay)
- Suppression du composant CameraOrbitKeyboard dupliqué sur CinemachineCamera

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 12:12:11 +02:00
a022d59917 fix: URL serveur wss://game.rolld.kerboul.me (rolld.io:2567 inaccessible)
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>
2026-05-15 11:58:35 +02:00
ac5c3f74a4 feat: rebuild Tutorial scene avec ProBuilder, matériaux gel/terrain
- Scène Tutorial reconstruite de zéro : sol ProBuilder 120x120, murs, rampes
- Zones race : 5 checkpoints (CP0→Finish) avec BoxCollider + CheckpointTrigger
- Gel pads : GelOrange (boost), GelBleu (bounce), GelViolet (sticky)
- Plateforme centrale pour mode teams (CaptureZone)
- Nouveaux matériaux URP : FloorMat, WallMat, CheckpointMat, GelOrangeMat, GelBleuMat, GelVioletMat, PlatformMat

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 09:22:44 +02:00
1e37e44143 feat: backend state machine, Unity URL prod, simplify GameSetup 2026-05-15 09:16:01 +02:00
c322793b0d feat: add Unity project (Assets, ProjectSettings) 2026-05-15 09:13:39 +02:00
19f5d70752 feat: add Unity project (Assets, Packages, ProjectSettings) 2026-05-15 09:13:24 +02:00
ce1972c6fa feat: add frontend as flat files (was submodule) 2026-05-15 09:13:20 +02:00
679929cffe feat: add Unity assets, frontend, update gitignore - remove dev artifacts 2026-05-15 09:13:01 +02:00
70a3e376b2 chore: add game server (Colyseus) - flat files 2026-05-15 09:12:10 +02:00
c4d9d9b53a chore: add game server (Colyseus) 2026-05-15 09:12:00 +02:00
7edbe8dd56 chore: init repo with .gitignore 2026-05-15 09:11:42 +02:00