拡張機能
拡張機能はランチャー本体を書き換えずに機能を足す仕組みです。独自ページ、インスタンスの一括処理、外部サービス連携、マルチプレイ補助などに使えます。
すぐ書き始めたい場合
6 言語分のテンプレートを用意しています:言語別テンプレート。clone して id を変えるだけです。
構成
text
my-ext/
├─ manifest.json 識別子・名前・バージョン・ランタイム・エントリ・権限
├─ main.jar エントリ(.py / .js / .exe も可)
└─ lib/ 依存(任意)データフォルダの extensions/ に置くと「設定 → 拡張機能」に表示されます。
インポート・権限確認・有効化の手順は インポートと管理 を参照してください。
信頼と検証
初回読み込み時にパッケージ全体の SHA-256 を計算し、extensions/trusted.json に記録します。
json
{
"hello-go": { "sha": "9f2c…", "enabled": true }
}- 内容が変わるとハッシュが合わず、読み込みが拒否されます(改ざん検出)。
- ウイルス対策ではありません。出所不明の拡張は入れないでください。
- 無効化は
enabledをfalseにするだけで、ファイルは削除しません。
ライフサイクル
text
スキャン → manifest 読み込み → 検証 → trusted.json と照合
→ ランタイム確認 → 一時領域へ展開(ネイティブは chmod +x)
→ エントリを起動 → stdio で hello → 実行
→ 終了 / 無効化 → 一時領域を削除拡張は別プロセスです。落ちてもランチャーは落ちず、ランチャー終了時に子プロセスも回収されます。
権限
| 権限 | 意味 |
|---|---|
fs.read | データフォルダの読み取り |
fs.write | データフォルダの書き込み |
net | ネットワーク |
process | 子プロセスの起動 |
ui | ダイアログ・通知・ページ追加 |
launch | ゲーム起動のトリガー |
宣言していない権限の呼び出しは拒否され、ログに残ります。
サイズ制限
| 項目 | 上限 |
|---|---|
| 単一ファイル | 8 MiB |
| 展開後 | 16 MiB |
| manifest.json | 64 KiB |
ネイティブは strip してから固めてください。
bash
go build -ldflags "-s -w" -o main.exe .
cargo build --release && strip target/release/my-ext