← 記録へ戻る

数値調整ツール:データ駆動の調整とアサーション検証

『守夜人』開発記録06 / DEVLOG

数値をコードからbalance.jsonへ分離し、Webコンソールで調整する。アサーションによって、数値変更後も論理関係を維持する。

数値を一つ変更すること自体は難しくない。負担になるのは、その周辺の工程である。コードを開き、数値を探し、編集し、再ビルドしてからゲーム内で確認する。一晩に二十個の値を試すなら、この反復だけで集中力を消耗する。そこで、コードに触れずに調整できるコンソールを作った。

データとコードの分離:balance.json

バランス調整コンソールのデータフロー

各数値はコード内に既定値を持つ一方、ゲーム起動時に balance.json を読み込む。このファイルに保存するのは上書き値だけである。調整コンソールはJSONの可視化エディターで、Web上の操作をファイルへ書き込み、ゲームを起動すれば反映される。ロジックを変更せず、数値だけを直接調整できる。

敵の強さ、スキルの段数、手触りのパラメータ、能力値曲線、ダメージ式という五つの操作群を一画面に集約した。二十個の数値を試すときも、コードを変更せず二十回の調整だけで済む。

データ駆動調整がもたらす副次的効果

数値の分離には別の効果もある。何を調整可能にすべきかを明示せざるを得なくなることだ。ボスの耐久度、体勢崩しの受付時間、付与効果の傾きが、すべて名前を持つ操作項目になれば、システムの境界も明確になる。コードに散在するマジックナンバーは、設計自体がまだ十分に定義されていない兆候であることが多い。

アサーション:数値変更による論理破壊を防ぐ

数値を自由に変更できることは、別の危険も生む。一つの値が、離れた場所にあるバランス関係を静かに壊す可能性がある。AIとの協働では特に注意が必要になる。

この危険をアサーションで制御している。ある変更では、レベル尺度全体を五倍に拡大しながら、敵の強さは変えない必要があった。そこで「同等の進行地点では、敵の強さが変更前と完全に一致する」というアサーションを追加した。関連する定数のどれか一つだけが変更されれば失敗する。数値の変更は許可するが、数値同士の論理関係は固定する。このアサーションは後に、変換から漏れていた係数を実際に検出した。

まとめ:ツールは判断のために使う

調整コンソールとアサーションは、同じ目的を持つ。時間を「どのように数値を変更するか」ではなく、その数値が適切かどうかの判断に使うことである。

一人開発で希少なのはコードではなく、判断力と忍耐である。ツールで置き換えられる機械的作業はツールへ渡し、人にしかできない工程へ注意を残す。つまり、実際にゲームへ入り、その数値が成立しているかを自分の操作で確認する。

あわせて読む

02 / LINKS
C01

夜航ワークフロー:テストゲートに基づくAI自律開発

タスク指示書、自動テスト、対抗レビュー、納品報告で構成する夜間の自律開発工程を記録する。

全文を読む ↗
C02

素材パイプライン:再梱包、マニフェスト、管理ツール

素材の購入は開始点にすぎない。数百の素材パックを扱うための、アトラス再梱包、マニフェスト生成、管理ツールを記録する。

全文を読む ↗