え、ADVのゲームエンジンを自作!?で、できらぁ!
逆転裁判風のADV + ポイント&クリック探索ゲームを作りたいっていう話を言われまして。
証言を聞いて矛盾を見つけ、証拠品を突きつける。っていう感じだろか
あのシステムを自分のゲームでやりたい、と。
既存のADVエンジン(ティラノスクリプトとか)でもある程度はできるけど、「証言×証拠品」の突きつけ判定や探索モードとの切り替えを自由に組み込む、というか言われてる演出がちょっと既存のではきつく、
かといってエンジン丸ごと作るのは厳しい。
ということで、スクリプト言語から設計する。
システム構成
[Webエディタ群] → [スクリプト/設定ファイル] → [Godotエンジン] → [ゲーム]
- ゲームエンジン: Godot 4.x + GDScript
- スクリプト言語: 独自設計の「Scenario Script」
- エディタ: Web製(スクリプト、キャラクター、探索エリア、証拠品)
非プログラマでもスクリプトを書けることを目指す。プログラマはエンジンとエディタの開発に集中。
スクリプト言語「Scenario Script」
セリフ
キャラ名と --- で囲む形式。
かなちゃん
---
異議あり!
この証拠品を見てください!
---
複数行のセリフも自然に書ける。
コマンド
[コマンド名 引数] の形式。
[show character_id]
[show character_id emotion=angry position=left]
[bg courtroom transition=fade]
位置引数と名前付き引数を混在可能。
ラベルとジャンプ
#chapter1_start
[jump chapter1_start]
[jump_if $flag chapter1_start]
変数と条件分岐
[set $talked_to_witness true]
[set $penalty 0]
[add $penalty 1]
[if $penalty >= 5]
[jump game_over]
[endif]
主要コマンド一覧
キャラクター表示
[show ikesan]
[show ikesan emotion=smirk position=right]
[hide ikesan]
[hide_all]
背景・演出
[bg courtroom]
[bg courtroom transition=fade]
[shake]
[flash]
サウンド
[bgm trial_begin]
[bgm stop]
[se objection]
[voice file_name]
選択肢
[choice]
[option "証拠品を確認する"]
[show_evidence_list]
[end_option]
[option "続きを聞く"]
[jump continue]
[end_option]
[end_choice]
逆転裁判システム
たぶんこのシステムが欲しいのかと思い。
証拠品システム
[add_evidence knife]
[remove_evidence knife]
[show_evidence knife]
証拠品はJSONで定義。ID、名前、説明、画像パスを持つ。ゲーム中に入手・確認・突きつけができる。
証言・尋問モード
[start_testimony testimony_01]
[statement id=1]
私は午後10時に現場を目撃しました。
[end_statement]
[statement id=2]
被告人は凶器のナイフを持っていました。
[end_statement]
[end_testimony]
証言は複数のstatementで構成。プレイヤーは証言を順に聞きながら、怪しい部分を探す。
突きつけシステム
[present_point 2 knife]
かなちゃん
---
異議あり!
凶器はナイフではなく、鈍器です!
---
[show_evidence knife]
[set $testimony_broken true]
[jump testimony_success]
[end_present]
[present_fail]
いけさん
---
的外れな指摘だな...
---
[add $penalty 1]
[end_present_fail]
present_point で「証言ID 2」×「証拠品 knife」の組み合わせを正解として設定。間違った組み合わせは present_fail に飛ぶ。
ペナルティシステムはスクリプト変数で自由に実装できる。5回ミスでゲームオーバーにするもよし、無限にやり直せるようにするもよし。
探索モード
[enter_area office]
...探索中の処理...
[exit_area]
探索エリアはエディタで作成。背景画像上にクリック領域を設定し、各領域にスクリプトを紐付ける。
エディタ群
4種類のWebエディタを用意する予定。
- スクリプトエディタ: コマンド補完、リアルタイムプレビュー、文法チェック
- キャラクターエディタ: 立ち絵と表情差分の管理
- 探索エリアエディタ: クリック領域の設定
- 証拠品エディタ: アイテム情報の登録
詳細は実装が進んだら別記事で。
サンプルスクリプト
裁判シーンのイメージ。
#chapter1_start
[bg courtroom]
[bgm trial_begin]
[show judge]
裁判長
---
それでは、審理を開始します。
検察側、冒頭陳述をどうぞ。
---
[show ikesan position=right]
いけさん
---
本件は、被告人が凶器を用いて被害者を...
---
[hide ikesan]
[show kanachan position=left]
かなちゃん
---
(証拠品をしっかり確認しておこう...)
---
[choice]
[option "証拠品を確認する"]
[show_evidence_list]
[end_option]
[option "続きを聞く"]
[jump continue_testimony]
[end_option]
[end_choice]
実装フェーズ
4段階で進める。
Phase 1: 基盤
- スクリプトパーサー
- 基本コマンド(セリフ、show/hide、bg、bgm)
- ダイアログUI
Phase 2: コア機能
- 変数/フラグシステム
- 条件分岐
- 選択肢UI
- セーブ/ロード
Phase 3: ゲーム固有
- 証拠品システム
- 探索モード
- 証言/尋問モード
- 突きつけシステム
Phase 4: エディタ
- 各種Webエディタの実装
まずはPhase 1から。スクリプトが動くところまで作れば、あとはコマンドを増やしていく作業になる。