Construire un Jeu en Direct avec Unity Gaming Services
Paquets UGS
| Paquet | Version Minimale | Objectif |
|---|---|---|
com.unity.services.core | 1.16.0 | Initialisation, graphe de dépendances |
com.unity.services.authentication | 3.6.1 | Connexion et identité du joueur |
com.unity.services.cloudcode | 2.10.3 | Modules C# autoritaires côté serveur |
com.unity.services.cloudsave | 3.4.0 | Stockage clé-valeur par joueur et partagé |
com.unity.remote-config | 4.2.5 | Configuration de jeu côté serveur |
com.unity.services.deployment | 1.7.2 | Déploiement de ressources cloud depuis l'Éditeur |
com.unity.services.tooling | 1.4.1 | Contrôle d'Accès et Surcharges de Jeu |
com.unity.services.apis | 1.1.1 | Clients REST générés pour tous les services UGS |
- Modèle d'Initialisation
- Carte des Paquets
- Architecture — Comment les Paquets se Combinent
- Services Principaux — Référence Rapide
- Blocs de Construction de l'Asset Store
- Plans de Fonctionnalités Prêts à l'Emploi
- Modèles d'Architecture Courants
- Validation
- Liste de Vérification de Déploiement
- Références Détaillées
Modèle d'Initialisation
Tout jeu UGS commence de la même manière. com.unity.services.core doit s'initialiser en premier, puis le joueur se connecte :
using Unity.Services.Core;
using Unity.Services.Authentication;
await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
// Tous les autres services sont maintenant prêts
Après InitializeAsync(), les singletons de service (par ex. CloudSaveService.Instance, CloudCodeService.Instance) sont disponibles.
Carte des Paquets
Fondation
| Paquet | Objectif | Singleton / Point d'Entrée |
|---|---|---|
| Core | Initialisation, graphe de dépendances, registre de composants | UnityServices.InitializeAsync() |
| Authentication | Connexion du joueur (anonyme, social, Unity, nom d'utilisateur/mot de passe), identité | AuthenticationService.Instance |
| Services APIs | Clients REST générés pour tous les services UGS ; accès API administrateur via comptes de service | Classes API directes |
Données et Configuration du Joueur
| Paquet | Objectif | Singleton / Point d'Entrée |
|---|---|---|
| Cloud Save | Données clé-valeur par joueur (Par défaut, Public, Protégé) et données personnalisées à l'échelle du jeu | CloudSaveService.Instance.Data.Player / .Data.Custom |
| Remote Config | Configuration de jeu côté serveur, indicateurs de fonctionnalités, définitions JSON | RemoteConfigService.Instance |
| Economy | Monnaies virtuelles, articles d'inventaire, achats, magasins | EconomyService.Instance |
Logique Serveur et Sécurité
| Paquet | Objectif | Singleton / Point d'Entrée |
|---|---|---|
| Cloud Code | Modules C# autoritaires côté serveur pour écritures de confiance et validation | CloudCodeService.Instance → CallModuleEndpointAsync |
| Tooling | Créer et déployer des fichiers de Contrôle d'Accès (.ac) et Surcharges de Jeu (.ugo) | Éditeur uniquement (Fenêtre de Déploiement) |
| Deployment | Déployer des ressources cloud (.rc, .ac, .ccmr, .lb, etc.) depuis l'Éditeur Unity | Éditeur uniquement (Services > Deployment) |
Social et Compétitif
| Paquet | Objectif | Singleton / Point d'Entrée |
|---|---|---|
| Multiplayer | Sessions, matchmaking, salons. Blocs de Construction : Session Multijoueur, Session Matchmaker, Session Serveur | MultiplayerService.Instance |
| Leaderboards | Soumission de scores, classements, paliers, historique des versions. Bloc de Construction : Leaderboards | LeaderboardsService.Instance |
Télémétrie
| Paquet | Objectif | Singleton / Point d'Entrée |
|---|---|---|
| Analytics | Événements personnalisés, événements standard, gestion du consentement | AnalyticsService.Instance |
Architecture — Comment les Paquets se Combinent
UnityServices.InitializeAsync()
│
▼
AuthenticationService
(connexion → PlayerId)
│
┌───────────────┼───────────────┐
▼ ▼ ▼
Remote Config Cloud Save Economy
(config de jeu, (état joueur, (monnaies,
définitions, progression, inventaire,
feature flags) préférences) achats)
│ │ │
└───────┬───────┘ │
▼ │
Cloud Code │
(écritures côté │
serveur, validation, ◄─────────┘
logique anti-triche)
│
┌───────┼───────┐
▼ ▼ ▼
Cloud Save Economy Leaderboards
(écritures (octroi (soumission
protégées) côté de score)
serveur)
Principe clé : Pour toute donnée affectant l'intégrité du jeu (XP, récompenses, monnaie), acheminez les écritures via des modules Cloud Code. Les écritures directes du client ne sont appropriées que pour les données non sensibles (préférences, paramètres d'affichage).
Services Principaux — Référence Rapide
Authentification
Paquet : com.unity.services.authentication (>= 3.6.1)
Gère l'identité du joueur. Méthodes de connexion : anonyme, fournisseurs sociaux (Google, Apple, Steam, Facebook, Oculus, etc.), navigateur Unity, nom d'utilisateur/mot de passe, et flux de code d'appareil.
Après la connexion : PlayerId et PlayerName sont disponibles. Toutes les méthodes de connexion déclenchent l'événement SignedIn. PlayerAccountService (pour la connexion via navigateur Unity) se trouve dans un assembly séparé (Unity.Services.Authentication.PlayerAccounts).
- Référence complète : references/authentication.md
- Bloc de Construction : Compte Joueur — UI de connexion prête à l'emploi et gestion d'identité
Cloud Code
Paquet : com.unity.services.cloudcode (>= 2.10.3)
Exécute des modules C# côté serveur (.NET 9) pour des opérations de confiance. Les modules sont déployés sous forme de fichiers .ccmr. Le client appelle :
var result = await CloudCodeService.Instance.CallModuleEndpointAsync<TResult>(
"NomModule", "NomFonction", args);
Préférez les modules C# aux scripts JavaScript pour la production. Les modules prennent également en charge les messages push en temps réel via des abonnements, les déclencheurs pilotés par événements et le cadrage de session multijoueur.
- Référence complète : references/cloud-code.md
Cloud Save
Paquet : com.unity.services.cloudsave (>= 3.4.0)
Stockage clé-valeur par joueur avec trois classes d'accès, plus des données personnalisées à l'échelle du jeu :
| Classe d'Accès | Lecture | Écriture | Cas d'Utilisation |
|---|---|---|---|
| Par défaut | Propriétaire | Propriétaire | Paramètres privés, préférences |
| Public | Tout le monde | Propriétaire | Profils publics, noms d'affichage |
| Protégé | Propriétaire | Serveur uniquement (Cloud Code) | Données anti-triche, état attribué par le serveur |
| Personnalisé | Tout joueur | Serveur uniquement | État de jeu partagé, configurations globales |
Les valeurs sont sérialisées au format JSON. Prend en charge le contrôle de concurrence par verrouillage d'écriture via SaveItem, les requêtes côté serveur via QueryAsync, et le stockage de fichiers binaires.
- Référence complète : references/cloud-save.md
- Blocs de Construction : Utilisé par Succès, Quêtes, et Sauvegarde Cloud