Level : Robloxのレッスン1〜4を終了したレベル
今回は、Robloxのリモートイベントを使用し、クライアントからサーバーに通信する方法を学習していきましょう。これはRobloxでのマルチプレイヤーゲームの一般的な機能を理解できるコードの書き方になります。
リモートイベントというのは、クライアントー>サーバーに通信するとき使用します。サーバーはインターネットで繋がっている大きな強力なRobloxコンピューターで、クライアントは、パーソナルコンピューター、携帯、タブレット、またはゲームコンソールです。

クライアントが、サーバーと通信するには、リモートイベントとリモートファンクションの2つのリモートのどちらかを使用します。
リモートイベントは、one-way communicationというデザインがなされていて、リモートファンクションはtwo-way communicationというデザインで構成されています。
リモートイベントには4つの使用方法があって、それぞれ情報の送信の仕方が目的によって異なります。

今回は、リモートイベントのクライアント→サーバーの通信方法を使用していきます。
この方法は、例えば、ユーザーがロブロックスのゲームを実行し、キーボードの ” e ” を押した時、新しく作成されたパーツがサーバー上のすべてのユーザーの画面に表示されるようになります。
その他のリモートイベントとリモートファンクションの使用方法は、…今のところは、リンク先からご参考にされて下さい。
下記リンク先のステップは、Robloxスタジオのインターフェイスを学習します。なんでも最初は真似してみましょう。このステップをやってプログラムが上手く走ると、サーバーと通信してパーツを表示することができます。
- Robloxのサイト:Remote Functions and Events
- Using Remote Events(2ステップ)
- Client toSeverを行って下さい。(3ステップ)
- Using Remote Events(2ステップ)
上記の内容のステップができたら、実際にパーツが作成されるかどうかテストをしましょう。
さらに詳しく学習したい方は読み進めて下さいね。
RemoteEvents:クライアントからサーバーへ
このプログラムの最終目的は、プレーヤーがキーボードの” e ”のキーを押したら新しく作成されたパーツがサーバー上のすべてのユーザーの画面に表示されるようにサーバーに指示することです。
FireSever()関数をRemoteEventのOnServerEventに接続しました。FireServer()関数についてもっと詳しく学習しましょう。
- この関数はクライアントからサーバーへの通信に使用されるため、クライアント側のLocalScriptで使用された場合にのみ機能します。
- インベントを発動したプレーヤーにパラメーター内のイベントが起動します。
- この関数はクライアントから起動する場合、FireServer()関数に起動させたいデータを含めます。(デフォルト設定:player引数が渡されます。)
- FireServer()関数で他の引数が指定されている場合、それらはプレーヤー引数の後にOnServerEventにも含めます。
Vector3とCFrameの位置関係
パーツが表示される位置について、例えば、パーツをアバターの目の前に出現させたい場合、CFrameの位置のコンポーネントを、Vector3のようにX、Y、およびZプロパティでも使用できます。回転せずに特定の位置に配置されたCFrameは、CFrame.new(Vector3)またはCFrame.new(X, Y, Z)を使用して構築できます。
-- Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEventTest")
-- Create a new part
local function onCreatePart(player, partColor, partPos, partMaterial, bool)
print(player.Name .. " fired the remote event")
local newPart = Instance.new("Part")
newPart.BrickColor = partColor
newPart.CFrame = player.Character.Head.CFrame*CFrame.new(partPos)
newPart.Material = partMaterial
newPart.Anchored = bool
newPart.Parent = workspace
end
-- Call "onCreatePart()" when the client fires the remote event
remoteEvent.OnServerEvent:Connect(onCreatePart)
最後にプレーヤーがキーボードの” e ”のキーを押したらパーツが作成できるようにコンピューターに指示していきましょう。UserInputService はクライアント側のみで使用できるため、LocalScriptを使います。クライアント側のみで使用できるということは、ゲーム内のユーザーが ” e ” のキーを押しパーツの作成においては、自分の入力のみを検出でき、他のユーザーの入力は検出できないということです。
--localscript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEventTest")
local userInputService = game:GetService("UserInputService")
local Player = game.Players.LocalPlayer
local Mouse = Player:GetMouse()
local function onKeyDown(key)
key = key:lower()
if key == "e" then
-- Fire the remote event
-- Include additional data when firing the event
remoteEvent:FireServer(BrickColor.Red(), Vector3.new(0, 0, -5),Enum.Material.Brick, true)
end
end
Mouse.KeyDown:connect(onKeyDown)
いかがでしたでしょうか。*動画でもRemoteEventのクライアントからサーバについての説明をご覧頂けます。