このページは公開版v0.2.0に対応します。ソース・型定義・WASMを同じ版に揃えて使用してください。
VEHICLE_API_CATALOG/ADDON_API_CATALOGと仕様を参照してください。
初期化と生成
共通生成設定は
environment(既定game)、bindings(extended専用のホスト値・同期関数)、requireLoader(extended専用のソース供給)、instructionBudget(既定1,000,000)、memoryBytes(既定8MiB)、devLogs、onLogです。WASM adapterのLuaメモリ設定は最大256MiB。予算はコールバック単位で、ホスト関数の壁時計実行時間を中断する機構ではありません。
両モード共通
modeは'vehicle'または'addon'の読み取り専用識別子です。生のABIには別途世代付きhandleの検査があり、不正ハンドルやraw double-disposeはエラーになります。
ビークル専用
frame.pixelsは借用、frame.copy()は所有コピー。width/height/strideBytes/formatを確認できます。frameのraw形式はgame-rgba8です。/canvasは表示用adapterであり、このraw契約を書き換えません。
Addon専用
Addonには
io、draw、frame、setPropertiesはありません。vehicleの操作をAddon handleへ渡してもraw ABIで拒否します。セーブ全体のUI設定、sourceファイル、hostのワールド状態は、g_savedataとは別にアプリ側で保存してください。
デバッガ
両モードでsetBreakpoints(points)、resume(mode?)、stack()、locals(level?)、upvalues(level?)、expandTable(handle,start?,limit?)、evaluateWatch(expression,level?)を提供します。標準配布のruntimeにはdebug featureを含めます。
modeはcontinue/into/over/outです。watchは副作用を起こす明示操作。localsとtableのraw検査はユーザーmetamethodを実行しません。デバッグtable handleはVMと停止世代に紐づき、resume/watch/reload後に使い回せません。詳細
値と保存ヘルパー
LuaValueはnull、boolean、number、bigint、string、Uint8Array、LuaTable。Luaから戻る文字列はbytesです。luaTextは明示的なUTF-8 decode、luaTableは文字列キーのrecord作成、luaFieldは文字列キーの読み取りに使います。
encodeSavedata/decodeSavedataはversion付きの携帯可能な保存形式です。型付き配列やbigintへ直接JSON.stringifyする必要はありません。テーブルのキーはscalarのみで、nil値は項目そのものを省略します。Luaで同じキーになる整数/浮動小数点、UTF-8文字列/同じbytesの重複は拒否します。
エラー番号
raw statusの0はcompleted、7はsuspended、8はmissingです。JSの引数検証や配送先の例外は、この表の番号だけに正規化されるとは限りません。
環境とホスト拡張
gameとextendedはVehicle/Addonの区別とは別です。onLogは配送先だけを指定し、printを有効化しません。任意の標準関数置換・独自関数・値はextendedのbindingsで初期化前に指定します。reset/reloadでも同じ設定を再適用します。利用例と制約。
開発時のソース読み込み
requireLoader(name)は{source, name}を同期的に返します。extended専用で、LifeBoat方式の初回実行・戻り値破棄・共有グローバルを提供します。ファイル解決はホスト側です。詳細はrequireと複数チャンクを参照してください。