第8章 プラグイン

Windows 版のプラグイン(DLL)の一覧と、Android / ブラウザでの扱いです。シナリオ作成の手順は 制作者向け入門 を参照してください。

図8-1: プラグイン概要
キャプチャ差し替え images/08_plugins.png

図8-1: プラグイン概要

図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.dllOGG を使う作品ALC Software LaboratoryOGG(Vorbis)BGM/SE/Voice 再生
mruopus.dllOpus を使う作品ALC Software LaboratoryOpus 音声再生
mrutheora.dllOGV を使う作品ALC Software LaboratoryOGV(Theora)動画再生
mruanime.dll部品アニメを使う作品ALC Software Laboratory部品を組み合わせた 2D アニメーション(独自形式)
mrumotion.dllモーションを使う作品ALC Software Laboratoryメッシュ変形による 2D モーション(まばたき・口パク対応)
mrusteam.dllSteam 連携を使う作品ALC Software LaboratorySteamworks 連携(実績・統計・クラウドセーブ・オーバーレイ等)。同じフォルダに 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 / ブラウザでの扱い

機能WindowsAndroidブラウザ
OGG Vorbismruvorbis.dll本体に内蔵ブラウザの音声デコード
Opusmruopus.dll本体に内蔵ブラウザの音声デコード
WAV標準(DLL 不要)再生できないブラウザの音声デコード
動画lmmovie.dll(+ mrutheora.dll)MediaCodec(mp4 / m4v / webm)HTML の <video>(mp4 / m4v / webm)
部品アニメ(mruanime)mruanime.dll本体に内蔵本体に内蔵
モーション(mrumotion)mrumotion.dll本体に内蔵本体に内蔵
Steammrusteam.dll + steam_api64.dll——

スクリプトは同じものがそのまま動きます。機能が使えるかは Steam.isInitialized() などで確かめて分岐できます。

8.3 機能別プラグイン

音声

拡張子必要 DLL(Windows)備考
.wav不要標準の音声再生。Android では再生できない
.oggmruvorbis.dllBGM クロスフェード、CuePoint 対応
.opusmruopus.dllボイス向け(見本の既定拡張子)

動画

拡張子必要 DLL(Windows)
.mp4, .mov, .wmv, .avi, .mpglmmovie.dll のみ
.ogvlmmovie.dll + mrutheora.dll

グラフィックス

機能必要 DLL(Windows)シナリオコマンド例
部品アニメ(独自形式)mruanime.dllanimeload, animecreate, animemotion
モーションmrumotion.dllmotionload, 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"]);
// 読み込みは使う直前に自動(ここでは許可一覧だけを設定する)

Steam 連携を使うとき

mrusteam.dll は既定の許可一覧に入っていて、Steam.* を最初に使うときにエンジンが自動で読み込みます(Windows)。次の手順で使えます。

  1. mrusteam.dll と steam_api64.dll を DLL\ に置く
  2. 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 実行モードでは読み込まれません。

提供機能(概要):

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章)。

Scene3D(glTF / GLB)はエンジン本体の描画機能であり、別 DLL ではありません。第三者ライブラリの一覧は 第12章 を参照してください。