Next: バージョン 3 プロトコル
Up: 試合の記録方法と再生方法
Previous: バージョン 1 プロトコル
Contents
Index
バージョン 2 プロトコル
バージョン2のログファイルプロトコルでは,冗長で不用なデータの記録を回
避しようとしている.
フォーマットは次のようになる:
- ファイルのヘッダ:
ファイルヘッダはログファイルのバージョンを自動検出するために使用される.
ヘッダが無ければ,Unixバージョン1 と想定される.
'ULG'という3文字があれば,これはUnixログファイルであることを示している
(Windowsフォーマットとの区別のため).(訳注:公式には,Windowsフォーマッ
トのログファイルと言うものは存在しないので,考慮する必要は無い)
- char型 バージョン :
ログファイルフォーマットのバージョン.バージョン2では,'2'が記録される.
- body:
ファイルの残りの部分は,以下のフォーマットのチャンクによってデータを格
納している:
- short型 mode :
dispinfo_t構造体(5.5.1 バージョン1を参照)のmode
に相当.
SHOW_MODE は showinfo_t 情報を,MSG_MODE は msginfo_t を意味する.
- モードが SHOW_MODE であれば,続くデータは showinfo_t 構造体で
ある.
- モードが MSG_MODE であれば,次のバイトは:
- short型 board: ボード情報(メッセージタイプ)を示す
- short型 length: メッセージの長さを示す(ヌルターミネータを含む)
- 文字列(char配列) msg: length個の文字によるメッセージ
DRAW_MODE や BLANK_MODE といった他の情報は,ログファイルには記録され
ない.空間の最適化に関しては,まだ工夫の余地が残っている.チーム名をファ
イルヘッダの一部に含めてしてしまうことで,一度きりの記録にすることがで
きる.プレイヤの背番号は,配列のインデックスと利用することで暗黙的に指
定することができる.
このように,バージョン2の情報チャンクは同じサイズにはならない.よって,
ログファイルを逆再生するような場合に,固定サイズバイトのシークだけで済
ませることはできない.一度にファイル全体を読んでしまうか,少なくとも,
showinfo_t チャンクのストリーム位置を記録しなければならない.
異なるプラットフォーム間での互換性を維持するために,値はネットワークバ
イトオーダで表現される.
Hidehisa Akiyama
2004-11-21