ユーザ用ツール

文書の過去の版を表示しています。


ハイハイスクールアドベンチャー技術資料

概要

この文書は、ハイハイスクールアドベンチャーの技術的な資料である。

データファイル構成

プログラム本体以外には以下のファイルを使用している。

  • シナリオデータファイル
  • 画面データファイル
    • 部屋データ
    • アイテムデータ
  • 語句辞書ファイル
  • 初期データ
  • 音データファイル
  • メッセージファイル1)

ゲームエンジン仕様

ゲームエンジンは、汎用のアドベンチャーゲームエンジンを目指してデザインしたものの、入出力と強く結びついた動作をきれいに落とし込み切れていないので事実上のハイハイスクールアドベンチャー専用エンジンとなっている。

シナリオデータは32bitを1単位としたバイナリデータの集合で、複数の条件語からなる条件節に続いて、アクション節が続く構成となっている。

エンジンは条件節を評価し、条件節内の全ての条件語を満たしたら、アクション節を実行する。 複数の条件節を満たす場合には先にある条件節が優先的にマッチし、以下のものは対象外となる。

ハイハイスクールアドベンチャーの場合は、基本的には、どの部屋で、どういうコマンドが渡されたのかを評価する形が最も一般的である。

条件にはワイルドカードがあり、例えば、どの部屋であっても、北へ移動しろというコマンドが来たら、アクションを起こすというような場合には、部屋番号に相当する部分にはワイルドカードを渡しておく。

フォーマット

76543210765432107654321076543210
actoppadtypidoffsetvalue
typid

actビットで、条件語(act=0)かアクション語(act=1)かを判別している。 opは条件やアクションを具体的に示す。 3bit 8種類を持つことができる。 padはパディングエリアで、この4bitは使用されていない。 typとidはペアで、typで示される種類のデータのid番目にアクセスする。 offsetは8ビットのデータとしても使われるし、typ(3)+id(5)としても使われる。 typ(id)同士を比較したり内容をコピーしたりするときには offsetをこのように分割する。 valueは8ビットのデータである。

条件語

76543210765432107654321076543210
0cond typ1id1typ2id2value

cond

condは以下の8種類がある。

値意味
0NOP
1EQ
2NE
3GT
4GE
5LT
6LE
7未定義

オペランド

第一オペランドは typ1 + id1 であらわされ、第二オペランドは typ2 + id2または valueが使われる。 第二オペランドが typ2 + id2なのか valueなのかは、typ2によって決まる。

typは以下のものがある。

値意味
0None (typ2ならvalueを使う)
1Fact
2Place
3System
4Vector

Factおよび Placeはフラグである。 ハイハイスクールアドベンチャーにおいては、Factは懐中電灯が使用中かとか、先生が出現しているかとかそいうい情報を、Placeはアイテムの場所を管理している。idは5ビットあるので32種類ずつ持つことができるが、そんなには使っていない。

Systemは文字通りシステム変数で、Vectorは部屋と部屋のリンク情報を管理している。

アクション語

画面データ仕様

語句辞書仕様

1)
QT版のみ

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information