サーバーとクライアント:ロブロックス(Roblox)のゲームが動くしくみ

初級しくみ更新日:2026年11月13日Luauの型チェック済み

ひとことで言うと

ロブロックス(Roblox)のゲームは、全員が共有する「サーバー」と、プレイヤーそれぞれの「クライアント」で動いています。クライアントで変えたことは、基本的に他の人には見えません。みんなに反映したいことはサーバーで行います。

この記事で使うAPI

RemoteEvent・ReplicatedStorage・Script・LocalScript

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枚ください」という合図を、確かめずにそのまま実行すると、ずるができてしまいます。点数やアイテムを増やす判断は、必ずサーバーで行いましょう。

執筆・動作確認:鈴木孝昌官公庁のWeb・システム開発を担当する現役プロジェクトマネージャー。沖縄マイクラ部 クロスウェーブで、ロブロックス(Roblox)・マインクラフト(マイクラ)・Scratchなどのプログラミングを指導。マイクラカップ沖縄代表チームを指導(第6回・第7回、第7回TBS賞)。
沖縄マイクラ部で、子どもたちにロブロックス(Roblox)やマインクラフト(マイクラ)のプログラミングを教えています。プロフィールと編集方針
Instagramで教室の様子を見る
noteで記事を読む