サーバーとクライアント:ロブロックス(Roblox)のゲームが動くしくみ
初級しくみ更新日:2026年11月13日Luauの型チェック済み
ひとことで言うと
ロブロックス(Roblox)のゲームは、全員が共有する「サーバー」と、プレイヤーそれぞれの「クライアント」で動いています。クライアントで変えたことは、基本的に他の人には見えません。みんなに反映したいことはサーバーで行います。
この記事で使うAPI
2つの場所
- サーバー:ゲームの「本体」です。全員が同じ世界を見られるのは、サーバーが世界の状態を管理しているからです。
- クライアント:プレイヤーそれぞれのパソコンやスマホです。画面の表示や操作の受け付けを担当します。
クライアントで変えても、他の人には見えない
LocalScriptでパーツの色を変えても、その変化は自分の画面だけに見えます(他の人の画面では変わりません)。全員に見せたい変化は、サーバーのScriptで行います。
サーバーとクライアントをつなぐ:RemoteEvent
(Script/置く場所:ServerScriptService)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remote = Instance.new("RemoteEvent")
remote.Name = "SayHello"
remote.Parent = ReplicatedStorage
remote.OnServerEvent:Connect(function(player, message)
print(player.Name .. ":" .. tostring(message))
end)
(LocalScript/置く場所:StarterPlayerScripts)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remote = ReplicatedStorage:WaitForChild("SayHello") :: RemoteEvent
remote:FireServer("こんにちは")
クライアントから「こんにちは」を送り、サーバーで受け取って表示します。サーバー側では、1つ目の引数に送ってきたプレイヤーが入ります。
大切な注意:クライアントを信用しない
クライアントから送られてきた値は、そのまま信用しないようにします。たとえば「コインを100枚ください」という合図を、確かめずにそのまま実行すると、ずるができてしまいます。点数やアイテムを増やす判断は、必ずサーバーで行いましょう。