Lorsque qu'un utilisateur de Roblox rejoint un jeu, il est représenté comme un Player dans le DataModel. Cet objet Player contient des informations sur l'utilisateur qui sont universelles à travers les jeux, telles que son nom d'utilisateur, sa liste d'amis et son personnage avatar sauvegardé, ainsi que des propriétés, méthodes et événements qui affectent le cycle de vie de l'utilisateur entre le moment où il rejoint et quitte le jeu. Chaque objet Player parent également quatre conteneurs importants que vous pouvez utiliser pour personnaliser l'expérience d'un utilisateur : Backpack, StarterGear, PlayerGui et PlayerScripts.
Chaque Player expose également une propriété Player.User, qui est une valeur User représentant l'identité de l'utilisateur dans le domaine actuel. Pour plus d'informations sur le fonctionnement de l'identification des utilisateurs, y compris les ID d'utilisateur spécifiques au domaine et le type User, voir Utilisateurs et IDs d'utilisateur spécifiques au domaine.

Cycle de vie
Le service Players contient toutes les instances Player dans un jeu. Les scripts côté client et côté serveur peuvent tous deux se connecter aux événements Players.PlayerAdded et Players.PlayerRemoved pour effectuer des actions en réponse au cycle de vie d'un objet Player. Les scripts peuvent également se connecter aux événements Player.CharacterAdded et Player.CharacterRemoving pour effectuer des actions liées au gameplay lorsqu'un personnage apparaît ou disparaît.
Rejoindre un utilisateur
Lorsqu'un client utilisateur se connecte à un jeu, l'événement Players.PlayerAdded se déclenche et transmet l'objet Player de l'utilisateur qui rejoint ; vous pouvez utiliser cet objet pour de nombreux objectifs tels que charger des données utilisateur depuis un magasin de données ou assigner le joueur à une équipe.
Par exemple, pour charger les données d'un utilisateur lorsqu'il rejoint un jeu, utilisez l'événement PlayerAdded dans un Script pour récupérer les données de l'utilisateur stockées dans un magasin de données sous son ID utilisateur :
Script dans ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerAdded:Connect(function(player)
local userId = player.UserId
-- Lire la clé du magasin de données
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- Effectuer d'autres actions avec currentData
end)
Apparition du personnage
Par défaut, le modèle Player.Character d'un utilisateur représente son avatar de plateforme et Players.CharacterAutoLoads est true, ce qui signifie que le modèle de personnage apparaît automatiquement lorsque l'utilisateur rejoint un jeu.
Lorsque le Player.Character d'un utilisateur apparaît, les Scripts et LocalScripts dans StarterCharacterScripts sont clonés dans le modèle de personnage et l'événement Player.CharacterAdded se déclenche. Cet événement transmet le nouveau modèle de personnage à ses écouteurs que vous pouvez utiliser pour trouver l'objet Humanoid du personnage et modifier son comportement. Par exemple, vous pouvez utiliser Humanoid:ApplyDescription() pour changer la tenue de l'avatar.
Disparition du personnage
Lorsque le Humanoid du joueur meurt, le serveur supprime automatiquement le modèle de personnage après la durée spécifiée par Players.RespawnTime. Vous pouvez ensuite utiliser l'événement Player.CharacterRemoving pour réinitialiser d'autres objets ou mettre à jour des données associées au personnage.
Quitter un utilisateur
Lorsque qu'un client utilisateur se déconnecte d'un jeu, le serveur détruit son objet Player associé à l'intérieur du service Players. À ce moment-là, l'événement Players.PlayerRemoving se déclenche et transmet l'objet Player de l'utilisateur qui s'est déconnecté. Vous pouvez l'utiliser pour de nombreux objectifs, tels que sauvegarder des données utilisateur, supprimer des statistiques de joueurs d'un tableau de scores ou détruire des modèles créés par des joueurs dans le jeu.
L'exemple de Script suivant écoute l'événement PlayerRemoving et tente de sauvegarder les données de l'utilisateur dans un magasin de données sous son ID utilisateur :
Script dans ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- Obtenir l'état des données du joueur dans le jeu
local currentData = getCurrentData(player)
-- Sauvegarder dans le magasin de données
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
Conteneurs
Chaque objet Player représentant le client d'un utilisateur stocke plusieurs conteneurs importants : Backpack, StarterGear, PlayerGui, et PlayerScripts. Lors de l'exécution du jeu, plusieurs conteneurs dans le modèle de données "édition" copient leur contenu dans ces conteneurs Player, incluant StarterGui vers PlayerGui, StarterPack vers Backpack, et StarterPlayerScripts vers PlayerScripts.

Les objets Tool dans le Backpack constituent l'inventaire du joueur et s'affichent sous forme de boutons d'icônes en bas de l'écran. Voir outils en jeu pour plus d'informations.
Comme illustré ci-dessus, le contenu de StarterPack et le StarterGear du joueur sont clonés dans Backpack lorsque le Character d'un joueur apparaît. Lorsque le personnage meurt, le client détruit le Backpack et le remplace par un nouveau.
Pour désactiver l'interface utilisateur par défaut de l'inventaire Roblox et la remplacer par la vôtre, appelez StarterGui:SetCoreGuiEnabled() dans un LocalScript comme décrit dans désactiver l'interface utilisateur par défaut.
Bannir des utilisateurs
Pour garantir la civilité et le fair-play dans vos jeux, vous pouvez bannir des utilisateurs qui enfreignent les règles ou les directives de la communauté. Vous pouvez modifier les durées de ban, les messages de ban, et même étendre les bans à d'éventuels comptes alternatifs. Lorsque vous utilisez cette fonctionnalité, vous devez suivre les directives et messages concernant les bans.
Vous avez plusieurs options pour travailler avec des bans :
- Chaque page de jeu sur le Creator Hub a un tableau de bord Bans.
- Pour un usage programmatique avec l'API moteur, voir Players:BanAsync().
- Pour Open Cloud, voir bans et blocages.
Blocage de dispositif
En plus de bannir un compte, Players:BanAsync() prend en charge le blocage de dispositif grâce au champ ApplyDeviceBlock dans sa table de configuration. Lorsque vous bannissez un utilisateur qui est actuellement connecté à votre jeu avec ApplyDeviceBlock défini sur true, le dispositif associé à cet utilisateur est également bloqué pour pouvoir rejoindre pendant 24 heures. Cette option ajoute des frictions contre l'évasion de ban ; les joueurs bannis ne peuvent pas immédiatement revenir dans le jeu à partir d'un nouveau compte sur le même dispositif.
- Le blocage de dispositif ne s'applique actuellement qu'aux joueurs sur desktop (Windows et macOS). Il ne s'applique pas aux appareils mobiles ou aux consoles.
- Le blocage de dispositif ne se propage pas en tant que ban à d'autres comptes ayant utilisé le dispositif.
- Appeler l'API de débanissement sur l'utilisateur affecté supprime immédiatement tout blocage de dispositif actif associé au dispositif de cet utilisateur, leur permettant de rejoindre à nouveau le jeu.
Directives de ban
Lors de l'implémentation de bans dans votre jeu, respectez les directives suivantes :
- Les règles du jeu ne doivent pas contredire les Normes de la Communauté et les Conditions d'utilisation de Roblox. Par exemple, vous ne pouvez pas créer une règle de jeu qui exclut quelqu'un en raison de son sexe, car cela viole la politique de Discrimination, d'Insultes et de Discours de Haine de Roblox.
- Les créateurs doivent clairement énoncer leurs règles de jeu quelque part accessible à tous les utilisateurs.
- Les créateurs doivent appliquer leurs règles de jeu de manière équitable et ne pas cibler de manière arbitraire certains utilisateurs.
- Les utilisateurs peuvent faire appel directement aux créateurs s'ils estiment que leur ban était incorrect. Roblox ne médiatisera pas ces appels, sauf si l'utilisateur croit que les règles de jeu du créateur ou l'application de ses règles violent les Normes de la Communauté.
- Roblox peut modérer un jeu s'il y a des raisons de croire que les règles de jeu d'un créateur ou l'application de ses règles violent les Normes de la Communauté.
Directives de message
Lorsqu'un utilisateur est banni, il reçoit une fenêtre d'erreur affichant des informations telles que la durée du ban et la raison. Dans le message filtré par texte, vous pouvez inclure des informations supplémentaires telles que des informations d'appel ou de contact tant que vous respectez les Normes de la Communauté de Roblox.
Par exemple, dans vos messages de ban, vous êtes autorisé à faire référence à des marques et des plateformes :
- "Visitez le Discord de mon groupe/page de jeu"
- "Envoyez-moi un message sur Twitter ou X"
Les mentions d'informations personnelles ou de liens directs ne sont pas autorisées dans ce champ de message. Cela inclut la publication d'un nom d'utilisateur ou d'un identifiant spécifique, ou la fourniture d'un lien direct vers un serveur Discord ou un compte X.