• [rcssserver] モニタプロトコルv3 & ログフォーマットv4 (akiyama) 14:14:19

sizeof(short_showinfo_t2) = 1428, sizeof(dispinfo_t2) = 2056 なので,やはり一サイクル分の情報は3000バイト以下には抑えたい. 多少,柔軟性を犠牲にするしかないだろう.

というわけで,改訂&ログ用のデータフォーマットを追加. それぞれ,テキストで一行ごとに出力.

*ヘッダ
既存のヘッダフォーマットをそのまま使用.
 ULG4

ただし,最後の'4'を文字として記録するか数値として記録するかは議論の必要あり.
 (文字の4の場合,アスキーコード 52=0x34)
個人的には,テキストで可読であることを重視したいので,文字の4にしたい.
*パラメータ
通常のクライアントと同じ
 (server_param ...)
 (player_param ...)
 (player_type ...)
*プレイモード
  (playmode <PlayModeString>)
*チーム情報
  (team <LeftTeamName> <RightTeamName>
             <LeftScore> <RightScore>
             [ <LeftPenScore> <RightPenScore>])
*各サイクルの情報
  位置情報は .0001 で丸める.
  角度情報は .001 で丸める.
 (show <Time> <Ball> <Players>)
   <Ball> : ((b) <Pos> <Vel>)
   <Players> : <Players> <Players> | <Player>
   <Player> : ((<Side> <Unum>)
                  <Type>
                  <State>
                  <Pos> <Vel> <Body> <Head>[ <ArmDist> <ArmDir>]
                  (v <ViewQuality> <ViewWidth>)
                  (s <Stamina> <Effort> <Recovery>)
                  [(f <Side> <Unum>)]
                  (c <Counts>))
   <Side> : l | r
   <Unum> : <Integer>   // [1,11]
   <Type> : <Integer>   // [0,player_types-1]
   <State> : <Integer>   // 32bit integer
   <Pos> : <Real> <Real>
   <Vel> : <Real> <Real>
   <Body> : <Real>      // degree
   <Head> : <Real>      // degree
   <ArmDist> : <Real>
   <ArmDir> : <Real>    // degree
   <ViewQuality> : h | l
   <ViewWidth> : <Real>   // degree
   <Stamina> : <Real>
   <Effort> : <Real>
   <Recovery> : <Real>
   <Counts> : <Kick> <Dash> <Turn> <Catch> <Move>
              <TurnNeck> <ChangeView> <Say> <Tackle>
              <Pointto> <Attentionto>
* その他
 (msg <BoardType> <Message>)
     <BoardType> : <Integer>
     <Message> : <String>

 (draw <DrawObject>)
      <DrawObject> : <Point> | <Circle> | <Line>
      <Point> : (pt <Real> <Real> <Color>)
      <Circle> : (circle <Real> <Real> <Real> <Color>)
      <Line> : (line <Real> <Real> <Real> <Real> <Color>)

この形式でgzip圧縮したrcgファイルを作ると,6000サイクル分でサイズは4Mバイト弱となり,従来のバイナリフォーマットと大差無いサイズになった. まあ,こんなとこでいいんじゃないかな.

  • [rcssserver] モニタプロトコルv3 & ログフォーマットv4 実装完了(akiyama) 18:17:44

一通り作ったが,新フォーマットを解釈できるモニタとログプレイヤが存在しないので,テストが未完了. それと,場当たり的な実装になっている部分が多いので,まずはLoggerクラスを作ってログ保存の手続きを分離して整理しなければならないだろう. それが出来たら,モニタクライアント用とLogger用のSenderとSerializerを作る,と.

  • [librcsc] rcsc::rcg::ParserV4, rsc::rcg::SerializerV4 (akiyama) 19:07:56

rcssserverの方が形になってきたので,librcsc側のパーサも作り始めた. 今までのインタフェースと整合性を保つのは無理なので,新しいインタフェースを追加するしかないだろう. 中間データフォーマットを先に作る方が楽かもしれない.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:37 (2090d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.