使い分け
Storm Minは引き続き独立したCLI/Webです。Playgroundはその後継や置き換えではなく、同じSDKを使う確認用アプリです。
ゲーム環境と拡張環境
environment: "game"が既定です。debug.logは使えますが、print、pcall、errorなどの拡張関数は公開しません。debugテーブルのメンバーはlogだけで、Lua標準debugライブラリとは異なります。
environment: "extended"を選ぶと、開発用の保護呼び出しやprintなどを明示的に使用できます。拡張環境で成功したことは実ゲーム互換の保証ではありません。Vehicle/Addonの実行モデル、Luaに見える環境、数値モード、ホストのデバッガを混同しないでください。
onLogは配送先の設定だけで、printを追加しません。ゲーム環境のままでも、ホストのブレークポイント・ステップ・変数検査を使用できます。
ホストから機能を渡す
Addonのserverは、ホストが実装する同期関数群です。独自のグローバルや標準関数の置換は、extendedのbindings.valuesとbindings.functionsへ明示します。設定はソースのload前に適用され、reset/reloadでも維持されます。
コンパイラへも同じenvironmentとhostBindingsを渡してください。bindingPaths(bindings)で実行時の設定からパス一覧を作れます。標準関数を置き換えたことを知らせずに、標準の動作を仮定した最適化を適用しないでください。
解析・ビルド・実行を分ける
analyzeは診断、buildは複数モジュールのリンクと必要時の最適化、minifyは単一ソースの短縮です。これらはLuaを実行しません。実行するのは、利用者が生成物を明示的にVMへloadした後です。
単一ソースとプロジェクトで、既知の非対応関数の判定を共有します。編集時は警告、ゲーム向け生成ではエラーです。_ENVの動的アクセスやextended環境は、名前・トークン・行番号を維持する字句短縮になります。conservative-minificationとsearch.mode: "lexical"で確認できます。
コンパイラの対象は現在Vehicleのみです。Addonの実行は利用できますが、Addonの解析・最適化は未対応として明示的に拒否します。
ブラウザから使う
loadCompiler()はコンパイラ用WASMだけをロードします。初期化後のcompiler.minify()は同期処理なので、UIを止めないようホストが作ったmodule Workerから呼びます。CompilerWorkerClientとserveCompilerは通信を共通化するアダプタで、Workerを勝手に生成しません。
runtime、raster、compilerのWASMは別の実行単位です。ポインタやメモリを共有せず、生成Luaや所有した画素などのデータで接続します。
詳しい手順は導入、Compiler、requireと複数チャンク、API一覧、0.2への変更を参照してください。実行可能な例と実装契約はSDKリポジトリで管理します。