Roblox Studio(ロブロックススタジオ)でプログラムを実装しようとすると、いくつかのScriptファイルがあり、最初はどういった違いがあるのかわからないかと思います。
こちらではそのスクリプトファイルを、種類ごとに簡単に挙げて、どういったときにどんな用途で利用すべきかをまとめていきます。
RobloxのScriptの種類
以下がRobloxでプログラムを記述するためのスクリプトファイル3種です。
- Script
- LocalScript
- ModuleScript
それぞれ用途が明確に分かれており、以降で詳しく見ていきます。
なお、これらの用途の理解には、まずはRobloxはサーバーとクライアントそれぞれでプログラムを実行しているという、サーバークライアントモデルの動作であることを理解しておく必要があります。
Script(Server Script)
Scriptは、サーバーサイドで動くプログラムを記述するスクリプトファイルです。
主に
- ServerScriptServiceに生成することで、ゲーム開始から動くプログラムを記述
- モデル・パーツなどのアセット配下に生成して、各アセットの振る舞いのプログラムを記述
といった用途で利用します。
Scriptは、Workspace配下、またはServerScriptService配下、に位置するようになった場合に、自動的に動作しだすようになっています。
ServerScriptServiceとは、サーバーサイドのScriptを置くためのコンテナで、各アセットに紐づかないゲーム全体管理のプログラムなどを置くことが多いです。
ただし、ServerScriptServiceには、Scriptファイルだけでなく、後述するModuleScriptファイルも置くことができます。
アセット配下のスクリプトは、アセットがゲーム内に出現する(=Workspace配下になる)と同時に走りだすので、そのアセットに関する動作を記述するのが一般的です。
Scriptは上記の条件で走り出しますが、ServerStorageなどの開始条件外に移動したとしても、そのスクリプトが停止するわけではないので注意しましょう。
なお、各スクリプトは新規スレッドで実行されます。
参考:Script
参考:ServerScriptService
LocalScript
LocalScriptは、クライアントサイドでのみで動くプログラムを記述するスクリプトファイルです。
クライアント側の要素のみにアクセス可能となり、主に、各プレイヤーのUIやカメラなどの処理を記述します。
LocalScriptは以下の配下においてのみ動作するとされています。
- プレイヤーのBackpack(Toolなど)
- プレイヤーのcharacterモデル
- PlayerGui
- PlayerScripts
- ReplicatedFirst service
参考:LocalScript
ModuleScript
ModuleScriptは、コードや実装機能を複数箇所から利用できるように、再利用したいプログラムを記述するスクリプトファイルです。
よく利用するオブジェクトや機能、便利機能、などは様々なコードから参照・利用されます。
そういった機能をModuleScript化することで、コードの複製をせずとも、ライブラリのように必要な機能を共通に再利用できるようにします。
ModuleScriptは、サーバー(Script)・クライアント(LocalScript)どちらからも利用が可能です。
利用する際には、 require(Module)
という構文でモジュールを参照できるようにして利用します。
ModuleScriptは、これ独自で動作することはなく、ScriptまたはLocalScriptから参照された場合にはじめてロード・実行されます。
ある程度の規模のゲームを、効率的に、管理しやすく、実装していくために必須の機能といえます。
詳しい構文や、より便利に使う方法などは、以下を参照下さい。
参考
コメント