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