Robloxには、PlayerListに組み込まれたリーダーボードがあります。ここ、友達、およびグローバルは、その同じリストのビューです:ここは現在のサーバー内のプレイヤーのセッションランキングを表示し、友達とグローバルは、Creator Hubで登録した順序付きデータストアからの永続的なランキングを表示します。

リーダーボードビュー
PlayerListは、これらのビュー間でスコアを比較します:
| ビュー | ランキング |
|---|---|
| ここ | 現在のサーバー内のプレイヤーのセッションランキング、leaderstatsから。 |
| 友達 | 経験をプレイしたプレイヤーの友達間の永続的なランキング。 |
| グローバル | 経験内のプレイヤー間の永続的なランキング。 |
ここを埋めるにはleaderstatsを使用します。友達とグローバルを埋めるには順序付きデータストアを使用します。
リーダースタッツでセッションリーダーボードを管理する
各プレイヤーのleaderstatsフォルダーがここビューを駆動します。以下の手順でそのフォルダーを設定し、統計を追加し、セッション中に更新し、順序を制御し、PlayerListを隠します。
リーダースタッツを設定する
リーダーボードを設定し、プレイヤーが経験に入るときに追加するには:
ServerScriptService内に新しいScriptを作成し、名前をLeaderboardにします。

スクリプト内で、PlayerAddedイベントに関数を接続します。
local Players = game:GetService("Players")local function leaderboardSetup(player)endPlayers.PlayerAdded:Connect(leaderboardSetup)接続された関数内で、新しいFolderインスタンスを作成し、名前をleaderstatsにして、プレイヤーに親子関係を持たせます。
local Players = game:GetService("Players")local function leaderboardSetup(player)local leaderstats = Instance.new("Folder")leaderstats.Name = "leaderstats"leaderstats.Parent = playerendPlayers.PlayerAdded:Connect(leaderboardSetup)
統計を追加する
リーダーボードは、プレイヤーの統計を保存および表示するために値タイプオブジェクトを使用します。このスクリプトは、IntValueを使用してプレイヤーの金を表示します。これは整数のプレースホルダーです。
leaderboardSetup()関数内に、8行目から11行目を追加します:
local Players = game:GetService("Players")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = leaderstats
end
Players.PlayerAdded:Connect(leaderboardSetup)これらの行は次のことを達成します:
IntValueインスタンスが作成されます。
インスタンスのNameが"Gold"に設定されます。これは、リーダーボードに表示される統計の名前です。

統計の初期Valueが0に設定されます。これは、データストアに保存されている値を含む任意の値に設定できます。永続的なリーダーボードを実装している場合。
インスタンスはleaderstatsフォルダーに親子関係を持たせ、リーダーボードに追加されます。プレイヤーが経験に入ると、その名前がボードに表示されます。

統計を更新する
プレイヤーのリーダーボード統計を更新するには、その統計のleaderstatsフォルダー内のValueプロパティを変更します。たとえば、次のScriptを任意のピックアップオブジェクトに接続して、それを収集したプレイヤーのGold統計を増加させることができます。
local Players = game:GetService("Players")
local goldChunk = script.Parent
local function onPartTouch(otherPart)
local partParent = otherPart.Parent
local player = Players:GetPlayerFromCharacter(partParent)
local leaderstats = player and player:FindFirstChild("leaderstats")
local goldStat = leaderstats and leaderstats:FindFirstChild("Gold")
if goldStat then
-- ピックアップを破壊する
goldChunk:Destroy()
-- プレイヤーのリーダーボード統計を更新する
goldStat.Value += 10
end
end
goldChunk.Touched:Connect(onPartTouch)統計の順序を制御する
リーダーボード内の統計の順序を制御する方法は3つあります:
- 表示したい順序で統計を追加します。
このコードサンプルは、統計にIsPrimary値を追加する方法を示しています:
local Players = game:GetService("Players")
local function leaderboardSetup(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = leaderstats
local isPrimary = Instance.new("BoolValue")
isPrimary.Name = "IsPrimary"
isPrimary.Value = true
isPrimary.Parent = gold
end
Players.PlayerAdded:Connect(leaderboardSetup)リーダーボードを隠す
メニュー画面やカットシーン中にリーダーボードを隠すには、LocalScriptをStarterGuiまたはStarterPlayerScripts内に配置し、StarterGuiを呼び出します。
local StarterGui = game:GetService("StarterGui")
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)順序付きデータストアで永続的なリーダーボードを管理する
友達とグローバルは、Creator Hubで登録した順序付きデータストアからスコアを読み取ります。順序付きデータストアは真実のソースとして残り、RobloxはPlayerListに設定されたスコアを表示します。これにより、別のリーダーボードインターフェースやランキングサービスを構築することなく、永続的なソーシャルおよびグローバルランキングを追加できます。
初期ベータ版では、経験ごとに1つのアクティブな永続的リーダーボードをサポートしています。登録されたアクティブなリーダーボードのみが友達およびグローバルビューに表示されます。
データ要件
リーダーボードを登録する前に、そのデータが次の要件を満たしていることを確認してください:
- リーダーボードを支える単一の順序付きデータストア。
- 各プレイヤーは、その順序付きデータストア内に1つの数値スコアを持っています。
- 各キーは、ユーザーIDによって1人のプレイヤーを識別します。直接またはユーザーIDを含む一貫した形式を通じて。
- あなたの経験は、順序付きデータストアにスコアの更新を書き込みます。プラットフォームはスコアを読み取りますが、書き込みません。
- スコア書き込みロジックはサーバー上で実行されます。
順序付きデータを準備する
あなたの経験が現在スコアを保存している方法に一致するパスを選択します。
既存の順序付きデータストアを使用する
あなたの経験がすでに互換性のある順序付きデータストアにリーダーボードスコアを保存している場合、そのデータストアを保持し、Creator Hubで登録します。各エントリが数値スコアを含み、そのキーが一貫して1人のプレイヤーを識別していることを確認してください。
リーダーボードデータを再構築したり、別のランキングサービスにコピーしたりする必要はありません。
順序付きデータストアを作成する
リーダーボードデータがまだない場合、順序付きデータストアを作成し、既存のサーバー側スコアリングフローに追加します。各プレイヤーに1つの数値スコアを書き込み、プレイヤーのユーザーIDをキーとして使用するか、一貫したキー形式にユーザーIDを含めます。
local DataStoreService = game:GetService("DataStoreService")
local playerScores = DataStoreService:GetOrderedDataStore("PlayerScores")
local function saveScore(player, score)
local success, errorMessage = pcall(function()
playerScores:SetAsync(tostring(player.UserId), score)
end)
if not success then
warn(errorMessage)
end
endデータストアをCreator Hubで登録する前に、スコアが存在することを確認してください。永続的な値の保存とソートに関する詳細は、順序付きデータストアを参照してください。
別のバックエンドからスコアを移行する
標準データストア、外部データベース、または別のバックエンドがリーダーボードデータを保存している場合、表示したいスコアを順序付きデータストアに移行します。各プレイヤーに1つの数値スコアを保持し、プレイヤーを識別する一貫したキー形式を使用します。
移行後、新しいスコア変更が順序付きデータストアに到達し続けるように、スコアリングフローを更新します。
Creator Hubでリーダーボードを構成する
始める前に、あなたの経験が順序付きデータストアに有効なスコアを書き込んでいることを確認してください。
- Creator Hubを開きます。
- 順序付きデータストアを所有する経験を選択します。
- リーダーボードスコアを含む順序付きデータストアを登録します。
- 経験のためにリーダーボードを有効にします。
- リーダーボードがアクティブであることを確認します。
- 経験内のリーダーボードをテストし、スコアが期待通りに表示されることを確認します。
リーダーボードを無効にすると、プレイヤーから隠されますが、その順序付きデータストアやスコアは削除されません。

友達とグローバルビューをテストする
すでにスコアエントリを持つプレイヤーでテストします。
- 保存されたスコアを持つプレイヤーとして経験に参加します。
- 経験内のリーダーボードを開きます。
- 友達を選択し、期待されるスコアで適格な友達が表示されることを確認します。
- グローバルを選択し、プレイヤーが期待されるランクとスコアで表示されることを確認します。
- 既存のサーバー側ワークフローを通じてプレイヤーのスコアを更新します。
- リーダーボードが更新された値を反映していることを確認します。

スコアを管理する
順序付きデータストアワークフローを通じて、スコアを更新、修正、およびモデレートし続けます。Creator Hubはどのリーダーボードがアクティブであるかを制御しますが、スコア書き込みやモデレーションロジックを置き換えることはありません。
サーバー側の検証でスコアの書き込みを保護し、プレイヤーのランキングに影響を与える前に疑わしいまたは不可能な値を確認します。
FAQ
いいえ。スコアがすでに互換性のある順序付きデータストアにある場合、そのデータストアをCreator Hubで登録してください。
表示したいスコアを順序付きデータストアに移行し、その後Creator Hubで登録してください。
あなたが管理します。順序付きデータストアは真実のソースとして残り、あなたのサーバー側ワークフローはスコアを更新およびモデレートし続けます。
初期ベータ版では、経験ごとに1つのアクティブな永続的リーダーボードをサポートしています。