同人・ゲーム

え、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から。スクリプトが動くところまで作れば、あとはコマンドを増やしていく作業になる。