Unity WebGL et communication avec le Web
Vue d’ensemble
Le jeu Unity WebGL est intégré au Website Angular et communique avec le backend NestJSNestJS. pourCette récupérerpage ouprésente enregistrerles plusieursresponsabilités donnéesde métier.chaque couche et les principaux points à vérifier lorsqu’une modification touche le jeu et le Web.
Architecture générale
flowchart LR
USER[Utilisateur] --> ANG[Angular / PageWebgl]
ANG --> BUILD[Build Unity WebGL]
BUILD --> UNITY[Runtime Unity]
UNITY -->|HTTP| GAME[GameController]
GAME --> GS[GameService]
GS --> BC[BrainCloud]
GS --> REDIS[(Redis)]
GS --> STORAGE[storage / images / logs]
ANG -->|Auth / session / navigation| NEST[NestJS]
NEST --> ANG
Côté Angular
PageWebglComponent est utilisél’écran qui héberge le jeu pour plusieurs routesroutes, de jeu :notamment /game, /demo, /alpha, /alpha2 et /demoLive.
Le build Unity est livré dans les assets frontend. Le frontend Angular gère le contexte Web autour du jeu : navigation, authentification, chargement et communication avec les autres fonctions du site.
Côté backend
GameController dans uniksim-back-end/src/app.controller.ts est protégé par AuthGuardGame. etIl exposedélègue la logique à GameService.
Les endpoints couvrent notamment :
- version du
build ;build; - informations de code
produit ;produit; - textes et
traductions ;traductions; écoles ;écoles;- token
Web ;Web; - heartbeat
;et présence en jeu; classements ;classements;- images
utilisateur ;utilisateur; - journalisation de crash.
FichiersFlux heartbeat
sequenceDiagram
participant U as Unity WebGL
participant G as GameController
participant S as GameService / server.js
participant R as Redis
U->>G: heartBeat(simUid, userUid, token)
G->>S: heartBeat(...)
S->>R: Vérifie session / présence
R-->>S: État session
S->>R: Met à jour présence + expiration
S-->>G: Version / heartbeats / sessionTime
G-->>U: Réponse
Build et fichiers statiques
Le backend utilise ServeStaticModule pour servir le frontend compilé depuis dist/front. Les assets Unity WebGLfont sontpartie intégrésdu aufrontend frontend.Angular. Le build Angular de production est ensuite généré dans uniksim-back-end/src/front, puis servi par NestJS avec ServeStaticModule.
Voir Build et déploiement Web pour l’ordre complet de build.
RègleQuand modifier plusieurs projets
Une modification du contrat Unity/Web nécessite souvent de maintenancevérifier plusieurs couches :
flowchart LR
CHANGE[Changement Unity / Web] --> UNITY[Code Unity]
CHANGE --> ANG[Angular / PageWebgl]
CHANGE --> API[GameController]
API --> SERVICE[GameService]
SERVICE --> DATA[BrainCloud / Redis / stockage]
UNITY --> TEST[Test WebGL]
ANG --> TEST
API --> TEST
Fichiers à connaître
Lorsqu’un
uniksimFrontEnd/src/app/Pages/PageWebgl/
uniksimFrontEnd/src/assets/unity/
uniksim-back-end/src/app.controller.ts — GameController
uniksim-back-end/src/service/game.service.ts
uniksim-back-end/src/guards/authGame.guard.ts
uniksim-back-end/src/node.js/server/server.js
uniksim-back-end/src/node.js/server/backend_braincloud.js