Robloxのリーダーボードを作成する
2019-04-20

Robloxのリーダーボードを作成する

今日は唐突にRobloxでのゲームプログラミングの話です。

Roblox!?

子供たちがレゴブロックのような感覚で自作のゲームを作り、公開できるプラットフォームが「Roblox(ロブロックス)」だ。

娘と週末にRobloxで遊ぶことがあり、遊んでいる時にふっと「自分でゲームを作って公開できる」と言ったことがありました。
その時、あまり娘は理解していなかったようだったので、ちょっとどういうことか理解させて驚かせてやろうかと思い、試しに1つ作って娘に見せてみたら、目玉が飛び出るくらい興奮して、早速自分も作りたいという話になりました。
(たぶん、お父さんですら作れるなら、自分にもできると思っている。。。)

自分もそこまでくわしくないので、それ以来こっそり教えられるようにRobloxでのプログラミングについて調べているという次第です。

ちなみにRobloxでは、Lua言語と、Roblox Studioを使って、Robloxが提供するAPIを使いながらゲームを作成します。

今回はリーダーボードを作成方法についての紹介です。

リーダーボードとは

リーダーボード(LeaderBoard)とは、ゲームの中でプレイヤーの名前や得点などを表示するものです。
画面の一番見やすい場所に置いてあり、ロブロックスでは画面の右上に表示されています。

リーダーボードの作成

ではリーダーボードを作成します。
まず最初にRoblox Studioで新しいプロジェクトを作成してきます。

リーダーボードのセットアップ

まず、右側のExplorerの中のServerScriptServiceの中に新しいScriptを作成します。名前はPlayerSetupとしておきます。

そのScriptの中にonPlayerJoinという関数を作成します。この関数はplayerというパラメータを受け取ります。

local function onPlayerJoin(player)

end

次にonPlayerJoinの中にleaderStatsという名前の変数を作成して、Folderのインスタンスを設定しておきます。このフォルダーの中に全てのプレイヤーの情報が保存されます。

local function onPlayerJoin(player)
  local leaderStats = Instance.new("Folder")
end

先ほどの変数leaderStatsNameを設定します。Nameは「leaderstats」としてください。
間違えるとリーダーボードは作成されません。そしてleaderStatsParentplayerを設定します。

local function onPlayerJoin(player)
  local leaderStats = Instance.new("Folder")
  leaderStats.Name = "leaderstats"
  leaderStats.Parent = player
end

最後にonPlayerJoinをこのゲームと接続します。これで誰かがこのゲームに参加してきた時に、onPlayerJoinが実行されます。

local function onPlayerJoin(player)
  local leaderStats = Instance.new("Folder")
  leaderStats.Name = "leaderstats"
  leaderStats.Parent = player
end

game.Players.PlayerAdded:Connect(onPlayerJoin)

これでリーダーボードのセットアップは完了です。

リーダーボードにプレイヤーの情報を表示する

次に、リーダーボードにプレイヤーが持っているお金(Gold)を表示してみます。

このお金を記憶するためにIntValueという数値を記録するための変数を使います。
onPlayerJoin関数の中で、goldという名前の変数を作成し、IntValueのインスタンスを設定しておきます。

local function onPlayerJoin(player)
  local leaderStats = Instance.new("Folder")
  leaderStats.Name = "leaderstats"
  leaderStats.Parent = player

  local gold = Instance.new("IntValue")
end

リーダーボードに表示する名前をNameに設定します。今回の例では、「Gold」と表示されるはずです。

local function onPlayerJoin(player)
  local leaderStats = Instance.new("Folder")
  leaderStats.Name = "leaderstats"
  leaderStats.Parent = player

  local gold = Instance.new("IntValue")
  gold.Name = "Gold"
end

次に最初に持っているお金をValueに設定します。最初は「0Gold」にしておきましょう。

local function onPlayerJoin(player)
  local leaderStats = Instance.new("Folder")
  leaderStats.Name = "leaderstats"
  leaderStats.Parent = player

  local gold = Instance.new("IntValue")
  gold.Name = "Gold"
  gold.Value = 0
end

最後にgoldのParentleaderStatsに設定します。

local function onPlayerJoin(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

これで画面の右上にリーダーボードが表示されるようになりました。

まとめ

ほぼ、ここの内容の翻訳です。

Robloxのプログラミング情報は英語でもほとんど手に入らないので辛いですね。。。

まだ、わからないことが多いですが、娘に教えられるよう頑張って情報集めてみます。