モジュールキー
.lua のパスは、そのままモジュールキーになります。
対応は常に1対1です。そのために
.lua のファイル名とフォルダ名は
Lua 識別子 ([A-Za-z_][A-Za-z0-9_]*) に限られています。
詳細はパスとモジュールキーを参照してください。
require の書き方
トップレベルの文として、次の2つの形だけが使えます。require "lib.util" のように括弧を省略した形も使えます。
次のものはすべてエラーになります。
この制限は、呼び出し位置への静的な展開が常に可能であることを保証するためのものです。
この形なら、ブラウザでの実行 (本物の
require) と、エクスポート後 (静的にリンクされたコード) で、
実行の順序も回数も完全に一致します。「ブラウザでは動いたのにゲームでは違う挙動になった」が起きません。require はエラーとして検出されます。
sim.* 標準ライブラリ
sim.* は require なしで使える名前空間です。2種類のメンバーがあります。
シミュレータ専用のものは Storm Code の中にしか存在せず、ゲーム内には無いためです。
Sim I/O が生成するブロックは minify の前に取り除かれるため、
パネルから設定している限りこのエラーにはなりません。
全一覧は
sim.* 標準ライブラリにあります。
sim.* に付属するライブラリは Storm Code に同梱されており、バージョンは固定です。
利用者が選ぶことはできません。これは Stormworks の公式ライブラリではありません。minify する
Minify を開くと、次の処理を通した結果が出ます。
デバッグ実行では警告、minify ではエラーになるもの
Stormworks の実機にしか無い制限がいくつかあります。 これらは編集中は警告として表示され、minify のときにエラーになります。
デバッグ実行はブラウザ内の本物の Lua なので、これらでも動いてしまいます。
その差を埋めるために、警告として先に見せています。
編集中のリント
編集中は自動で解析が走り、Problems パネルに診断が出ます。
- 解析は常に全ファイルが対象です。フィルターは表示だけを絞ります。
- フィルターは「ファイル (現在 / 開いているもの / 全部)」「種別 (error / warning / info)」 「発生源 (lint / 実行時)」の3軸です。既定は「開いているファイル」「全種別」「全発生源」です。
- 絞り込みの状態はリロードしても残ります。