第1章 LUMINA とは
本章はエンジンの紹介と「何ができるか」の概観です。シナリオの書き方・最初の1シーンの作り方は 制作者向け入門マニュアル を参照してください。
1.1 概要
LUMINA(Logical Unified Multimedia INteractive Architecture)は、ADV / ノベルゲーム向けマルチメディアゲームエンジンです。テキスト・立ち絵・背景・音声・選択肢といった紙芝居的な作品を、シナリオスクリプトで組み立てます。現在 Windows / Steam / Android / ブラウザで起動できます。Linux / iOS / PlayStation系 / Switch系は開発中です。
- 実行本体: Windows
lumina.exe/ ブラウザlumina.html(wasm)/ Androidlumina.apk(Google Play 向けはlumina.aab) - 制作データ:
build\win\bin\Release\GameData\data0〜data8を編集し、build-win.ps1で配布用に書き出す(エンジン一式を受け取った場合はlumina.exeの隣のGameDataを編集する) - スクリプト: システムスクリプト(UI・起動。主に LUMINA Script で書く)とシナリオスクリプト(本編コマンド)
- 配布形式: Windows はフォルダのまま/
.lafパックのどちらでも配れる。ブラウザ/Android は.laf - 互換性: 完全互換ではなく、Windows で使える機能の一部は Android / ブラウザで制限されます
キャプチャ差し替え
images/01_overview.png
図1-1: LUMINA 展開概要
images/01_overview.png1.2 エンジンでできること
| カテゴリ | できること |
|---|---|
| 本編演出 | 背景・立ち絵・イベント CG、台詞、選択肢(時間制限付きも可)、フェード、カメラ、エフェクト、ルール画像による場面切り替え、画像を使わない図形の演出(手続き生成エフェクト) |
| 音声・動画 | BGM / SE / ボイス、ムービー再生(形式・プラグインはプラットフォーム差あり) |
| UI・進行 | タイトル、設定、メッセージウィンドウ、バックログ、メニュー、フローチャート、画面キャプチャー(PNG)、ゲームパッド操作 |
| 進行管理 | フラグ・変数、セーブ/ロード、既読、クイックセーブ、オートセーブ、「前回の続きから」 |
| 拡張表現 | 部品アニメ(mruanime)、メッシュ変形モーション(mrumotion)、パーティクル |
| 3D | glTF / GLB モデルの表示(Scene3D)、3D アクション(歩く・撃つ・拾う・調べる)、地形、物理演算(剛体・拘束・ラグドール) |
| 育成・恋愛シミュレーション | 週ごとの予定・能力値・登場人物・デート・行事・結末を、設定ファイル 1 つとシナリオで組み立てる(sim_ で始まる命令。第10章) |
| 多言語 | 文言表(data0/lang/<ID>.txt)と言語別の上書きフォルダ(絵・声・シナリオ)、実行中の言語切り替え |
| 配布 | .laf パック、スクリプト暗号化(.lsf)、Windows / ブラウザ / Android 向け展開、Google Play 向け AAB、配布フォルダ作成(ReleaseBuilder)、インストーラー作成(SetupBuilder) |
1.3 主な特徴
| 機能 | 説明 |
|---|---|
| シナリオスクリプト | 行頭コマンド形式(bg, message, select 等)で本編を記述 |
| システムスクリプト | System.* / Title.* 等の API で UI・設定・起動処理を記述(LUMINA Script) |
| 高品質スケーリング | Lanczos / Cubic / SharpLinear 等のフィルタ |
| 仮想フルスクリーン | ウィンドウモードとフルスクリーン風表示の切替 |
| パック配布 | .laf(Zstd 圧縮。パスワードを指定したときだけ AES-256-GCM で暗号化)で dataN フォルダごとに 1 ファイルにまとめる |
| セーブシステム | systemdata.dat に設定・既読・システムフラグ等を永続化 |
| プラグイン拡張 | 音声・動画・アニメ等の機能を追加(Windows は DLL。ブラウザ/Android は同じ機能を本体に内蔵) |
| 暗号化スクリプト | .lsf 形式(ScriptEncryptor で生成) |
1.4 エンジンと周辺の関係
┌──────────────────────────────────────────────────────┐
│ 実行本体(Windows / ブラウザ / Android) │
├────────────────────┬─────────────────────────────────┤
│ システムスクリプト │ シナリオスクリプト │
│ (UI・設定・起動) │ (本編・コマンド・メッセージ) │
├────────────────────┴─────────────────────────────────┤
│ ゲームデータ(data0〜data8 / .laf パック) │
│ + プラグイン(Windows の DLL。他は本体に内蔵) │
└──────────────────────────────────────────────────────┘
1.5 想定されるゲームタイプ
- ノベル / ADV(メッセージウィンドウ、選択肢、バックログ)
- ギャルゲー(立ち絵、イベント CG、ボイス、BGM)
- 育成・恋愛シミュレーション(週ごとの予定選択、能力値、好感度)
- 3D の場面(探索・アクション)を含む作品
- タイトル画面・設定画面付きマルチプラットフォーム向けゲーム
ノベル / ADV 系の制作を主な用途としています。
1.6 データディレクトリ構成(典型例)
以下は Windows 版の配布物の例です(見本の Config.txt の設定の場合)。ブラウザ版は GameData/*.laf、Android 版は APK 内アセット、または Google Play 向け AAB のアセットパック(Play Asset Delivery)に同梱されます。
ゲームフォルダ/
├── lumina.exe / lumina.ico / License.txt
├── Visual C++ 実行時ライブラリ 10 本(vcruntime140.dll・msvcp140.dll など)
├── DLL/ ← プラグイン(使う機能の分だけ)
│ ├── lmmovie.dll・mrutheora.dll (動画)
│ ├── mruvorbis.dll・mruopus.dll (OGG Vorbis/Opus 音声)
│ ├── mruanime.dll・mrumotion.dll (部品アニメ/メッシュ変形モーション)
│ └── systemInfo.dll (システム情報)
├── GameData/ ← data0〜data8 のフォルダ、または data0.laf〜
│ (動画の data8 は素のフォルダか、無圧縮のパック)
└── SaveData/ ← セーブと systemdata.dat(実行後に作られる。
書き込めない場所では %APPDATA% 側に作られる)
開発中は build\win\bin\Release\GameData のフォルダを直接読みます。配布時はそのまま配っても、.laf にパックしても構いません(ブラウザ/Android は .laf)。config.ini は既定では使わず、作られもしません。手順は 第3章 を参照してください。
1.7 用語集
| 用語 | 意味 |
|---|---|
| システムスクリプト | 起動・UI・設定を書くスクリプト。Initialize.txt, Config.txt 等。主に LUMINA Script(先頭に // @lumina。旧表記 // @tjs も可)で書く |
| シナリオスクリプト | 行コマンド + タブ始まりメッセージ。本編シナリオ |
| LUMINA Script | 関数・変数・オブジェクトを使えるシステムスクリプトの書き方。1 行 1 命令の簡単な書き方は SimpleScript |
| OrigScript | レガシー互換の最小 API(PlayMovie 等) |
| LAF | LUMINA Pack 形式のアーカイブ(.laf)。dataN フォルダごとに 1 つ |
| LSF | 暗号化スクリプト(GSCRYPT1) |
| LGC | LUMINA の画像形式(.lgc)。配布物の画像はこの形式にする |
| 実行モード | Debug / Release。system/RunMode.txt が起動時に決める(第3章) |
| 配布用の書き出し | build-win.ps1 が作る build\win\bin\master\Release。ブラウザ/Android のパックもここから作る |
| MRU | ALC Software Laboratory 製の音声・動画・アニメーション用プラグイン群(mruvorbis 等) |