Robloxユーザーがゲームに参加すると、PlayerとしてDataModelに表現されます。このPlayerオブジェクトには、ユーザー名、友達リスト、保存されたアバターキャラクターなど、ゲーム全体で共通のユーザーに関する情報が含まれています。また、ゲームへの参加と離脱の間にユーザーのライフサイクルに影響を与えるプロパティ、メソッド、イベントも含まれています。各Playerオブジェクトは、ユーザーの体験をカスタマイズするために使用できる4つの重要なコンテナを親として持っています: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オブジェクトが渡されます。このオブジェクトは、データストアからユーザーデータを読み込んだり、プレイヤーをチームに割り当てたりするなど、さまざまな目的で使用できます。
たとえば、ユーザーがゲームに参加したときにデータを読み込むには、Script内でPlayerAddedイベントを使用して、ユーザー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を無効にし、自分のものに置き換えるには、デフォルトUIを無効にするに記載されているように、StarterGui:SetCoreGuiEnabled()をLocalScript内で呼び出します。
ユーザーを禁止する
ゲーム内の礼儀正しさと公正なプレイを確保するために、ルールやコミュニティガイドラインに違反するユーザーを禁止することができます。禁止の期間、禁止メッセージを変更したり、潜在的な代替アカウントに禁止を拡張したりすることができます。この機能を使用する際は、禁止に関するガイドラインおよびメッセージングに従う必要があります。
禁止に関しては、いくつかのオプションがあります:
- Creator Hubの各ゲームページには、禁止ダッシュボードがあります。
- エンジンAPIを使用したプログラム的な利用については、Players:BanAsync()を参照してください。
- Open Cloudについては、禁止とブロックを参照してください。
デバイスブロッキング
アカウントを禁止するだけでなく、Players:BanAsync()はその設定テーブル内のApplyDeviceBlockフィールドを通じてデバイスブロッキングをサポートしています。ApplyDeviceBlockがtrueに設定されている状態で、ゲームに接続しているユーザーを禁止すると、そのユーザーに関連付けられたデバイスも24時間再接続できないようにブロックされます。このオプションは、禁止回避に対する摩擦を追加します。禁止されたプレイヤーは、同じデバイスから新しいアカウントで即座にゲームに再接続できません。
- デバイスブロッキングは現在、デスクトップ(WindowsおよびmacOS)のプレイヤーにのみ適用されます。モバイルデバイスやコンソールには適用されません。
- デバイスブロックは、そのデバイスを使用した他のアカウントに禁止として伝播しません。
- 影響を受けたユーザーに対して禁止解除APIを呼び出すと、そのユーザーのデバイスに関連付けられたすべてのアクティブなデバイスブロックが即座に削除され、ゲームに再接続できるようになります。
禁止ガイドライン
ゲーム内で禁止を実装する際は、以下のガイドラインに従ってください:
- ゲームのルールはRobloxのコミュニティスタンダードおよび利用規約に矛盾してはなりません。たとえば、性別によって誰かを除外するゲームルールを作成することはできません。これはRobloxの差別、スラング、ヘイトスピーチポリシーに違反します。
- 制作者は、すべてのユーザーがアクセスできる場所にゲームルールを明確に記載する必要があります。
- 制作者は、ゲームルールを公平に適用し、特定のユーザーを恣意的にターゲットにしてはなりません。
- ユーザーは、自分の禁止が不正であると考える場合、直接制作者に異議を申し立てることができます。Robloxは、ユーザーが制作者のゲームルールやそのルールの施行がコミュニティスタンダードに違反していると考えない限り、これらの異議申し立てを仲介しません。
- Robloxは、制作者のゲームルールやそのルールの施行がコミュニティスタンダードに違反していると考えられる場合、ゲームをモデレートすることができます。
メッセージガイドライン
ユーザーが禁止されると、禁止の長さや理由などの情報を表示するエラーモーダルが表示されます。テキストフィルタリングされたメッセージには、Robloxのコミュニティスタンダードを満たす限り、追加の情報(異議申し立てや連絡先情報など)を含めることができます。
たとえば、禁止メッセージではブランド名やプラットフォームに言及することが許可されています:
- "私のグループ/ゲームページのDiscordに参加してください"
- "TwitterまたはXで私にメッセージを送ってください"
このメッセージフィールドには、個人情報や直接リンクを含めることはできません。これには、特定のユーザー名やハンドルを投稿したり、DiscordサーバーやXアカウントへの直接リンクを提供したりすることが含まれます。