第5章 データとスクリプト
本章は、エンジンから見たデータ配置とスクリプトの役割の概要です。
「最初のシナリオを書く」「フォルダのどこを編集するか」など作成手順は 制作者向け入門マニュアル を参照してください。
キャプチャ差し替え
images/05_usage.png
図5-1: プロジェクト構成(開発用)
images/05_usage.png5.1 編集するデータ
- 編集元:
build\win\bin\Release\GameData\data0〜data8(エンジン一式を受け取った場合はlumina.exeの隣のGameData) - 書き出し先(
build\win\bin\master\Release\GameData・build\web\bin\GameData・lumina\app\android\apk\assets)は直接編集しない。ビルドのたびに作り直される - Windows / ブラウザ / Android は同じ編集データを共有し、出力だけが分かれる
見本の Config.txt(System.setDataRoot("GameData") と System.setFolder)での構成です。
GameData/
├── data0/ ← スクリプトと書体
│ ├── system/ システムスクリプト(Config・Initialize・title_enhanced ほか)
│ ├── scenario/ シナリオ
│ ├── macro/ マクロ定義
│ ├── sim/ 育成・恋愛シミュレーションの設定ファイル
│ ├── lang/ 文言表(ja.txt・en.txt)と言語別の上書きフォルダ(en/ など)
│ ├── particle/ パーティクル定義
│ ├── font/ 組み込み書体
│ └── startup.txt 起動の入口
├── data1/ ← UI 画像(title・config・dialog・meswnd・saveload・sim など)
├── data2/ ← 背景
├── data3/ ← イベント CG(CG ごとのフォルダ。例 cg01/base・cg01/smile)
├── data4/ ← 立ち絵(stand)・スプライト(sprite)・mrumotion(motion)
├── data5/ ← BGM(sound)・効果音(se)・システム効果音(sysse)・システム音声(sysvoice)
├── data6/ ← ボイス
├── data7/ ← ルール画像(rule。場面切り替え用の白黒の絵)
└── data8/ ← 動画(op・ed・logo など)と 3D モデル(model)、部品アニメ(見本は anime)
作成手順の詳細: 制作者入門 02. 環境とフォルダ
5.2 スクリプトの種類(エンジン視点)
| 種類 | ファイル例 | 記法 | 役割 |
|---|---|---|---|
| システムスクリプト | Config.txt, Initialize.txt, title_enhanced.txt | LUMINA Script。先頭に // @lumina(旧表記 // @tjs も可)+ function | 起動・UI・設定・プラグインの許可 |
| シナリオスクリプト | scenario/*.txt | 行コマンド + タブ始まりメッセージ | 本編・イベント |
| マクロ | macro/*.txt | [macro name="名前"] 〜 [end_macro] の間にシナリオ命令を書く。引数は %0, %1 …(0 から) | 名前で呼べる命令列。data0/macro のファイルはエンジンが読み込む |
| シミュレーションの設定 | sim/love_sample.txt | [見出し] の下に 名前 = 値 | 暦・能力・予定・登場人物・行事・結末。シナリオから sim_load sim/love_sample で読む(第10章) |
| 文言表 | lang/ja.txt, lang/en.txt | 鍵=文言 | 画面に出す文言の多言語化(5.5) |
システムスクリプト・シナリオ・マクロ・シミュレーションの設定は、ScriptEncryptor で .lsf に暗号化して配布できます。
書き方の入門: 制作者入門 01 / 完全一覧: 第9章・第10章
5.3 主なシステム API(概要)
| オブジェクト | 主な用途 |
|---|---|
System.* | プラグイン、セーブ、変数、INI、フォルダ設定、シナリオ読込 |
Window.* | ウィンドウサイズ、FPS、フルスクリーン |
Title.* | タイトル画面などのボタン・背景 |
Scenario.* | シナリオのロード・再生 |
Storages.* | リソース検索パス、言語別の上書きフォルダ |
Menu.* / MenuBar.* | メニューバー構築 |
Movie.* / Sound.* | 動画・音声制御 |
MessageWindow.* | メッセージウィンドウ設定 |
SaveSlot.* / QuickResume.* / Suspend.* | セーブスロット、前回の続きから、中断 |
Text.* | 文言表(多言語) |
Scene3D.* | 3D の場面・3D アクション |
本編の読込は System.loadScenario または Scenario.load を使います(System.playScenario は存在しません)。
5.4 アセットの配置(仕様概要)
フォルダは Config.txt の System.setFolder(キー, フォルダ) で決めます。下の「見本のフォルダ」は同梱の Config.txt の値です。
| カテゴリ | 設定キー | 見本のフォルダ | 推奨形式 |
|---|---|---|---|
| スクリプト | script | data0(system / scenario / macro / lang) | txt(配布時は lsf) |
| UI 画像 | ui | data1 | LGC |
| 背景 | bgImage | data2 | LGC |
| イベントCG | eventCg | data3 | LGC |
| 立ち絵 | stand | data4/stand | LGC |
| スプライト | sprite | data4/sprite | LGC |
| BGM | bgm | data5/sound | OGG(Vorbis) |
| SE | se | data5/se | OGG(Android は WAV を再生できない) |
| システム効果音 | sysse | data5/sysse | OGG |
| システム音声 | sysvoice | data5/sysvoice | OGG |
| ボイス | voice | data6 | Opus(見本の既定拡張子) |
| ルール画像 | rule | data7/rule | LGC |
| 動画 | movie | data8 | Windows は OGV、ブラウザ/Android 用に同じ名前の mp4(または webm)を並べる |
| フォント | font | data0(data0/font を見る) | TTF / OTF |
プラグインと 3D の素材は次の場所に置きます。ここだけは PNG のまま配布物に入ります(素材の JSON がファイル名を拡張子込みで指すため)。
| 素材 | 置き場所 | 内容 |
|---|---|---|
| メッシュ変形モーション(mrumotion) | data4/motion | .motion.json と部品の PNG(MotionEditor で作る) |
| 3D モデル | data8/model | glTF / GLB とテクスチャ |
| 部品アニメ(mruanime) | data8 の下(見本は data8/anime) | .anm.json と部品の絵 |
配布物の画像は .lgc にする: 見本の既定の画像拡張子は
lgc(System.setExtension("image", "lgc"))です。build-win.ps1 の書き出しは、上の表の素材置き場(data4/motion・data8)を除き、PNG / JPG / BMP / PSD を外します。LuminaImageCompressor で .lgc に変換してください。詳細仕様は 第6章、ツールは 第7章 を参照。
5.5 多言語の素材
文言と、絵・声・シナリオとで切り替え方が分かれます。言語の一覧は system/Localization.txt の LANG_TABLE にあり、言語を足すときはここに 1 行足して文言表を置きます。
| 対象 | しくみ |
|---|---|
| 画面の文言 | 文言表 data0/lang/<ID>.txt(鍵=文言)。スクリプトでは Text.get("鍵", "元の文言") と書く。表に無い鍵は第 2 引数の元の文言がそのまま出る |
| 絵・声・シナリオ | 原語以外を選ぶと data0/lang/<ID>/ が上書きフォルダになり、素材を探すときに最初にそこを 1 か所だけ見る。置き方はスクリプトに書く名前から先頭の dataN/ を外した形(例: 絵 dialog/yes → data0/lang/en/dialog/yes.png、シナリオ scenario/ch01 → data0/lang/en/scenario/ch01.txt)。訳す物だけ置けばよい |
| システムスクリプト | 差し替わらない(画面の組み立ては言語で分けない) |
- 訳したシナリオは、命令の並び(行)を原文とそろえる。セーブは「シナリオの名前+位置」を持つため、並びが違うと別の言語で読み直したときに違う場所から始まる
- 選んだ言語は環境設定の値
config.language(LANG_TABLEの何番目か)として保存される。LANG_TABLEの並びは変えず、言語は末尾に足す - 確認用に、環境変数
LUMINA_LANG_TEST(例en)で言語を指定して起動できる(ブラウザは?LUMINA_LANG_TEST=en、Android はlaunch.txt) - 訳したシナリオは暗号化(
.lsf)しておく。.lsfの対が無い.txtは書き出しで外れず、平文のまま配布物に入る
API の詳細は 第9章(Text オブジェクトと上書きフォルダ)を参照してください。
5.6 配布に向けた変換(概要)
| 工程 | 内容 | 参照 |
|---|---|---|
| 画像変換 | LuminaImageCompressor で PNG / JPG / BMP → .lgc | 第7章 |
| スクリプト暗号化 | ScriptEncryptor で .txt → .lsf | 第7章 |
| パック | build-pack-data.ps1(書き出しの dataN → dataN.laf)、build-pack-run.ps1(パックした Windows 版の確認用)、luminapack(コマンドライン)、PackTool(GUI) | 第6章・第3章 |
| ブラウザ/Android | build-web.bat / build-android.bat / build-android-aab.ps1 | 第3章 |
5.7 作成作業は制作者入門へ
| やりたいこと | 参照先 |
|---|---|
| フォルダを把握する | 入門 02 |
| 最初の1シーンを書く | 入門 03 |
| よく使う命令を覚える | 入門 04・09 |
| フラグと分岐 | 入門 06 |
| マクロ | 入門 07 |
| タイトルと設定 | 入門 08 |
| 命令ダイジェスト | 入門 09 |
| セーブとロード | 入門 10 |
| 命令の全件を調べる | 本冊 第10章・第9章 |