第1章 LUMINA とは

本章はエンジンの紹介と「何ができるか」の概観です。シナリオの書き方・最初の1シーンの作り方は 制作者向け入門マニュアル を参照してください。

1.1 概要

LUMINA(Logical Unified Multimedia INteractive Architecture)は、ADV / ノベルゲーム向けマルチメディアゲームエンジンです。テキスト・立ち絵・背景・音声・選択肢といった紙芝居的な作品を、シナリオスクリプトで組み立てます。現在 Windows / Steam / Android / ブラウザで起動できます。Linux / iOS / PlayStation系 / Switch系は開発中です。

図1-1: LUMINA 展開概要
キャプチャ差し替え images/01_overview.png

図1-1: LUMINA 展開概要

図1-1: LUMINA 展開概要 — 差し替え: images/01_overview.png

1.2 エンジンでできること

カテゴリできること
本編演出背景・立ち絵・イベント CG、台詞、選択肢(時間制限付きも可)、フェード、カメラ、エフェクト、ルール画像による場面切り替え、画像を使わない図形の演出(手続き生成エフェクト)
音声・動画BGM / SE / ボイス、ムービー再生(形式・プラグインはプラットフォーム差あり)
UI・進行タイトル、設定、メッセージウィンドウ、バックログ、メニュー、フローチャート、画面キャプチャー(PNG)、ゲームパッド操作
進行管理フラグ・変数、セーブ/ロード、既読、クイックセーブ、オートセーブ、「前回の続きから」
拡張表現部品アニメ(mruanime)、メッシュ変形モーション(mrumotion)、パーティクル
3DglTF / 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 系の制作を主な用途としています。

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 等)
LAFLUMINA Pack 形式のアーカイブ(.laf)。dataN フォルダごとに 1 つ
LSF暗号化スクリプト(GSCRYPT1)
LGCLUMINA の画像形式(.lgc)。配布物の画像はこの形式にする
実行モードDebug / Release。system/RunMode.txt が起動時に決める(第3章)
配布用の書き出しbuild-win.ps1 が作る build\win\bin\master\Release。ブラウザ/Android のパックもここから作る
MRUALC Software Laboratory 製の音声・動画・アニメーション用プラグイン群(mruvorbis 等)