Open13

RobloxのScriptについて

ピン留めされたアイテム
bisquebisque

TODOs

bisquebisque

スクリプト言語としてLua 5.1を拡張したLuauが使われている。
https://create.roblox.com/docs/scripting/luau

Luauが開発されたモチベーション。要するにLuaにパフォーマンスと型システムを強化したもの?
https://luau-lang.org/why

bisquebisque

Luaの特徴

https://www.lua.org/manual/5.1/

  • TableはArray(Index)にもDictonary(Key/Value)にもなる
  • Tableに値とは独立したMetadataを持てる
  • 関数は第一級オブジェクト
  • 関数の戻り値は2つ以上の値を返せる
  • レキシカルスコープ

LuauのSyntax は Lua 5.1 と同じと考えていいのだろう(型があることを除いて)

bisquebisque

Roblox Studioを使ったScriptのチュートリアル
https://create.roblox.com/docs/tutorials/scripting/basic-scripting/intro-to-scripting

パーツを消したり、当たり判定を変化させたり、接触するとプレイヤーをkillしたり、などなど、基本的なアクションゲームが作れそうな内容が紹介されている。

bisquebisque

ここまで見て、パーツごとにScriptを設定するので同じScriptをまとめるにはどうしたらいいのだろう?と思ったら、次のステップで用意されていた。
https://create.roblox.com/docs/tutorials/scripting/intermediate-scripting/creating-a-health-pickup

同じパーツをフォルダにまとめて配置し、ゲームの開始時にフォルダ内のパーツをロードしてループですべてのパーツにイベントハンドラを設定していく。汎用ScriptはServerScriptServiceに配置する。

bisquebisque

Scriptについて

https://create.roblox.com/docs/scripting/scripts

Scriptの種類

  • ServerScript: サーバーで実行される。ゲーム自体の制御に
  • LocalScript: クライアントで実行される。ユーザーの操作の補助などに。
  • ModuleScript: サーバー、クライアントを問わず、再利用できる

配置のルール

  • ServerScriptはServerScriptServiceに配置する
  • LocalScriptはStarterPlayerScriptsに配置する
  • ModuleScriptはサーバのみ参照する場合はServerScriptServiceに、ローカルも参照する場合ReplicatedStorageに配置する
bisquebisque

Scriptの配置ルール
https://create.roblox.com/docs/scripting/scripts/script-storage

  • 個別のModelに適用する場合はModelの直下
  • サーバのロジックはServerScriptService
  • ローディング画面などすぐに読み込みたいものはReplicatedFirst
  • プレイヤーのGUIを操作するものはStarterGui
  • カメラや入力などの制御はStarterPlayerScripts
  • プレイヤーの操作はStarterCharacterScripts
  • サーバーとクライアントの両方で必要なModuleScriptはReplicatedStorage
  • サーバーだけで必要なModuleScriptはServerStorage