08. タイトルと設定
シナリオ以外で制作者が触ることが多いのがタイトル画面と環境設定(コンフィグ)です。どちらもシステムスクリプト(// @lumina)で構成されています。
8.1 関連ファイル
どれも GameData\data0\system\ にあります。
| ファイル | 役割 |
|---|---|
title_enhanced.txt | タイトル画面のボタン・背景・BGM |
ConfigMenu.txt | 環境設定画面(6 タブ) |
Initialize.txt | 起動時の初期化と、各画面の読み込み |
PreInitialize.txt | ウィンドウを出す前の準備(RunMode・Localization・Menus を実行) |
RunMode.txt | 実行モード(Debug/Release)の決め方(02章) |
Config.txt | ウィンドウの題名と大きさ・フォルダ・拡張子・保存先 |
logo_enhanced.txt | ロゴ演出。終わるとタイトルへ進みます |
Localization.txt | 多言語の設定(文言の表は data0\lang) |
MesWnd.txt | メッセージ枠とボタン |
MenuBar.txt | 画面上部のメニュー |
SaveMenu.txt / LoadMenu.txt | セーブ画面・ロード画面(10章) |
Backlog.txt | バックログ |
Flowchart.txt | フローチャート |
SoundInit.txt | キャラごとのボイス ID と立ち絵フォルダの表、音量の復元 |
EventCgSetup.txt | イベント CG のフォルダとベースの絵の表 |
8.2 タイトル画面の流れ
images/08_title_buttons.png
タイトル画面とボタン配置
images/08_title_buttons.png8.3 スタートボタンとシナリオ接続
title_enhanced.txt の RegisterButtonActions() で、各ボタンの動作を登録しています。
本編を差し替えるとき、変えるのは System.loadScenario の 1 行だけです(228 行目付近)。
// 変更前
"System.loadScenario(\"scenario/feature_demo\");\n" +
// 変更後
"System.loadScenario(\"scenario/my_first\");\n" +
この行は、ボタンの動作を書いた文字列の一部です。\" や \n は残して、シナリオ名の部分だけを書き換えます(03章参照)。
| 登録 ID | 主な動作 |
|---|---|
title.start | はじめから。変数を空にしてから loadScenario で本編を始めます |
title.continue | つづきから。ロード画面を開きます |
title.lastcont | 前回の続きから。記録が無いときは押せません |
title.gallery | ギャラリー。setclearflag game_cleared 1 の後だけ表示されます |
title.config | 環境設定(ConfigMenu) |
title.quit | 終了。ブラウザではタブを閉じられないため表示されません |
images/08_load_flow.png
images/08_load_flow.png8.4 環境設定(コンフィグ)画面
タイトル、メッセージ枠、上部メニューから ConfigMenu が開きます。6 タブ構成です。
| タブ | 内容(例) |
|---|---|
| 画面 | ウィンドウの大きさ・4:3・フルスクリーン |
| テキスト | 文字の速さ・オートの待ち時間・フォント |
| 音量 | 全体・BGM・効果音・ボイス・動画・システム音 |
| キャラ音声 | キャラごとの音量とミュート |
| ダイアログ | 確認ダイアログを出すかどうか |
| マウス | マウスジェスチャーの割り当て |
- 画面の下の帯に、言語の切り替え(言語が 2 つ以上あるとき)と、「タイトルへ戻る」「ゲームを終了」「設定の初期化」「戻る」のボタンがあります。
- 「タイトルへ戻る」は、タイトルから開いたときは押せません。
- 確認ダイアログの「次回から確認しない」は、どの環境でも十字キー(矢印キー)で選び、A(Enter)で入り切りできます(ダイアログは閉じません)。
images/08_config_screen.png
環境設定(6 タブ)のいずれかのタブ
images/08_config_screen.pngコンフィグの開き方(タイトル側):
Title.register("title.config",
"System.setVarInt(\"title.keepBgm\", 1);\n" +
"Title.setFade(300, 0);\n" +
"Title.beginCoverTransition();\n" +
"Scripts.execStorage(\"system/ConfigMenu\");\n" +
"Scripts.execStorage(\"system/title_enhanced\");"
);
設定の値は systemdata.dat に保存されます。System.setVarInt の値のうち保存されるのは、config. で始まる名前だけです。
8.5 シナリオ制作者が知っておくこと
- 本編の入口は
title.startのloadScenarioです - テキスト速度などの設定は、ConfigMenu の中で
System.messageWindow.setTextSpeedなどと連動しています - シナリオは
endに来るか最後の行まで進むと、自動でタイトルへ戻ります(システム側から戻すときはSystem.returnToTitle()) - タイトル/コンフィグの見た目は、
data1\title・data1\config・data1\meswndなどの画像と、システムスクリプトのレイアウトで決まります - ウィンドウの題名と大きさは、
Config.txtのsetupWindow()(Window.setTitle・Window.setSize)で決めます
8.6 プラットフォーム別の見方
| 項目 | Windows | Android | ブラウザ |
|---|---|---|---|
| タイトルの基本接続 | 共通 | 共通 | 共通 |
loadScenario で本編開始 | 共通 | 共通 | 共通 |
| メニューバー(ファイル・画面・フォント・ヘルプ) | 利用可(窓の上のメニュー) | 利用可(電話の「戻る」で一覧が出る。確認・設定の画面やバックログでは、その画面の「戻る」。窓の大きさ・全画面の切り替えなど、Android でできない項目は出ない) | 利用可(ページの上の端へマウスを寄せると出る。指で触る端末は 2 本指で軽く叩くと出し入れできる。Alt キーだけを押して離しても出し入れできる。上部メニューを使う場面は Alt キーで出す。確認・設定の画面、文字入力、バックログの間は選べない。「手前に置く」「終了」など、ブラウザでできない項目は出ない) |
| タイトルの「終了」 | あり | あり | なし |
| 確認ダイアログ(画像式) | 利用可 | 利用可 | 利用可 |
| OS 標準のメッセージボックス | 利用可 | なし | なし |
| ゲームパッド(A=決定、B / START=取り消し、十字キー=移動、LB=バックログ、RB 押し続け=スキップ) | 利用可(窓が前面のとき) | 利用可(キーボードのキーも可) | 利用可(Gamepad API) |
| 画面キャプチャー | PNG で保存 | PNG で保存 | PNG をダウンロード |
| メニューの「バージョン情報」「ライセンス」「システム情報」 | 別の窓で出る | 画面の上に出る(指でなぞって送る。「戻る」で閉じる) | 画面の上に出る(ホイールで送る。Esc・OK で閉じる) |
画面右上の短い知らせ(System.notify) | 共通。2.5〜7 秒で消え、続けて出すと順に出る。ゲームは止まらない | ||
| 大きな画面での文字 | 共通。メッセージ欄・NVL の文字は画面の大きさに合わせて細かく描く。選択肢・バックログの文字は 1280×720 で描いた絵を拡大する | ||
制作者の立場では、タイトル接続やシナリオ遷移は共通として考え、UI の細部や補助機能はプラットフォーム差がある前提で確認するのが安全です。
8.7 編集後の注意
Windows では、システムスクリプトの .txt と .lsf のうち新しいほうが読まれます。title_enhanced.txt や ConfigMenu.txt は、保存してゲームを再起動すれば反映されます。
配布前に、作品のパスワードで .lsf を作り直してください(Config.txt だけは --default-key。02章)。
8.8 プロジェクト完成チェックリスト
入門マニュアルを一通り終えたあと、自作プロジェクトが動くか次の表で確認してください(画像キャプチャ以外)。
| 項目 | 確認内容 | 参照 |
|---|---|---|
| シナリオ作成 | GameData\data0\scenario\ に本編の .txt がある | 03章 |
| 暗号化 | 配布前に .lsf を作った(Config.txt は --default-key) | 02章 |
| タイトル接続 | title.start が loadScenario("scenario/…") を指す | 8.3節 |
| 素材 | 背景・立ち絵・BGM のファイル名がシナリオと一致 | 02章 |
| 分岐 | choice のラベルと *ラベル が一致、変数初期化済み | 06章 |
| マクロ | 自作マクロを使う場合、macro\ に定義がある | 07章 |
| 設定画面 | タイトルからコンフィグが開き、閉じて戻れる | 8.4節 |
| 実行先 | 起動した exe の隣の GameData を直した(Release/Debug は別)。Android/ブラウザはパックし直した | 02章 |
8.9 よくあるトラブル(まとめ)
| 症状 | まず確認すること |
|---|---|
| 変更が反映されない | 起動した exe の隣の GameData を直したか、再起動したか。マクロは同じ名前の .lsf が優先、Debug はシナリオも .lsf を先に読みます |
| タイトルから進まない | loadScenario のパスと、lumina_debug.log の「ファイルが見つかりません」 |
| 文字化け | シナリオ .txt が UTF-8 で保存されているか |
| 選択肢で止まる | choice のラベル名とジャンプ先の一致(* は有無どちらでも可) |
| 背景だけ真っ黒 | リソース名の打ち間違い、data2 に .lgc のファイルがあるか |
| Windows では動くが他で崩れる | Windows だけの機能(OS 標準のメッセージボックス、Android には無いメニューバー、trans_begin → trans の演出、サスペンドからの再開)に頼っていないか。.lsf を作り、パックし直したか |