第8章 プラグイン
Windows 版のプラグイン(DLL)の一覧と、Android / ブラウザでの扱いです。シナリオ作成の手順は 制作者向け入門 を参照してください。
images/08_plugins.png
図8-1: プラグイン概要
images/08_plugins.png注意: ここで挙げる DLL は Windows 専用です。ブラウザ(WASM)と Android では DLL を使わず、同じ機能を本体に内蔵しています(8.2)。Windows では DLL を exe の隣の DLL\ フォルダに置き(LuminaDebugTools.dll だけは exe の隣)、各機能を最初に使う直前にエンジンが自動で読み込みます。
Live2D への対応は標準の配布物に含まれない拡張で、別冊『LUMINA Live2D 対応マニュアル』で扱います。
8.1 プラグイン一覧
| DLL | 必要なとき | 提供元 | 機能 |
|---|---|---|---|
| lmmovie.dll | 動画を使う作品 | ALC Software Laboratory | 動画再生(Media Foundation / DirectShow、.ogv は mrutheora と併用)。最初の再生時に自動で読み込む |
| mruvorbis.dll | OGG を使う作品 | ALC Software Laboratory | OGG(Vorbis)BGM/SE/Voice 再生 |
| mruopus.dll | Opus を使う作品 | ALC Software Laboratory | Opus 音声再生 |
| mrutheora.dll | OGV を使う作品 | ALC Software Laboratory | OGV(Theora)動画再生 |
| mruanime.dll | 部品アニメを使う作品 | ALC Software Laboratory | 部品を組み合わせた 2D アニメーション(独自形式) |
| mrumotion.dll | モーションを使う作品 | ALC Software Laboratory | メッシュ変形による 2D モーション(まばたき・口パク対応) |
| mrusteam.dll | Steam 連携を使う作品 | ALC Software Laboratory | Steamworks 連携(実績・統計・クラウドセーブ・オーバーレイ等)。同じフォルダに steam_api64.dll が必要。Steamworks SDK を入れずにビルドした場合は、すべての機能が失敗を返すスタブになる。既定の許可一覧に入っていて、Steam.* を最初に使うときに自動で読み込まれる(8.4) |
| systemInfo.dll | 任意 | ALC Software Laboratory | システム情報の表示(そのダイアログを開くときに読み込む) |
| LuminaDebugTools.dll | 開発中のみ | ALC Software Laboratory | 開発用の道具(8.5)。exe の隣に置く |
| AppCore.dll | — | — | エンジン非連携のサンプル(plugin\AppCore。光学ディスク保護の試作で、ビルドもされず、エンジンからも読まれない) |
8.2 Android / ブラウザでの扱い
| 機能 | Windows | Android | ブラウザ |
|---|---|---|---|
| OGG Vorbis | mruvorbis.dll | 本体に内蔵 | ブラウザの音声デコード |
| Opus | mruopus.dll | 本体に内蔵 | ブラウザの音声デコード |
| WAV | 標準(DLL 不要) | 再生できない | ブラウザの音声デコード |
| 動画 | lmmovie.dll(+ mrutheora.dll) | MediaCodec(mp4 / m4v / webm) | HTML の <video>(mp4 / m4v / webm) |
| 部品アニメ(mruanime) | mruanime.dll | 本体に内蔵 | 本体に内蔵 |
| モーション(mrumotion) | mrumotion.dll | 本体に内蔵 | 本体に内蔵 |
| Steam | mrusteam.dll + steam_api64.dll | — | — |
スクリプトは同じものがそのまま動きます。機能が使えるかは Steam.isInitialized() などで確かめて分岐できます。
8.3 機能別プラグイン
音声
| 拡張子 | 必要 DLL(Windows) | 備考 |
|---|---|---|
.wav | 不要 | 標準の音声再生。Android では再生できない |
.ogg | mruvorbis.dll | BGM クロスフェード、CuePoint 対応 |
.opus | mruopus.dll | ボイス向け(見本の既定拡張子) |
動画
| 拡張子 | 必要 DLL(Windows) |
|---|---|
.mp4, .mov, .wmv, .avi, .mpg | lmmovie.dll のみ |
.ogv | lmmovie.dll + mrutheora.dll |
グラフィックス
| 機能 | 必要 DLL(Windows) | シナリオコマンド例 |
|---|---|---|
| 部品アニメ(独自形式) | mruanime.dll | animeload, animecreate, animemotion |
| モーション | mrumotion.dll | motionload, motioncreate, motionmotion |
Scene3D(glTF / GLB の表示、3D アクション、物理演算)はエンジン本体の機能で、DLL は要りません。
8.4 プラグインの読み込み
Initialize.txt での設定(見本)
System.clearPluginDirectories();
System.addPluginDirectory(".");
System.addPluginDirectory("DLL");
// 許可一覧。ここに無い DLL は読み込まれない
System.setAllowedPlugins(["lmmovie.dll", "systemInfo.dll", "mrutheora.dll",
"mruvorbis.dll", "mruopus.dll", "mruanime.dll", "mrumotion.dll",
"LuminaDebugTools.dll", "mrusteam.dll"]);
// 読み込みは使う直前に自動(ここでは許可一覧だけを設定する)
System.loadPlugin("name.dll")で先に読み込んでおくこともできます(任意)- 許可一覧を空にすると制限なしになります。安全のため一覧は残してください
Steam 連携を使うとき
mrusteam.dll は既定の許可一覧に入っていて、Steam.* を最初に使うときにエンジンが自動で読み込みます(Windows)。次の手順で使えます。
mrusteam.dllとsteam_api64.dllをDLL\に置くSteam.init(appId)を呼ぶ
許可一覧(Initialize.txt の setAllowedPlugins)から mrusteam.dll を外すと読み込まれず、Steam の機能は動きません。先に読んでおきたいときは System.loadPlugin("mrusteam.dll") も使えます。
読み込みの記録
Debug 実行モードでは lumina_diag.log に [プラグイン] ○○.dll を使う直前に読み込み: N ms の行が残ります(失敗した場合はその旨も出ます)。Debug ビルドの exe は plugin_load.jsonl にも結果を書きます。
8.5 LuminaDebugTools(開発用)
Debug 実行モード(環境変数 LUMINA_RUNMODE=1、または開発中の印 data0/system/DevMode.txt がある GameData)で、タイトルが表示されたあと、または Shift+D でパネルを開いたときに読み込まれます。Release 実行モードでは読み込まれません。
提供機能(概要):
- デバッグパネル(Shift+D)とショートカット
- スクリプトのデバッガ、シナリオの指定位置へのジャンプ
- フラグ・バックログ・音声の状態の確認
- リソースとパフォーマンスの計測、ログの表示
- 読み込んだプラグインの確認、スクリプトの暗号化
8.6 配布時の DLL 同梱ガイド
| ゲームの機能 | 同梱する DLL(DLL\) |
|---|---|
| 動画なし・音声は WAV のみ | 不要(Android では WAV が鳴らないので、Android にも出すなら OGG / Opus にする) |
| OGG BGM/SE | + mruvorbis.dll |
| Opus ボイス | + mruopus.dll |
| 動画(mp4 など) | + lmmovie.dll |
| OGV ムービー | + lmmovie.dll + mrutheora.dll |
| 部品アニメのキャラ(mruanime) | + mruanime.dll |
| メッシュ変形モーションのキャラ(mrumotion) | + mrumotion.dll |
| システム情報の表示 | + systemInfo.dll |
| Steam | + mrusteam.dll + steam_api64.dll |
不要な DLL は同梱しないことで配布サイズを削減できます。LuminaDebugTools.dll は配布物から外してください。
8.7 ライセンス
エンジン・プラグイン・第三者ライブラリのライセンスは License.txt(exe と同じフォルダ)にまとめてあります。配布時は License.txt を同梱し、著作権表示を行ってください(build-win.ps1 の書き出しには自動で入らないので、手で置きます。第3章)。
- MRU プラグイン: ALC Software Laboratory
- Xiph.org Foundation(libvorbis, libtheora, libopus, opusfile)
Scene3D(glTF / GLB)はエンジン本体の描画機能であり、別 DLL ではありません。第三者ライブラリの一覧は 第12章 を参照してください。