GameMode, GameState et PlayerState dans Unreal Engine 5
Ces trois classes se ressemblent par leur nom, mais elles ont chacune un rôle précis. À la fin de ce guide, tu sauras ce que garde chaque classe, où choisir ton GameMode, comment le joueur apparaît dans le niveau et où ranger un score pour qu’il ne soit pas perdu. Tout est vérifié sur la documentation officielle d’Epic Games.
Le GameMode : les règles de la partie
Même un jeu très libre a des règles. Le GameMode les regroupe : combien de joueurs, quel Pawn ils reçoivent, où ils apparaissent, si la pause est permise, quand on gagne.
Un jeu peut avoir plusieurs GameModes, un par façon de jouer (survie, contre la montre…). Mais un seul tourne à la fois. Et on ne le pose pas dans le niveau comme un objet : on le choisit dans des réglages.
Dans l’onglet Class Defaults d’un GameMode, la rubrique Classes montre ses choix :
- Default Pawn Class : le Pawn donné aux joueurs ;
- HUD Class : l’affichage ;
- Player Controller Class : le Controller qui dirige le Pawn ;
- Player State Class : la classe de PlayerState.
Le GameMode ne fabrique pas ces Blueprints. Il dit seulement lesquels utiliser. Le modèle Third Person contient déjà un GameMode, BP_ThirdPersonGameMode, avec BP_ThirdPersonCharacter comme Default Pawn Class et BP_ThirdPersonPlayerController comme Player Controller Class.
Le HUD dessine des informations par-dessus le jeu : vie, score, viseur. Chaque joueur a le sien, et il ne fait qu’afficher.
Où choisir le GameMode
- Pour tout le projet : Project Settings (menu Edit) › Maps & Modes › Default GameMode.
- Pour un seul niveau : World Settings (menu Window) › GameMode Override.
Le réglage du niveau passe avant celui du projet. Le niveau du modèle Third Person a déjà GameMode Override sur BP_ThirdPersonGameMode. Si tu changes seulement les Project Settings, rien ne bouge dans ce niveau.
Créer son propre GameMode
Pour partir du GameMode du modèle, fais un clic droit dessus dans le Content Browser, puis Create Child Blueprint Class. Un enfant reprend tous les réglages de son parent : le Pawn et le PlayerController du modèle sont déjà là, et tes touches marchent.
Pour un jeu tout neuf, crée une Blueprint Class de parent Game Mode Base, le parent de tous les GameModes. Mais rien n’est réglé : sans choix dans Default Pawn Class, le joueur reçoit DefaultPawn, une boule qui vole. Sans ton PlayerController, plus de touches.
Où apparaît le joueur ?
Le Player Start est un acteur posé dans le niveau, avec une icône de manette et un drapeau. Il marque où le joueur apparaît et dans quelle direction il regarde. S’il n’y en a aucun, le joueur apparaît au point 0, 0, 0, parfois coincé sous le sol.
Quand un joueur arrive, le GameMode lance l’événement OnPostLogin. Juste après, il appelle Restart Player : il cherche un Player Start et y fait apparaître le Pawn de Default Pawn Class. Quand un joueur part, c’est OnLogout.
Tu peux aussi appeler Restart Player toi-même, avec Get Game Mode, par exemple après un piège. Dans New Player, mets Get Player Controller. Attention : si le joueur a encore son Pawn, Restart Player n’en crée pas de nouveau. Détruis d’abord l’ancien avec Destroy Actor.
PlayerState et GameState : où ranger une information
Un Pawn peut disparaître : si le joueur réapparaît avec un Pawn neuf, ses variables repartent à leur valeur de départ. Un score rangé dans le Pawn serait donc remis à zéro.
- Le PlayerState garde les informations d’un joueur, comme son nom et son score. Il reste avec son Controller, pas avec son Pawn. Avec 4 joueurs, il y a 4 PlayerStates.
- Le GameState garde ce qui concerne toute la partie : depuis quand elle dure, la liste des joueurs, le score des équipes. Il n’y en a qu’un, créé par le GameMode.
Pour savoir où ranger une donnée, demande-toi qui en a besoin et combien de temps :
- les règles : GameMode ;
- toute la partie : GameState ;
- un joueur, même après un piège : PlayerState ;
- le Pawn en ce moment, comme sa position : Pawn.
Une IA ordinaire, comme un zombie, n’a pas de PlayerState. Il est réservé aux joueurs et aux bots qui jouent comme eux.
Utiliser son propre PlayerState
Dans la fenêtre de choix de la classe parente, PlayerState n’est pas dans la liste du haut. Ouvre All Classes, tape PlayerState dans la recherche et choisis-le. Ensuite, ajoute-y ta variable.
Il faut aussi le dire au GameMode : ouvre-le, Class Defaults › Player State Class. Sans ce réglage, chaque joueur reçoit le PlayerState de base, et un Cast vers ta classe échoue. Depuis le Pawn, le nœud Get Player State (celui de la rubrique Pawn) donne le PlayerState de ce Pawn.
Questions fréquentes
Quelle est la différence entre PlayerState et GameState ?
Le PlayerState concerne un seul joueur (nom, score). Le GameState concerne toute la partie (temps, joueurs, score des équipes). Il y a un PlayerState par joueur et un seul GameState.
Mon GameMode ne s’applique pas, pourquoi ?
Vérifie World Settings › GameMode Override. Le réglage du niveau passe avant Default GameMode des Project Settings.
Mon personnage apparaît sous le sol, pourquoi ?
Il n’y a probablement aucun Player Start dans le niveau. Sans lui, le joueur apparaît au point 0, 0, 0. Pose un Player Start là où tu veux démarrer.
Sources officielles
- Game Mode and Game State (documentation Epic)
- Setting Up a Game Mode (documentation Epic)
- Unreal Engine Templates Reference (documentation Epic)
- User Interfaces and HUDs (documentation Epic)
- Blueprint Class Assets (documentation Epic)
- Pawn (documentation Epic)
- Player Start Actor (documentation Epic)
- Restart Player (documentation Epic)
- Player Controllers (documentation Epic)
- Gameplay Framework Quick Reference (documentation Epic)
- Gameplay Framework (documentation Epic)
- Creating Blueprint Classes (documentation Epic)
- Blueprint Variables (documentation Epic)
- Functions (documentation Epic)
- Casting Quick Start Guide (documentation Epic)
À lire aussi : Pawn, Character et Controller, Cast To et références Blueprint et le Game Instance et le changement de niveau.
Tu veux mettre en place un GameMode et un score qui survit aux chutes, pas à pas dans un vrai projet ? Le cours propose des leçons courtes, des quiz et des mini-projets, à ton rythme.
Apprendre Unreal Engine 5 gratuitement