Skip to main content
Stormworks のマイクロコントローラーには1本の Lua しか貼れませんが、 Storm Code では複数のファイルに分けて書き、貼るときに1本へ結合できます。 結合と minify は StormMin が行います。

モジュールキー

.lua のパスは、そのままモジュールキーになります。 対応は常に1対1です。そのために .lua のファイル名とフォルダ名は Lua 識別子 ([A-Za-z_][A-Za-z0-9_]*) に限られています。 詳細はパスとモジュールキーを参照してください。

require の書き方

トップレベルの文として、次の2つの形だけが使えます。
require "lib.util" のように括弧を省略した形も使えます。 次のものはすべてエラーになります。
この制限は、呼び出し位置への静的な展開が常に可能であることを保証するためのものです。 この形なら、ブラウザでの実行 (本物の require) と、エクスポート後 (静的にリンクされたコード) で、 実行の順序も回数も完全に一致します。「ブラウザでは動いたのにゲームでは違う挙動になった」が起きません。
意味論は標準 Lua と同じです。モジュールは1度だけ評価され、結果が使い回されます。 循環 require はエラーとして検出されます。

sim.* 標準ライブラリ

sim.*require なしで使える名前空間です。2種類のメンバーがあります。 シミュレータ専用のものは Storm Code の中にしか存在せず、ゲーム内には無いためです。 Sim I/O が生成するブロックは minify の前に取り除かれるため、 パネルから設定している限りこのエラーにはなりません。 全一覧は sim.* 標準ライブラリにあります。
sim.* に付属するライブラリは Storm Code に同梱されており、バージョンは固定です。 利用者が選ぶことはできません。これは Stormworks の公式ライブラリではありません。

minify する

Minify を開くと、次の処理を通した結果が出ます。
結果をコピーして、Stormworks のマイクロコントローラーの Lua スクリプトへ貼り付けます。 エクスポートの際には履歴が1世代記録されます。

デバッグ実行では警告、minify ではエラーになるもの

Stormworks の実機にしか無い制限がいくつかあります。 これらは編集中は警告として表示され、minify のときにエラーになります。 デバッグ実行はブラウザ内の本物の Lua なので、これらでも動いてしまいます。 その差を埋めるために、警告として先に見せています。

編集中のリント

編集中は自動で解析が走り、Problems パネルに診断が出ます。
  • 解析は常に全ファイルが対象です。フィルターは表示だけを絞ります。
  • フィルターは「ファイル (現在 / 開いているもの / 全部)」「種別 (error / warning / info)」 「発生源 (lint / 実行時)」の3軸です。既定は「開いているファイル」「全種別」「全発生源」です。
  • 絞り込みの状態はリロードしても残ります。
診断コードの一覧は診断とエラーコードにあります。

特定の行だけ警告を止める

行コメントで抑制できます。
抑制できるのは警告 (warning) だけです。 error のものは抑制できません。実機で確実に壊れるものを黙らせる穴は作っていません。