Skip to main content

Backend Unity ↔ BrainCloud

Contrat côté Unity

BackEndBase définit le contrat backend utilisé par le reste du client. Les controllers ne doivent pas connaître l'implémentation BrainCloud : ils appellent des opérations métier comme GetTeamModule, SaveModule, GenerateResults, GetEvaluation, etc.

BackEndBrainCloud implémente ce contrat avec le SDK BrainCloud et les Cloud Scripts du dépôt Node.

flowchart LR
CTRL[Controller ou State Unity] --> BASE[BackEndBase]
BASE --> BC[BackEndBrainCloud]
BC -->|commun| C[_command/script]
BC -->|game-specific| G[gameUid/command/gameUid_script]
C --> U[_utils]
G --> GU[utils game-specific]
GU --> U

Convention des Cloud Scripts

Le helper privé BackEndBrainCloud.SendCommand() construit le chemin du script :

  • commande commune : _command/<scriptName>;
  • commande game-specific : <gameUid>/command/<gameUid>_<scriptName>.

Exemple : SendCommand(true, "generate_results", ...) dans Acc1 exécute acc1/command/acc1_generate_results.

Authentification et RTT

sequenceDiagram
participant G as Game
participant B as BackEndBrainCloud
participant BC as BrainCloud
G->>B: Login(user, pass, gameUid...)
B->>BC: AuthenticateUniversal
BC-->>B: profile + session
B->>B: EnableRTT()
B-->>G: utilisateur authentifié

Après authentification réussie, EnableRTT() est appelé. Le client conserve la fonction d'authentification pour pouvoir réagir à une perte de session et réactive RTT lorsqu'une connexion se ferme.

GetDocument()

GetDocument(entityType, uid, forceCreate) appelle _command/get_document. GetTeamModule() l'utilise pour lire teamsModules avec l'UID produit par UtilsBase.GetTeamModuleUid(teamUid, actModuleUid).

Gestion des appels

  • SendCommand() incrémente un compteur et pilote le loading circle.
  • Les réponses sont désérialisées vers MessageData.
  • Les erreurs sont transmises au callback d'échec.
  • Une session invalide ou une connexion RTT morte peut déclencher une réauthentification ou une resynchronisation.

Ajouter une commande

  1. Créer l'appel métier au bon controller/service.
  2. Ajouter le contrat à BackEndBase si l'opération doit faire partie de l'abstraction.
  3. Implémenter dans BackEndBrainCloud.
  4. Choisir commande commune ou game-specific.
  5. Créer le Cloud Script wrapper.
  6. Déplacer la logique réutilisable dans _utils.
  7. Sauvegarder les documents via utils_documents.
  8. Envoyer un message RTT si d'autres clients doivent être synchronisés.