Roblox StudioでリーダーボードにScoreを表示する方法
Roblox標準のプレイヤー一覧へScore列を追加し、参加した全プレイヤーの初期値が0と表示されるリーダーボードを作ろう。

ゲーム画面の右上へ、プレイヤー名とScoreを並べて表示しよう。Robloxに最初から入っているプレイヤー一覧を使うため、自分で画面UIを組み立てる必要はない。
所要時間は5〜8分。 完成すると、ゲームへ参加したプレイヤー全員の横にScore = 0が表示される。この機能の実装にRobuxは必要なく、ゲームを公開していなくてもStudioで試せる。
今回のゴール
Playを押し、プレイヤー一覧に自分の名前と
Score、初期値の0が表示されたら完成。
始める前に
新しいBaseplateでも、作りかけのゲームでも進められる。StudioのPlayとStopがまだ不安なら第1回:Roblox Studioを準備しようを先に試そう。Scriptの作り方を復習したい場合は第4回:溶岩の床をLuauで作るが役立つ。
ここで作るのは、Roblox公式ドキュメントが説明する組み込みのリーダーボードだ。順位を自動で並べ替える「全サーバー共通ランキング」ではない。まずは、現在のゲームに参加している人のScoreを表示する土台を作る。
1. ServerScriptServiceへScriptを追加する
ExplorerでServerScriptServiceを見つけ、右側の+からScriptを追加する。名前はLeaderboardに変えておこう。

ServerScriptServiceは、ゲームのルールをサーバー側で動かす場所だ。プレイヤー全員が見るScoreは、各プレイヤーの端末ではなくサーバーで作る。
Tips:Explorerが見当たらないとき
Studio上部の
WindowからExplorerを開く。日本語表示では「ウィンドウ」内の「エクスプローラー」に相当する。
2. Scoreを作るコードを書く
追加したScriptに最初から入っているコードをすべて消し、次を貼り付ける。
local Players = game:GetService("Players")
local function setupLeaderboard(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local score = Instance.new("IntValue")
score.Name = "Score"
score.Value = 0
score.Parent = leaderstats
end
Players.PlayerAdded:Connect(setupLeaderboard)
コードは上から順に、次の3つを行っている。
Playersサービスを取得する- 新しいプレイヤーが参加したら、その人の中へ
leaderstatsフォルダーを作る - フォルダーの中へ、初期値
0の整数Scoreを作る
PlayerAddedは、プレイヤーがゲームへ参加したときに発生するイベントだ。詳しい仕様はRoblox公式のPlayers.PlayerAddedでも確認できる。
完成後の中身を図で確認する
Play中、ExplorerのPlayersを開くと、参加したプレイヤーの下は次のような形になる。
Players
└─ 自分のプレイヤー名
└─ leaderstats
└─ Score = 0
この親子関係が、そのままプレイヤー一覧の表示へつながる。leaderstatsをServerScriptServiceへ入れたり、Scoreをプレイヤーの直下へ置いたりすると、コードが動いても一覧の列にはならない。
コードでは、作ったInstanceへ最後にParentを設定している。名前や初期値を決めてから親へ入れると、ほかの処理が途中の状態を見にくくなるためだ。今回の短いコードでも、作成、設定、配置の順番をそろえておくと、次にScoreを増やす処理を足しやすい。
leaderstatsは小文字のままにする
いちばん大切なのは、フォルダー名のleaderstatsだ。Robloxがこの決まった名前を見つけると、フォルダー内の値をプレイヤー一覧の列として表示する。
LeaderstatsやleaderStatsへ変えると表示されない。Script名のLeaderboardは好きな名前でも動くが、フォルダー名だけは小文字で正確に書こう。
IntValueを使う理由
IntValueは、小数を含まない整数を保存する入れ物だ。コイン数や倒した敵の数のように、0、1、2と増える値に向いている。
score.Name = "Score"が一覧に出る見出しscore.Value = 0が参加直後の数値score.Parent = leaderstatsでScoreを表示対象に入れる
この段階では、Scoreを増やす仕組みや退出後の保存はまだない。今回は「全員に0を表示する」ところまでを完成させる。
なぜServerScriptServiceに置くのか
プレイヤーが自分の画面だけでScoreを書き換える作りにすると、ほかの参加者やサーバーが正しい値を共有できない。ServerScriptServiceの通常のScriptでScoreを作れば、サーバーが各プレイヤーの値を用意し、その結果が参加者へ共有される。
これからコイン取得やショップを追加するときも、ゲーム結果に関わる数値はサーバー側を正本にする。画面へ表示するだけの処理と、実際のScoreを変更する処理を分けるのが、安全なゲーム作りの基本になる。
3. PlayしてScore 0を確認する
Studio左上のPlayを押す。キャラクターが表示されたら、キーボードのTabを押してプレイヤー一覧を開く。

右上に次の3つが見えれば成功だ。
Peopleまたはプレイヤー名の列Score列- 自分の名前の横に
0
環境によってプレイヤー一覧は最初から開いていることもある。閉じるときもTabを押す。確認できたらStopを押し、編集画面へ戻ろう。

Stopを押したあと、もう一度Playしても0から始まることも確認しよう。これは不具合ではない。今のScriptは参加時に毎回新しいScoreを作り、初期値を0にしている。退出後も同じ値へ戻したい場合は、後続のデータ保存ガイドでData Storeを追加する。
完了チェック
次の4項目がすべてできたら、今回の作業は完了だ。
ServerScriptServiceにLeaderboardがある- Play中にプレイヤー一覧を開ける
- 見出しに
Scoreと表示される - 自分の名前の横に
0と表示され、Outputに赤いエラーがない
うまく表示されないとき
プレイヤー一覧そのものが見えない
テスト中にTabを押す。Studioの編集画面ではなく、キャラクターを操作できるPlay中に押すのがポイントだ。
名前は出るがScore列がない
次の4か所を見直そう。
LeaderboardがServerScriptServiceの中にある- フォルダー名が完全に小文字の
leaderstats ScoreのParentがleaderstats- コードを直したあと、一度StopしてからPlayし直した
Outputに赤い文字が出ている場合は、行番号の近くに打ち間違いがある。特に引用符"と丸括弧()、endの抜けを確認する。
Scoreが0ではない
score.Value = 0になっているか確認する。以前のScriptが同じScoreを作っている場合は、いったん別のScriptを無効にしてから試す。
2人でも同じ表示になるか確かめる
余裕があれば、Studioのテスト方法をServer & Clientsへ変え、クライアント数を2にしてPlayする。2つのクライアントそれぞれでTabを押し、Player1とPlayer2の両方にScore = 0が見えれば、参加者ごとに値を作れている。
通常は1〜2クライアントで十分だ。複数人テストの開き方と終了方法はRoblox公式のStudio testing modesにもまとまっている。
2人テストでは、片方のクライアントだけを見るのではなく、どちらの一覧にも2人分の行があるか確認する。Player1とPlayer2は別のPlayerなので、それぞれの中に別々のleaderstatsとScoreが作られる。終了するときは通常のStopではなくEnd Sessionを押すと、サーバーと2つのクライアントをまとめて閉じられる。
完成
これで、参加したプレイヤー全員にScore = 0を表示する土台ができた。今回は値を「見せる」ところまでなので、Playを終えるとScoreはリセットされる。
次の機能別ガイド「触れると増えるコインを作る」では、ゲーム内のコインへ触れたときにこのScoreを1ずつ増やす。leaderstatsとScoreの名前はそこで使うため、そのまま残しておこう。


