Roblox 사용자가 게임에 참여할 때, 그들은 Player로 DataModel에 나타납니다. 이 Player 객체는 게임 전반에 걸쳐 공통적인 사용자의 정보(예: 사용자 이름, 친구 목록, 저장된 아바타 캐릭터)와 사용자의 게임 참여와 퇴장 사이의 생애 주기에 영향을 미치는 속성, 메서드 및 이벤트를 포함합니다. 각 Player 객체는 또한 사용자의 경험을 맞춤 설정하는 데 사용할 수 있는 네 가지 중요한 컨테이너의 부모가 됩니다: Backpack, StarterGear, PlayerGui 및 PlayerScripts.
각 Player는 또한 현재 게임 내에서 플레이어의 도메인 범위 식별을 나타내는 User 값을 가지는 Player.User 속성을 노출합니다. 사용자의 식별 방식에 대한 더 많은 정보는 도메인 범위 사용자 ID 및 User 유형을 포함하여 사용자 및 도메인 범위 사용자 ID를 참조하세요.

생애 주기
Players 서비스는 게임 내의 모든 Player 인스턴스를 포함합니다. 클라이언트 및 서버 측 스크립트는 모두 Players.PlayerAdded와 Players.PlayerRemoved 이벤트에 연결하여 Player 객체의 생애 주기에 대한 응답으로 작업을 수행할 수 있습니다. 스크립트는 또한 Player.CharacterAdded 및 Player.CharacterRemoving 이벤트에 연결하여 캐릭터가 생성되거나 사라질 때 게임 플레이 관련 작업을 수행할 수 있습니다.
사용자 참여
사용자 클라이언트가 게임에 연결되면 Players.PlayerAdded 이벤트가 발생하고, 그에 따라 참여하는 사용자의 Player 객체가 전달됩니다. 이 객체를 사용하여 데이터 저장소에서 사용자 데이터를 로드하거나 플레이어를 팀에 할당하는 등의 다양한 목적으로 사용할 수 있습니다.
예를 들어 사용자가 게임에 참여할 때 그들의 데이터를 로드하려면 PlayerAdded 이벤트를 Script에서 사용하여 그들의 사용자 ID 아래에 저장된 데이터 저장소의 사용자 데이터를 가져올 수 있습니다:
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerAdded:Connect(function(player)
local userId = player.UserId
-- 데이터 저장소 키 읽기
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- currentData로 추가 작업 수행
end)캐릭터 생성
기본적으로 사용자의 Player.Character 모델은 그들의 플랫폼 아바타를 나타내며 Players.CharacterAutoLoads는 true로 설정되어 있습니다. 즉, 사용자가 게임에 참여하면 캐릭터 모델이 자동으로 생성됩니다.
사용자의 Player.Character가 생성되면, Scripts 및 LocalScripts가 StarterCharacterScripts에서 캐릭터 모델로 복제되고 Player.CharacterAdded 이벤트가 발생합니다. 이 이벤트는 새 캐릭터 모델을 수신하는 수신자에게 전달되며, 이를 사용하여 캐릭터의 Humanoid 객체를 찾아 동작을 수정할 수 있습니다. 예를 들어, Humanoid:ApplyDescription()을 사용하여 아바타의 옷차림을 변경할 수 있습니다.
캐릭터 사라짐
플레이어의 Humanoid가 죽으면 서버는 자동으로 Players.RespawnTime으로 지정된 시간만큼 후에 캐릭터 모델을 제거합니다. 그 후 Player.CharacterRemoving 이벤트를 사용하여 다른 객체를 재설정하거나 캐릭터와 관련된 데이터를 업데이트할 수 있습니다.
사용자 퇴장
사용자 클라이언트가 게임에서 분리되면 서버는 Players 서비스 내의 연결된 Player 객체를 제거합니다. 이 시점에서 Players.PlayerRemoving 이벤트가 발생하고 연결이 끊어진 사용자의 Player 객체가 전달됩니다. 이를 사용하면 사용자 데이터 저장, 스코어보드에서 플레이어 통계 제거 또는 게임 내에서 플레이어가 만든 모델 삭제와 같은 다양한 작업을 수행할 수 있습니다.
다음 예제 Script는 PlayerRemoving 이벤트를 수신하고 사용자의 데이터를 데이터 저장소에 사용자 ID 아래에 저장하려고 시도합니다:
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- 게임 내 플레이어의 데이터 상태 가져오기
local currentData = getCurrentData(player)
-- 데이터 저장소에 저장
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)컨테이너
각 Player 객체는 사용자의 클라이언트를 나타내며 여러 중요한 컨테이너를 저장합니다: Backpack, StarterGear, PlayerGui, 및 PlayerScripts. 게임 런타임 동안 "편집" 데이터 모델 내 여러 컨테이너가 이 Player 컨테이너로 내용이 복제되며, StarterGui의 내용이 PlayerGui로, StarterPack의 내용이 Backpack으로, StarterPlayerScripts의 내용이 PlayerScripts로 복제됩니다.

Backpack의 Tool 객체들은 플레이어의 인벤토리를 구성하고 화면 하단에 아이콘 버튼으로 표시됩니다. 더 많은 정보는 인게임 도구를 참조하세요.
위에 설명된 것처럼 StarterPack과 플레이어의 StarterGear의 내용이 플레이어의 Character가 생성될 때 Backpack으로 복제됩니다. 캐릭터가 죽으면 클라이언트는 Backpack을 파괴하고 새로운 것으로 교체합니다.
기본 Roblox 인벤토리 GUI를 비활성화하고 자신만의 GUI로 교체하려면, 기본 UI 비활성화에 설명된 대로 StarterGui:SetCoreGuiEnabled()를 LocalScript에서 호출하세요.
사용자 차단
게임에서 시민성을 보장하고 공정한 게임을 유지하기 위해, 규칙이나 커뮤니티 가이드라인을 위반하는 사용자를 차단할 수 있습니다. 차단 기간, 차단 메시지를 수정하거나 잠재적인 대체 계정에 차단을 연장할 수 있습니다. 이 기능을 사용할 때는 차단 지침 및 메시징을 따라야 합니다.
차단 작업을 위한 여러 가지 옵션이 있습니다:
- Creator Hub의 각 게임 페이지에는 차단 대시보드가 있습니다.
- 엔진 API를 사용한 프로그래밍적 사용에 대해선 Players:BanAsync()를 참조하세요.
- 오픈 클라우드의 경우, 차단 및 블록을 참조하세요.
장치 차단
계정을 차단하는 것 외에도, Players:BanAsync()는 구성 테이블의 ApplyDeviceBlock 필드를 통해 장치 차단을 지원합니다. ApplyDeviceBlock가 true로 설정된 상태에서 현재 게임에 연결된 사용자를 차단하면, 해당 사용자와 연결된 장치도 24시간 동안 재가입이 차단됩니다. 이 옵션은 차단 회피에 대한 마찰을 추가합니다. 차단된 플레이어는 같은 장치에서 새 계정으로 즉시 게임에 재가입할 수 없습니다.
- 장치 차단은 현재 데스크톱(Windows 및 macOS)의 플레이어에게만 적용됩니다. 모바일 장치나 콘솔에는 적용되지 않습니다.
- 장치 차단은 해당 장치를 사용한 다른 계정에 대해 차단으로 전파되지 않습니다.
- 영향을 받는 사용자의 차단 해제 API를 호출하면 즉시 해당 사용자의 장치와 연결된 모든 활성 장치 차단이 제거되어 게임에 재가입할 수 있게 됩니다.
차단 지침
게임에서 차단을 구현할 때는 다음 지침을 준수하세요:
- 게임 규칙은 Roblox의 커뮤니티 기준 및 사용약관과 모순되지 않아야 합니다. 예를 들어, 성별 때문에 누군가를 배제하는 게임 규칙은 만들 수 없습니다. 이는 Roblox의 차별, 비속어 및 혐오 발언 정책을 위반합니다.
- 창작자는 모든 사용자에게 접근 가능한 곳에 게임 규칙을 명확하게 명시해야 합니다.
- 창작자는 게임 규칙을 공정하게 적용하고 특정 사용자를 임의로 겨냥해서는 안 됩니다.
- 사용자는 자신이 차단된 것이 부당하다고 생각할 경우 창작자에게 직접 항의할 수 있습니다. Roblox는 이 항의를 중재하지 않으며, 사용자가 창작자의 게임 규칙이나 해당 규칙의 집행이 커뮤니티 기준을 위반한다고 생각해야만 합니다.
- Roblox는 창작자의 게임 규칙이나 해당 규칙의 집행이 커뮤니티 기준을 위반한다고 믿을 만한 이유가 있는 경우 게임을 조정할 수 있습니다.
메시지 지침
사용자가 차단되면 에러 모달이 표시되어 차단 기간 및 이유와 같은 정보를 보여줍니다. 텍스트 필터링된 메시지에는 Roblox의 커뮤니티 기준을 준수하는 한, 항의 또는 연락 정보를 포함할 수 있습니다.
예를 들어, 차단 메시지에서 브랜드 이름과 플랫폼을 참조하는 것은 허용됩니다:
- "내 그룹/게임 페이지의 Discord를 방문하세요"
- "Twitter 또는 X에서 메세지를 보내주세요"
이 메시지 필드에는 개인 정보나 직접 링크를 언급하는 것이 허용되지 않습니다. 여기에는 특정 사용자 이름이나 핸들을 게시하거나 Discord 서버 또는 X 계정에 대한 직접 링크를 제공하는 것이 포함됩니다.