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 아래에 저장된 데이터 저장소의 사용자 데이터를 가져올 수 있습니다:
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
-- 데이터 저장소 키 읽기
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 아래에 저장하려고 시도합니다:
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
-- 게임 내 플레이어의 데이터 상태 가져오기
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 계정에 대한 직접 링크를 제공하는 것이 포함됩니다.