第2章 構成の考え方

図2-1: アーキテクチャ俯瞰
キャプチャ差し替え images/02_architecture.png

図2-1: アーキテクチャ俯瞰

図2-1: アーキテクチャ俯瞰 — 差し替え: images/02_architecture.png

本章は「ゲームデータとスクリプトがどうつながるか」を説明します。内部実装の詳細は扱いません。シナリオの書き方は 制作者向け入門、プラットフォーム差は「仕様(6章)」や「運用(3章)」も合わせて参照してください。

2.1 全体構成

レイヤ内容役割
実行本体lumina.exe / lumina.html / lumina.apk / lumina.aabゲームを起動し、入力・描画・音声を処理。Play 向け AAB は Play Asset Delivery でゲームデータを配信
システムスクリプトdata0/system/*.txt(暗号化すると .lsf)と起動の入口 data0/startup.txt起動処理、タイトル、設定画面、プラグインの許可
シナリオスクリプトdata0/scenario/*.txt(暗号化すると .lsf)本編のコマンド・メッセージ・分岐
ゲームデータdata0〜data8 のフォルダ / dataN.laf画像・音声・動画・マクロ・文言表などの素材
プラグインWindows は exe の隣の DLL\ にある DLL。ブラウザ/Android は本体に内蔵OGG / Opus 再生、動画、部品アニメ、メッシュ変形モーション等

2.2 起動時に動くもの

起動からタイトル表示まで、おおむね次の順で処理されます(起動ダイアログとウィンドウの作成は Windows のみ)。


起動
  → exe のフォルダと 1 階層下(GameData など)の *.laf をマウント
  → system/Config を先に 1 回実行
      (保存先・データルート・INI 方針・拡張子・フォルダを確定。setDataRoot 先の *.laf も追加)
  → systemdata.dat を読む(INI を有効にしたときだけ config.ini も)
  → 起動ダイアログ(setStartupDialog(true) のとき)
  → ウィンドウ作成(非表示)→ PreInitialize.txt(RunMode → Localization → Menus → SystemMenu)
  → ウィンドウ表示 → data0/startup.txt → Initialize.txt
      (Confirm → Config → 検索パス → 多言語 → MesWnd ほか)
  → logo_enhanced → title_enhanced
  → タイトルから System.loadScenario(または Scenario.load)で本編へ

スクリプト実行順序

  1. system/Config.txt — エンジンが起動直後に先行して 1 回実行する。保存先・データルート・INI の有無・拡張子・フォルダを決める
  2. system/PreInitialize.txt — ウィンドウを出す前に実行。system/RunMode.txt(実行モードの決定)→ system/Localization.txt(言語)→ メニューバーとシステムメニューの組み立て
  3. data0/startup.txt — 起動の入口。system/Initialize を呼ぶだけ
  4. system/Initialize.txt — プラグインの許可一覧、Config の再実行(本番の設定)、検索パス、多言語、メッセージウィンドウ・メニューバー・選択肢・バックログ・音量などの初期化、最後にロゴ → タイトル

実行モード(Debug / Release)の決め方は system/RunMode.txt の 1 か所にまとめてあります(第3章 3.5)。

編集元: build\win\bin\Release\GameData\data0。書き出し先の build\win\bin\master\Release は build-win.ps1 を実行するたびに作り直されるので、直接編集しないでください(clean の注意も参照)。

2.3 1フレームの処理(概要)

2.4 プラグインの読み込み

Initialize.txt で許可一覧と検索フォルダを設定しておけば、エンジンが各機能を最初に使う直前に DLL を自動で読み込みます(Windows)。System.loadPlugin で先に読んでおくこともできます。

Android / ブラウザでは DLL を使いません。部品アニメ(mruanime)とメッシュ変形モーション(mrumotion)は本体に内蔵です。音声は Android が OGG Vorbis / Opus の復号を本体に内蔵、ブラウザはブラウザの音声機能を使います。動画はブラウザが HTML の <video>、Android が MediaCodec です。詳細は 第8章 を参照してください。

2.5 素材の参照方法