Quando um usuário do Roblox entra em um jogo, ele é representado como um Player no DataModel. Este objeto Player contém informações sobre o usuário que são universais entre os jogos, como seu nome de usuário, lista de amigos e personagem avatar salvo, bem como propriedades, métodos e eventos que afetam o ciclo de vida do usuário entre entrar e sair do jogo. Cada objeto Player também possui como pai quatro importantes contêineres que você pode usar para personalizar a experiência do usuário: Backpack, StarterGear, PlayerGui e PlayerScripts.
Cada Player também expõe uma propriedade Player.User, que é um valor User representando a identidade do jogador escopo de domínio dentro do jogo atual. Para mais informações sobre como a identificação de usuários funciona, incluindo IDs de usuários escopo de domínio e o tipo User, consulte Usuários e IDs de usuários escopo de domínio.

Ciclo de vida
O serviço Players contém todas as instâncias de Player em um jogo. Scripts do lado do cliente e do lado do servidor podem ambos se conectar aos eventos Players.PlayerAdded e Players.PlayerRemoved para realizar ações em resposta ao ciclo de vida de um objeto Player. Os scripts também podem se conectar aos eventos Player.CharacterAdded e Player.CharacterRemoving para realizar ações relacionadas ao jogo quando o personagem entra ou sai.
Entrada do usuário
Quando um cliente de usuário se conecta a um jogo, o evento Players.PlayerAdded é disparado e passa o objeto Player do usuário que entrou; você pode usar este objeto para diversos fins, como carregar dados do usuário de um armazenamento de dados ou atribuir o jogador a um time.
Por exemplo, para carregar os dados de um usuário quando ele entra em um jogo, use o evento PlayerAdded em um Script para recuperar os dados do usuário armazenados em um armazenamento de dados sob seu ID de usuário:
Script em 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
-- Ler a chave do armazenamento de dados
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- Realizar outras ações com currentData
end)
Geração do personagem
Por padrão, o modelo Player.Character de um usuário representa seu avatar da plataforma e Players.CharacterAutoLoads é true, o que significa que o modelo do personagem aparece automaticamente quando o usuário entra em um jogo.
Quando o Player.Character de um usuário surge, os Scripts e LocalScripts em StarterCharacterScripts são clonados para o modelo do personagem e o evento Player.CharacterAdded é disparado. Este evento passa o novo modelo do personagem para seus ouvintes, que você pode usar para encontrar o objeto Humanoid do personagem e modificar seu comportamento. Por exemplo, você pode usar Humanoid:ApplyDescription() para mudar a roupa do avatar.
Desaparecimento do personagem
Quando o Humanoid do jogador morre, o servidor remove automaticamente o modelo do personagem após o tempo especificado por Players.RespawnTime. Você pode então usar o evento Player.CharacterRemoving para redefinir outros objetos ou atualizar dados associados ao personagem.
Saída do usuário
Quando um cliente de usuário se desconecta de um jogo, o servidor destrói seu objeto Player associado dentro do serviço Players. Nesse ponto, o evento Players.PlayerRemoving é disparado e passa o objeto Player do usuário que se desconectou. Você pode usar isso para diversos fins, como salvar dados do usuário, remover estatísticas do jogador de um placar ou destruir modelos criados por jogadores no jogo.
O seguinte exemplo Script ouve o evento PlayerRemoving e tenta salvar os dados do usuário em um armazenamento de dados sob seu ID de usuário:
Script em 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
-- Obter o estado dos dados do jogador no jogo
local currentData = getCurrentData(player)
-- Salvar no armazenamento de dados
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
Contêineres
Cada objeto Player representando o cliente de um usuário armazena vários contêineres importantes: Backpack, StarterGear, PlayerGui e PlayerScripts. Durante a execução do jogo, vários contêineres no modelo de dados "edição" copiam seu conteúdo para esses contêineres Player, incluindo StarterGui para PlayerGui, StarterPack para Backpack e StarterPlayerScripts para PlayerScripts.

Os objetos Tool no Backpack compõem o inventário do jogador e são exibidos como botões de ícone na parte inferior da tela. Consulte ferramentas em jogo para mais informações.
Como ilustrado acima, o conteúdo de StarterPack e o StarterGear do jogador são clonados para Backpack quando o Character do jogador surge. Quando o personagem morre, o cliente destrói o Backpack e o substitui por um novo.
Para desativar a GUI de inventário padrão do Roblox e substituí-la pela sua, chame StarterGui:SetCoreGuiEnabled() em um LocalScript conforme descrito em desabilitar UI padrão.
Banir usuários
Para garantir civilidade e jogo justo em seus jogos, você pode banir usuários que violam regras ou diretrizes da comunidade. Você pode modificar a duração dos banimentos, mensagens de banimento e até mesmo estender os banimentos para possíveis contas alternativas. Ao usar este recurso, você deve seguir as diretrizes de banimento e mensagens.
Você tem várias opções para trabalhar com banimentos:
- Cada página de jogo no Creator Hub tem um painel de Banimentos.
- Para uso programático com a API do motor, consulte Players:BanAsync().
- Para Open Cloud, consulte banimentos e bloqueios.
Bloqueio de dispositivos
Além de banir uma conta, Players:BanAsync() suporta bloqueio de dispositivos através do campo ApplyDeviceBlock em sua tabela de configuração. Quando você banir um usuário que está atualmente conectado ao seu jogo com ApplyDeviceBlock definido como true, o dispositivo associado a esse usuário também será bloqueado de se reconectar por 24 horas. Esta opção adiciona atrito contra a evasão do banimento; jogadores banidos não podem imediatamente voltar ao jogo de uma nova conta no mesmo dispositivo.
- O bloqueio de dispositivos atualmente se aplica apenas a jogadores em desktop (Windows e macOS). Não se aplica a dispositivos móveis ou consoles.
- O bloqueio do dispositivo não se propaga como um banimento para quaisquer outras contas que tenham usado o dispositivo.
- Chamar a API de desbloqueio no usuário afetado remove imediatamente qualquer bloqueio de dispositivo ativo associado ao dispositivo daquele usuário, permitindo que ele volte a entrar no jogo.
Diretrizes de banimento
Ao implementar banimentos em seu jogo, siga as seguintes diretrizes:
- As regras do jogo não devem contradizer os Padrões da Comunidade e os Termos de Uso do Roblox. Por exemplo, você não pode criar uma regra de jogo que exclua alguém por causa de seu gênero, pois isso viola a política de Discriminação, Insultos e Discurso de Ódio do Roblox.
- Os criadores devem declarar claramente suas regras de jogo em algum lugar acessível a todos os usuários.
- Os criadores devem aplicar suas regras de jogo de forma justa e não direcionar arbitrariamente certos usuários.
- Os usuários podem recorrer diretamente a criadores se acreditarem que seu banimento foi incorreto. O Roblox não mediará esses recursos, a menos que o usuário acredite que as regras do jogo do criador ou a aplicação de suas regras violem os Padrões da Comunidade.
- O Roblox pode moderar um jogo se houver motivos para acreditar que as regras do jogo de um criador ou a aplicação de suas regras violem os Padrões da Comunidade.
Diretrizes de mensagem
Quando um usuário é banido, ele recebe um modal de erro exibindo informações como a duração e o motivo do banimento. Na mensagem filtrada por texto, você pode incluir informações adicionais, como apelação ou informações de contato, desde que você cumpra os Padrões da Comunidade do Roblox.
Por exemplo, em suas mensagens de banimento, você pode fazer referência a marcas e plataformas:
- "Visite o Discord do meu grupo/página do jogo"
- "Envie uma mensagem para mim no Twitter ou X"
Menções a informações pessoais ou links diretos não são permitidos neste campo de mensagem. Isso inclui publicar um nome de usuário ou manuseio específico ou fornecer um link direto para um servidor Discord ou conta X.