Skip to main content
このページはv0.1.0からv0.2.0へ更新するときの変更点を説明します。0.1.0の公開済みパッケージ自体は変更されません。

実行環境の明示

0.2.0の既定はenvironment:"game"です。pcall、xpcall、error、printなどの開発用機能を必要とするホストは、environment:"extended"を明示してください。assertとグローバルunpackもextended側に置いています。 debug.logはgameから利用できます。debugテーブルにLua標準のデバッグ関数はありません。ホストのブレークポイントや変数検査は、このテーブルとは独立して使えます。 onLogの指定だけでprintは有効になりません。devLogsやenableLogs()はextended専用です。ログ配送先の設定と、Luaへ公開する関数の設定を分けてください。

共通コンパイラの追加

/compilerに解析、複数モジュールのリンク、最適化、プロパティ走査を追加しました。通常のコンパイルにLua VMは不要で、実行だけの利用者がコンパイラを初期化する必要もありません。 対象はVehicleのみです。Addonの実行を使えても、Addonの解析・最適化はまだ利用できません。 未知の外部グローバルは、ソース内に代入がないことを理由に改名・nil化しません。_ENVやextended環境は字句短縮に切り替えます。文字数が従来より増える場合もあるため、ゲームへ出す生成物は改めてサイズを確認してください。 以前からStorm Minを利用していた場合、削除済みの4パスと未知のpass IDはエラーになります。診断の変更、数値モード、property設定はCompilerガイドを参照してください。

ホスト拡張とrequire

任意のホスト値・同期関数をbindingsで渡せます。コンパイラへも同じ環境と拡張名を伝えてください。 開発時のファイル分割にはrequireLoaderを追加しました。LifeBoat方式のinclude-onceで、共有グローバル・別チャンク・戻り値破棄を行います。標準Luaのモジュール戻り値方式や、Compilerの静的リンクとは別です。 ローダーの中でvm.load()へ再入するのではなく、ホストはソースとチャンク名だけを返します。読み込み先のブレークポイント・継続・命令予算はSDKが扱います。

Vehicleのreset

0.1.0では、複数回loadしてもresetで再実行するのは最後のソースだけでした。0.2.0は、正常完了した全loadを元の順番で再実行します。前置き・本体・後置きを別チャンクで構成した初期化を維持できます。 loadはプログラム交換ではなく追加実行です。過去のコードを残したくない編集の反映には新しいVMを作成してください。失敗したload、完了前にresetで破棄したloadは再実行履歴へ入りません。 Addonのloadは従来どおり初回のみです。reload(savedata)とrequireLoaderを組み合わせて、同じ入口から開発用モジュールを再実行できます。

Playgroundとドキュメント

Engine自身のCLI/WebとしてStorm Lua Engine: Playgroundを追加しました。Storm Minは既存のCLI/Webを維持し、両者は同じSDKを利用します。Addon LabのSDK確認機能はPlaygroundへ移し、旧Labの仮物理・3Dワールドは移していません。 利用者向けガイドはdocs.makkii.jpを正本とします。SDKリポジトリには、コードと一緒に変更する仕様・設計・検証・リリース手順と実行可能な例を残します。

配布物と保存形式

SDKのJS・型・WASMは同じ版に揃えてください。runtime・raster・compilerは別のWASMなので、相互に生ポインタを渡しません。 この変更で既存savedata codecの形式、描画命令ABI、Composite I/Oのレイアウト、Playgroundのversion付きプロジェクト形式を変更してはいません。過去のAddon Lab形式を自動変換する機能も追加していません。readme、ガイド、APIの対応範囲を確認したうえで更新してください。