対戦ログの入出力形式について
ポケモンの対戦AIを作るに当たって
まずは対戦ログの作成ツールを作ろうということですが、
プログラムを実際に作る前にツールとしての入出力形式を定めます。
[補足]
まず、ログ作成ツールには大きく分けて3つの機能があります。
- 対戦の状態を順次入力していき、それをUI(ユーザインタフェース)に表示する(UI上で再現する)
- UI上で再現された対戦を保存する(今回はログファイルとする)
- ログファイルを読み込んで、ログの対戦をUI上で再現する
この内、2と3は要するにファイルの入出力ですが、
このプログラムがログファイルとして読み書きするには、
ログファイルにはどのような情報がどのような順序やルールで書き込まれるのか
定義してあげなければいけません。
今回の入出力形式という言葉はログファイルのルールのことを指しています。
ポケモンの対戦を記録するのに必要な情報を以下に列挙してみます。
上記の他に、あると後でAIが活用できる情報を列挙します。
これらの情報にファイルバージョンを付加することで、
形式が途中で変更になっても、新旧形式で互換を取ることが可能になります(多分)。
また、対応するルールの追加に対しても柔軟に対応できます(多分)。
これらを考慮して今回考えたのがこちらの形式です。
最後に例を挙げて終わります。
(実数値などは適当です)
[例:pokemonlog.pokelog]
6thSingle_Csv_Beta
フシギダネ,フシギソウ,フシギバナ,ゼニガメ,カメール,カメックス
ヒトカゲ,リザード,リザードン,キャタピー,トランセル,バタフリー
フシギダネ,オス,しんりょく,しんかのきせき,くさ,どく,はっぱカッター,ヘドロばくだん,やどりぎのタネ,ねむりごな
100,100,100,100,100,100
カメックス,オス,げきりゅう,たべのこし,みず,,ハイドロポンプ,れいとうビーム,こうそくスピン,からにこもる
100,100,100,100,100,100
フシギバナ,オス,しんりょく,フシギバナイト,くさ,どく,ギガドレイン,ヘドロばくだん,めざめるパワー(炎),ねむりごな
100,100,100,100,100,100
自分,カメックス,交代
相手,リザードン,かえんほうしゃ
自分,カメックス,100ダメージ
自分,カメックス,やけど
...
(省略)
...
相手,リザードン,かえんほうしゃ
自分,フシギバナ,100ダメージ
自分,フシギバナ,瀕死
敗北