ATec logo
第1章-2 システムの根幹 イベントエンジン
ゲーム進行で発生する処理はイベントエンジンで実行する設計とした。
イベントエンジンは命令1バイトと最大で2バイトのデータの列を解釈して実行されるものとしてゲーム初期化の時点でDATA文からイベント番号ごとにひとつ可変長の文字列で記述された16進データの集まりとしてコマンド列を保持するようにした。
文字列形式でデータを保持するのはBASICで取り扱ううえでREAD A$のように可変長データをすみやかに読みだして格納できる利点を活用し、イベントデータの耐改造性を維持するための設計とした。
イベントは実行段階で文字列データから2文字読み出して文字列―HEX値へ変換して最大3要素の配列EC(DIM文でEC(3)として定義)に格納する。
イベントエンジンではイベントデータ列の中で条件分岐を行うために実行結果に応じたフラグ操作命令とフラグに応じた次読み出し位置の変更命令(フラグが0でないなら実行)および強制的に次呼び出し位置を変更する命令も作成した。
イベントエンジンは読み出し部と解釈部と実行部に別れ、読み出し部はデータ先頭からのオフセット値に応じた読み出しを行い、配列ECにコマンドとデータを渡す。解釈部は配列ETCの先頭EC(0)に応じてどのサブルーチンを呼び出すか決定し、実行部は呼びだされた各サブルーチンが与えられたパラメータに応じた条件分岐や入力の解釈、フラグ管理と返値の更新を行う。
イベントエンジン
イベントエンジンの模式図

当初設計ではゲーム進行のフィールド移動ごとの処理も含めてすべてイベントエンジン上での与えられたイベント番号の実行という形で処理させることにしたがフィールドを1歩歩くごとにイベントデータ読み取り部とイベントデータ解釈部の処理の負荷が高く動作が重いため、
フィールド移動の処理は固定のイベント命令とデータをセットし各イベントのサブルーチンを直接GOSUB命令で叩いて実行するようにした。
ほかのフィールド上でのイベントは実行の頻度が低いため開発中は頻繁に更新されるであろうイベントデータをイベントエンジンで処理する構造を使い続けることにした。

アップロード日:2023/10/4