https://github.com/hidehisaakiyama/RoboCup2D-data/ の "Round Robin games by 10 teams from RoboCup2024" から入手可能
RoboCup2024 サッカーシミュレーション2D競技に参加した10チームのプログラムを用いた総当たり戦の試合データを利用できます. 対戦組み合わせごとにサイドを入れ替えて2000試合を実行した結果の試合ログ(総計90000試合以上)と,そこから抽出した情報となります(ベンチマークのために過去のRoboCup参加チームを含めたデータも追加で公開されています).RoboCup2024での競技の結果は RoboCup2024 Soccer Simulation 2D League Information Board を参照してください.
対戦組み合わせごとにディレクトリが存在し,ディレクトリ内にその組み合わせでの試合データが格納されています.ディレクトリ名は "左サイドチーム名-右サイドチーム名"となっています.チーム名文字列はすべて小文字としており,試合データ中で実際に使われているものとは異なる場合があります.
各試合は1ハーフ3000フレーム,前後半の6000フレームで構成されます.提供される試合データには延長戦は含まれません.1フレーム=0.1秒のため,試合時間は10分です.ただし,ファウル等で試合が止まる場面が追加されるため,実際の試合時間は10分よりも長くなります.試合時間のカウントは1から始まり,6000で試合終了となります..tracking.csv内では"cycle"という値でカウントされています.試合が止まっている間は試合時間は進まず,.tracking.csv内では"stopped"という値でカウントされています.
試合ごとに以下のファイルが存在しています:
.rcg.gz ・・・ シミュレータが記録した試合再生用のログファイル.csvファイルに含まれる以上の情報が欲しければこちらを利用する.フォーマットの詳細はシミュレータのマニュアルやパーサライブラリを参照.
.rcl.gz ・・・ 選手プログラムがシミュレータに送信したコマンドを記録したログファイル.今回のコンペで使用する必要はおそらく無い.
.tar.gz ・・・ シミュレーション実行時に各プログラムが出力したコンソールログ.使用する必要は無い.
.event.csv ・・・ ボールに触った行動イベントを .rcg.gz から抽出したcsvファイル.詳細は後述.
.player_types.csv ・・・ 選手の能力値を .rcg.gz から抽出したcsvファイル.必要に応じて使用する.詳細はシミュレータのマニュアル等を参照.
.result.csv ・・・ 試合結果のcsvファイル.使用する必要は無い.
.tracking.{csv,zip} ・・・ 選手とボールの位置・速度情報などを. rcg.gz から抽出したcsvファイル,および,csvファイルをzip圧縮したもの.詳細は後述
フレームごとの選手・ボールの位置速度情報がcsv形式で記録されています.シミュレータのログファイル(.rcg.gz)からrcg2csvによって機械的に抽出したものです.各列の意味は以下のとおりです.拡張子がzipのファイルは,各csvファイルをzip圧縮したものです.pandasのread_csvであれば,zip形式のままで読み込むことができます.
# ・・・ フレーム番号
cycle ・・・ 試合時間のカウント
stopped ・・・ 試合停止中のカウント
playmode ・・・ プレイモード.通常プレイ時は"play_on".その他のプレイモードはシミュレータのマニュアルを参照.
[lr]_name ・・・ 各サイドのチーム名
[lr]_score, [lr]_pen_score ・・・ 各サイドの得点,延長ペナルティシュートアウトでの得点
b_{x,y,vx,vy} ・・・ ボールの位置・速度
[lr][1-11]_t ・・・ 各選手のプレイヤタイプID.player_types.csvに記述されているIDと対応する.
[lr][1-11]_{x,y,vx,vy,body,neck,vwidth,stamina} ・・・ 各選手の位置,速度,体の向き,首の向き,視野角,スタミナ.
試合中に発生した,選手がボールに触って起きた行動イベントがcsv形式で記録されています.シミュレータのログファイル(.rcg.gz)からrcg2dataによって機械的に抽出したものです.各列の意味は以下のとおりです.
Type ・・・ イベントの種類.2024年12月時点のデータでは, "Shoot", "OwnGoal", "Pass", "Interception", "KeeperSave", "BallTouch", "Dribble", "OutOfBounds", "MultiTouch" の9種類.
Side1, Unum1 ・・・ そのイベントの前に最後にボールに触った選手のサイドと背番号.Passであればパスを出した選手,ドリブルであればドリブルをしている選手を指す.サイドの取りうる値は{left, right, neutral},背番号の取りうる値は{-1, 1 - 11}.ボールに触った選手のチームサイドを特定できない場合,サイドの値はneutralになる.同様に,ボールに触った選手の背番号を特定できない場合,背番号の値は-1になる.
Time1 ・・・ そのイベントの前に最後にボールが触られた試合時間.
Mode1 ・・・ そのイベントの前に最後にボールが触られたときのプレイモード.
X1, Y1 ・・・ そのイベントの前に最後にボールが触られたときのボール位置座標
Side2, Unum2 ・・・ そのイベントでボールに触った選手のサイドと背番号.値の範囲はSide1,Unum1に準ずる.
Time2 ・・・ そのイベントでボールが触られた,または,ピッチ外にボールが出た時点での試合時間.
X2, Y2 ・・・そのイベントでボールが触られたときのボール位置座標,または,ピッチ外にボールが出た時点でのボール位置.
Success ・・・ その行動が成功かどうかのフラグ.成功の場合true,それ以外はfalseとなる.Passの場合,レシーバがボールをキックできずにタックルで触っていればfalseになる.同様に,Dribbleの場合もタックルでボールに触ってしまった場合はfalseとなる.OutOfBoudsはすべてfalseとなる.