この記事では、さらっとスクリプトとローカルスクリプトの違いを解説していきます。
結論、スクリプトとローカルスクリプトの違いは、スクリプトが動作する場所の違いです。
ScriptとLocalScriptの違い
Scriptのほうは、サーバー側(Robloxのコンピュータ)で実行されます。一方で、LocalScriptは、クライアント側(プレイヤーのコンピュータ)で実行されます。
これが、ScriptとLocalScriptの違いです。
そして、スクリプトが実行される場所が違えば、当然、できることや挙動にも差があります。それを紹介していきます。
- Scriptからのみアクセスできるサービスがあります。例えば、セーブデータを保存するためのサービス(DataStoreService)へのアクセスは、Scriptからしかできません。
- また、コードがクライアントに送られないので、機密情報を含む場合は絶対にこちらのスクリプトを使います。
- 重要な処理は大体こちらのスクリプトを使います。脆弱性でゲームが荒らされるよりは少し動作が重くなってでもこっちを使ったほうが100倍マシなので迷ったらこっちを使います。
- サーバー側のスクリプトで実行された結果がクライアントに伝わるまでは、遅延があります。一方でクライアントで実行すれば(LocalScriptを使えば)、遅延がありません。(つまり、サーバーと端末との通信遅延の影響を受けなくなる)
- また、それぞれのクライアントのLocalScriptで実行された結果は、他のクライアントには反映されません。
- また、一部のGUI系の処理などはローカルスクリプトのみが対応していることがあります。
その他のScriptとLocalScriptの違いとして、実行できるサービスの違いがあります。
例えば、Workspaceはサーバー側のサービスなので、Workspace内で実行できるのはScriptのみです。Workspace内にLocalScriptを置いても、実行できません。
また、ReplicatedStorageやServerStorageなどでは、ScriptもLocalScriptも実行できません。
ただし、RunContextというプロパティを変更すれば、Workspaceでもクライアント側でコードを実行させたり、ReplicatedStorageやServerStorageでもスクリプトを実行したりすることができます。
もし興味があればこちらの記事もご覧ください。
ScriptとLocalScriptの使い分け
大前提として、重要な処理は全部Scriptを使います。
Scriptを使う場合
例えば、タイムアタックのシステムを作っていて、それにランキング機能がある場合は、タイムを計測するシステムは必ずScriptの方で作ります。そうでないと、ランキングが荒らされてしまいます。
そのほかにも、重要な処理は全部Script。クライアント側の処理を最低限にすることがチート対策につながります。
また、前述したように、DataStoreServiceなど、一部のサービスはScriptからしかアクセスできません。
LocalScriptを使う場合
その上で、ローカルスクリプトを使わないとできないことも存在します。
先ほども述べたように、ローカルスクリプトはクライアント側の端末で実行されるので、通信遅延の影響がありません。スクリプトが実行されてから、結果が反映されるまでにタイムラグがないのです。
また、前述したように、GUI系の処理はローカルスクリプトでしかできないこともあります。
もう1つ、ローカルスクリプトでしかできないことが存在します。それは、「あるプレイヤーだけには○○に見えるけど、他のプレイヤーにはそうは見えない」というようなものです。詳しく説明していきます。
例えば、「ゲームパスを持っている人しか入れないエリア」というものをよく見かけるかと思います。
エリアの入口にゲートがあって、ゲームパスを持っている人だけがゲートの当たり判定なくすり抜けられる。みたいな仕組みですね。
これにはローカルスクリプトが使われています。
①プレイヤーがゲームパスを持っているかを判定する
②もしゲームパスを持っていたら、Partの当たり判定の有無のプロパティ(CanCollide)をオフにする
もし②の部分をサーバー側のScriptで実行した場合、ゲームパスを持っているかどうかに関わらず、全てのプレイヤーが通り抜けられるようになってしまいます。
そこで、ゲームパスを持っている人のLocalScriptで②の処理を実行すれば、ゲームパスを持っている人だけが通り抜けられるようになります。
これが、LocalScriptでしか実現できない重要なことです。
また、スクリプトを実行することで、コンピュータに負担がかかります。
Scriptはサーバー側、LocalScriptはクライアント側で実行されるので、スクリプトが実行される側を上手く調整することで、サーバー側の負担やクライアント側の負担を調整することもできます。
上手くScriptとLocalScriptを使い分けて、ゲーム体験を向上させましょう!
結論
- ScriptとLocalScriptの違いは「実行される場所の違い」。Scriptはサーバー側、LocalScriptはクライアント側。
- 重要な処理はだいたいScriptを使う
- Scriptからしかアクセスできないサービスはたくさんある
- ただし、LocalScriptでしかできないこともある
- 迷ったらScriptを使う(チート対策)
- ScriptとLocalScriptの違いを理解し、上手く使い分けよう!
それでは、今回の記事はここまで。少しでもこの記事がみなさんの役に立ったら嬉しいです。
最後までご覧いただき、ありがとうございました!