Robloxスクリプト入門|Script・LocalScript・Workspaceの基本

Robloxでは Luau という言語を使います。
これはLuaをベースに、Roblox向けに拡張されたスクリプト言語で、初学者が先に押さえるべきなのは次の3つとなるため、本記事ではこれらについて解説します。

  • 何を操作するのか
  • どこにスクリプトを置くのか
  • そのスクリプトがサーバー側で動くのか、クライアント側で動くのか

まず、スクリプトの全体像をおさえるために最初に理解すべきなのは次の4つです。

目次

1. オブジェクトを操作できる

Robloxでは、ゲーム内のさまざまな要素、オブジェクトをスクリプトで操作できます。
たとえば以下です。

Part

3D空間に置く基本の部品です。
ブロック、床、壁、足場などの見た目や当たり判定の元になります。
Roblox Studioでは、まずPartを置いてゲームの地形やギミックを作ることが多いです。

Model

複数のPartやオブジェクトをひとまとめにしたものです。
家、車、チェックポイントなど、セットで扱いたいものを整理しやすくします。
まとめて移動・コピー・管理できるので、制作効率が上がります。

Player

ゲームに参加している各プレイヤーを表す仕組みです。
名前、所持データ、操作中のキャラクター情報などを持てます。
マルチプレイでは「誰に対する処理か」を区別するときの基準になります。

GUI

画面上に表示するユーザー向けのUIです。
ボタン、HP表示、メッセージ、メニュー画面などを作るために使います。
3D空間のオブジェクトではなく、プレイヤーの画面に直接表示されるのが特徴です。


2. スクリプトの種類を分ける

Robloxでは「みんな共通で管理したいこと」と、「その人の画面だけで見せたいこと」を分けて作ります。
そのために Script LocalScript ModuleScript を使い分けます。

Robloxには、主に以下のスクリプトの種類があり
特に初心者は LocalScriptScript の違いを理解する必要があります。

Script

主にサーバー側で動くスクリプトです。
ゲーム全体に関わる処理を書くときに使います。

できること

  • プレイヤー全員に共通する処理
  • スコアやコインなどの管理
  • Partに触れたときの判定
  • 敵の出現、ラウンド開始、勝敗判定

向いている処理

  • 誰でも同じ結果になるべきもの
  • 不正されたくない重要な処理
  • ゲームルールそのもの

例えば次のような処理です!

・ゴールに触れたらクリア判定する
・プレイヤーキャラクターがコインを集めたら、所持金を増やす
・一定時間ごとに敵を出す

向いていない処理

  • サーバーで動くので、画面の見た目だけを細かく変える処理には向かない
  • ボタンUIのクリックなど、プレイヤーの画面専用の操作はそのままでは扱いにくい

LocalScript

主にクライアント側で動くスクリプトです。
そのプレイヤーの画面や操作に関係する処理を書くときに使います。

できること

  • GUIの表示や更新
  • ボタンが押されたときの反応
  • カメラ操作
  • 自分のキャラクターの入力処理
  • 自分だけに見える演出

向いている処理

  • 特定のプレイヤー画面だけで動けばよいもの
  • 入力やUIなど、プレイヤー個別の処理
  • 軽い見た目の演出

例えば次のような処理です!

・画面に「スタート!」と表示する
・ボタンを押したらメニューを開く
・HPバーを更新する
・視点を切り替える

向いていない処理

LocalScriptはそのプレイヤーの中だけで動きます。
なので、ここで「コインを100枚にする」と書いても、本当にゲーム全体の正式データとして安全に管理することはできません。重要な情報はサーバーで確定させるべきです。

ModuleScript

共通処理をまとめるためのスクリプトです。
自分では勝手に動かず、ScriptLocalScript から require() して使います。

役割

  • 同じ処理を何度も書かないためにまとめる
  • 計算処理や共通ルールを整理する
  • コードを読みやすくする

向いている処理

  • ダメージ計算
  • レベルに応じた必要経験値
  • アイテム名の一覧
  • 文字列整形
  • 共通の便利関数

ScriptLocalScript「実際に仕事をする人」だとすると
ModuleScript「みんなが見る教科書・道具箱」です!

注意点

ModuleScriptは単体では動きません。
必ず他のスクリプトから呼んで使う必要があります。


3. 置き場所で意味が変わる

同じコードでも、どこに置くかで動き方が変わります。たとえば代表的なのは次の通りです。

名前役割主に入れるものポイント
Workspaceゲーム世界そのものPart、Model、キャラクター、配置物プレイヤーが実際に見る・触る3D空間
ServerScriptServiceサーバー専用の処理置き場Scriptプレイヤーから直接見えない安全な処理を書く場所
StarterPlayerプレイヤーが参加したときの元データ置き場LocalScript、プレイヤー関連設定入室時に各プレイヤーへ配られる

Workspace

ゲームの3D空間そのものです。
床、壁、チェックポイント、障害物、建物、置かれたモデルなどは基本ここに入ります。
プレイヤーのキャラクターもゲーム中はここに現れます。

よく置くもの

  • Part
  • Model
  • SpawnLocation
  • NPC
  • 乗り物
  • マップ全体

注意

Workspaceは見える場所なので、
「見せる必要のない管理用Scriptや重要データの置き場」として使うのは雑です。
特に初心者は何でもWorkspaceに置きがちですが、整理性も安全性も落ちます。

ServerScriptService

サーバーで動かすScriptを置く場所です。
スコア管理、勝敗判定、敵の出現、コイン付与など、ゲーム全体の正式な処理をここに書くことが多いです。

よく置くもの

  • Script
  • サーバー専用の管理処理
  • ラウンド制御
  • データ保存処理
  • 不正対策を含む判定処理

注意

ここに入れた処理はクライアント用UI操作には向きません
ボタン表示やカメラ操作などは LocalScript 側の役割です。

StarterPlayer

プレイヤー参加時に、そのプレイヤー用に配られる設定やスクリプトの元置き場です。
特に StarterPlayerScriptsStarterCharacterScripts を使います。

よく置くもの

  • LocalScript
  • プレイヤーごとの入力処理
  • カメラ制御
  • 走る処理
  • ジャンプUIや操作補助
  • キャラクターに毎回持たせたいスクリプト

主な中身

  • StarterPlayerScripts
    プレイヤーに入る LocalScript 用
  • StarterCharacterScripts
    キャラクターに入る LocalScript / Script 用
  • StarterPlayer の設定項目
    移動速度やカメラ関連の基本設定など

注意

StarterPlayerそのものに置いたものが、そのまま動く場所ではないと誤解しやすいです。
ここは「配布元」であって、実行時には各プレイヤー側へコピーされて使われます。

4. サーバーとクライアントは役割が違う

  • 見た目や入力処理はクライアント側
  • ゲームのルールや安全な判定はサーバー側

これはかなり重要で、たとえば「ボタンを押したらコインを増やす」のような処理を
見た目だけで完結させることはできません。

ゲームの大事な処理はサーバーが担当すると覚えておいてください。


まとめ

Robloxスクリプト入門では、最初に覚えるべきことは次の通りです。

  • Luauの基本文法を最低限だけ覚える
  • ScriptLocalScript の違いを理解する
  • script.Parent やイベントを使ってPartを動かす
  • 条件分岐で反応を変える
  • 小さな仕組みを1つずつ作る

最初の目標としては、Obbyのチェックポイントダメージ床 くらいがちょうどいいでしょう。

次は以下の記事を読みながら、実際にスクリプトの記述方法(Luau文法)について学びましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

アラフォー会社員で、スマホ/ゲーム/AIが好き。

個人開発・ゲーム開発・ブログ運営・レビュー記事を
実体験を基にできるだけわかりやすく投稿していきます。

目次