見出し画像

Heaven Burns RedのADVパートを構成する物について

技術的な面でのメモになります。
Heaven Burns Red(以下、ヘブバン)はUnity、C#、Lua、SPARK GEARで構成されています。ヘブバンのゲーム構成は「ADV」「フィールド」「戦闘」の3構成となっています。

ADVパートの作成

ADV実装はUnityとLuaの構成で行なっているそうです。シナリオの納品は.txtで送られるのでLua向けに変換するツール「Tulip」を作ったとの事。

ADVを作るまでのフローは
Key(ビジュアルアーツ)からシナリオの納品(.txtで納品される)

.txtをTulipで変換

スクリプト作業(レイアウト命令)

テストと修正(UnityとLuaのホットリロード)

テキストファイルにはキャラ指定、コメント、吹き出しの種類が含まれます。通常の場合は1行ずつLua構文に修正する必要があり相当な労力を要します。手作業になると正確性が低い事やミスもあり得ます。
なので変換ツールである「Tulip」を作成し、自動化を可能にしました。

シナリオ変換ツール「Tulip」について

  • 納品されたシナリオを(.txt)をLuaに変換するパーサー

  • 使用言語はPythonとC#

  • Unityのツールとして実行

  • シナリオの量産を向上

一例では

【茅森】「サンプル」
【和泉】「サンプル2」

を自動的に

Adv.talk(`茅森”, [[サンプル]])
Adv.talk(`和泉”, [[サンプル2]])

という風に自動でやってくれるのだそう。

実装

  • テキストファイルを上から順にロード

  • 特定の文字列を探し、変換

  • キャラ一覧は事前にロード済み

シナリオのテキスト以外に選択肢にも対応しています。シナリオ中の「3×3(サザン)選択肢」(ADV中に時々出る3つで構成する選択肢)のテキストファイルはビジュアルアーツで使用されているSiglusEngine(シグラスエンジン)の構文で来るそうです。それもTulipを使用する事でLua向けに変換された状態で出力されるそうです。LuaではdoubleQuestionの命令に変換されます。SiglusEngineではswitch文がありますが、Luaにはswitch文がないのでif文を代わりに使う事で対応しているとの事。

スクリプト作業

  • 基本構造はADV内で共通=同じ命令をたくさん書く必要がある

なのでテンプレート化で自動作成できるように
ADVでの表示をパターン分けし、「1人のレイアウト」「2人のレイアウト」(フェードインとキャラを左+背景を左にスライド)「1名がフェードアウトし1人のレイアウトに戻す」(背景は右にスライド)

レイアウト命令(内製)を作りテンプレート化

  • 演出を直感的に作る事が可能に

  • 立ち位置の変化から途中経過を補完

  1. 背景を元にステージを作成

  2. ADV立ち絵を表示

  3. 命令を書く事で複雑な演出が実現

テストと修正

開発サイクルは基本的に

  1. エディタ再生

  2. 確認

  3. エディタ停止

  4. 修正

  5. ファイルを再インポート

  6. 1からに戻るの繰り返し

効率を上げるためにUnityとLuaのホットリロードを可能にしたそうです。特徴は以下。

  • エディタは再生したまま

  • Luaスクリプトのリロード

ホットリロードでシームレスなコードの修正が実現!

まとめ

  • ヘブバンのADVの演出が細かいのは色々な工夫のおかげ

  • UnityとLuaの相性が結構いい(ホットリロードとインポート不要でやれる)

  • ADVの量産がしやすい


この記事が気に入ったらサポートをしてみませんか?