03. 最初のシナリオ

最短で「背景・立ち絵・台詞・選択肢」まで通します。

手順概要

  1. lumina.exe の隣の GameData\data0\scenario\ に、my_first.txt を新しく作ります(開発環境では build\win\bin\Release\GameData\data0\scenario\)。
  2. 下のサンプルを貼り、UTF-8 で保存します。
  3. タイトルの「はじめから」で開くように、title_enhanced.txt の 1 行を書き換えます(下の「タイトルから開く」)。
  4. lumina.exe を起動し、クリックで進むことを確かめます。
すぐ試したいとき(Windows)
タイトルを書き換えなくても、lumina.exe --start-scenario=scenario/my_first で起動すると、ロゴとタイトルを飛ばして my_first から始まります。

サンプルが動くための最小素材

サンプルは、エンジンに入っている次の素材を使います。

命令参照するリソース置き場所
bg 0 bg01a背景 bg01adata2\bg01a.lgc
chara_show 0 smile center 30 sync立ち絵 smile(層 0)data4\stand\ch01\smile.lgc
chara_change 0 trouble 15立ち絵 troubledata4\stand\ch01\trouble.lgc

立ち絵は、フォルダを書かずに表情の名前だけで見つかります。キャラのフォルダ(ch01 など)が system\SoundInit.txt の表に登録してあるためです。
自分の素材に替えるときは、まず feature_demo が動くか試すと、素材名の参考になります。

サンプル:最短の1シーン

my_first.txt を編集
キャプチャ差し替え images/03_editor_my_first.png

エディタで my_first.txt を開いている画面

図3-1: シナリオ編集 — 差し替え: images/03_editor_my_first.png

文章の行は、行頭にタブを 1 つ入れます。

// my_first.txt — はじめてのシナリオ

*start

msgshow
bg 0 bg01a

name "ナレーション"
	物語が始まります。

chara_show 0 smile center 30 sync

name "ヒロイン"
	こんにちは。LUMINA のシナリオへようこそ。

name ""
choice "話す" *talk "黙る" *silent

*talk
chara_change 0 trouble 15
name "ヒロイン"
	ありがとうございます。では続きをどうぞ。
jump *ending

*silent
name "ナレーション"
	……静かな時間が流れた。
jump *ending

*ending
chara_hide 0 30 sync
name ""
	おしまいです。
fadeout 1000
end
ゲーム内メッセージ表示
キャプチャ差し替え images/03_game_message.png

ゲーム実行中・メッセージと立ち絵が表示された画面

図3-2: 実行画面(メッセージ) — 差し替え: images/03_game_message.png
選択肢表示
キャプチャ差し替え images/03_game_choice.png

choice 命令で選択肢が出ている画面

図3-3: 実行画面(選択肢) — 差し替え: images/03_game_choice.png

何をしているか(行の意味)

行意味
// …コメント(実行されません)
*startラベル(ここから開始/ジャンプ先)
msgshowメッセージウィンドウを出す
bg 0 bg01a層 0 に背景 bg01a を出す
name "…"話者名(name "" で地の文に戻す)
行頭タブの行文章を表示して、クリックを待つ
chara_show 0 smile center 30 sync層 0 に立ち絵 smile を中央へ。30 フレーム(0.5 秒)でフェードインし、終わるまで待つ
choice …選択肢(選んだ側のラベルへ飛ぶ)
chara_change 0 trouble 15層 0 の表情を trouble に替える
jump *ending同じファイルのラベル *ending へ飛ぶ
chara_hide 0 30 sync層 0 の立ち絵を 30 フレームで消す
fadeout 1000 / end1 秒で暗転して終わり、タイトルへ戻る

メッセージの書き方

推奨: 行頭タブ

	こんにちは。

タイトルから開く(具体手順)

スタートボタンの動作は、同じ GameData\data0 の system\title_enhanced.txt にあります。228 行目付近の読込行を書き換えます。

タイトルからシナリオ接続
キャプチャ差し替え(任意) images/03_title_connect.png

title_enhanced.txt の loadScenario 部分など

図3-4: タイトル接続(任意) — 差し替え: images/03_title_connect.png

変更箇所(RegisterButtonActions 内・title.start):

// 変更前(228 行目付近)
        "System.loadScenario(\"scenario/feature_demo\");\n" +

// 変更後
        "System.loadScenario(\"scenario/my_first\");\n" +

動作確認チェックリスト

確認項目OK の目安
ファイル作成GameData\data0\scenario\my_first.txt がある(UTF-8)
タイトル接続「はじめから」で scenario/my_first が始まる
表示メッセージ・背景・立ち絵が出る
選択肢「話す」「黙る」で分岐し、*ending まで進む
終わり暗転したあと、タイトルへ戻る
配布前my_first.lsf と title_enhanced.lsf を作った

.txt と .lsf の扱いは 02章、タイトル接続の詳細は 08章 を参照してください。

タイトルから開く(API 参照)

システムスクリプト側で使う API は次のとおりです。

System.loadScenario("scenario/my_first");

エラーの見つけ方

開発環境の GameData は Debug 実行モードで起動するので、lumina.exe の隣に lumina_debug.log ができます。

うまく動かないとき

症状確認
真っ黒/何も出ない背景名・立ち絵名が実在するか(bg01a・smile など)。lumina_debug.log に失敗が出ていないか
立ち絵が出ない表情の名前(smile 等)と、位置(center / left / right / middleleft / middleright)
文章が出ない行頭がタブになっているか。文字コードが UTF-8 か
選択肢後に進まないchoice のラベル名と *ラベル が一致しているか
古い内容のまま起動した exe の隣の GameData を直したか(Release/Debug は別フォルダ。Debug は .lsf を先に読みます)
タイトルから進まないloadScenario のパスと、lumina_debug.log の「ファイルが見つかりません」
Android/ブラウザで古いまま.lsf を作り、Windows のビルドとパックをやり直したか(02章)