[15.0.0]

 * 新しいパラメータ:
   - server::red_card_probability (デフォルト値: 0.0)
 * 変更されたパラメータ:
   - server::drop_ball_time (200 -> 100)
   - server::golden_goal (true -> false)
 * オフサイド審判を改良した.自動審判はオフサイド位置にいるプレイヤ
   が実際にボールに触れたかどうか,あるいは,ボールからserver::offside_active_area
   以内の距離でkick/tackleコマンドを実行したかどうかによってオフサイ
   ドを判定するように鳴った.
 * キーパーのキャッチモデルを改良した.
   - 最大キャッチエリアの外にあるボールをキャッチしようとした場合,
     キャッチは失敗し,ボールには何の効果も現れない(従来のキャッチ
     モデルと同様)
   - 確率的にキャッチを失敗する範囲内でボールをキャッチしようとした
     場合,キャッチは失敗するが,キャッチコマンドで与えられた方向へ
     ボールが加速される.ボールの動きは壁に当たって跳ね返ったような
     挙動となる.キーパーのキャッチコマンドの方向はこの壁の法線ベク
     トルの方向となる.
 * ファウルモデルを改良した.従来のファウルモデルでは,ファウルとな
   る行動をプレイヤが取っても即座にレッドカードを与えられることはな
   かった.結果として,イエローカードを与えられていない限り,プレイ
   ヤは意図的なファウルを安全に実行することができた.server::red_card_probability
   は,意図的なファウルに対して即座にレッドカードを発行するかどうか
 (または,危険なタックルに対してイエローカードを発行するかどうか)
   を決定するパラメータとして導入された.red_card_probabilityが0.01
   でプレイヤのoul_detect_probabilityが0.5の場合,実際にレッドカード
   が発行される確率は0.005となる.
 * サイクル停止時のボールからの自動的なプレイヤ排除ルールが無くなった.
    例えば,プレイモードがoffside_lであっても左サイドのチームはボールに
    近づくことができる.ただし,プレイモードがfreekick_rに変わる直前に
    従来同様に左サイドのプレイヤはボールから遠ざけられる.
 * チーム名の文字として'+' を使用可能になった.
 * boost::filesystem3によるビルドの問題を修正した.

[14.0.3]

 * server::golden_goalがfalseの場合に延長戦を正しく扱えていなかった
   バグを修正した

[14.0.2]

 * ヘテロジーニアスプレイヤの自動割り当ての不具合を修正した.自動で
   変更されなかったプレイヤのプレイヤタイプIDは配信されなくなった.
 * gcc-4.4.1でのコンパイルの問題を修正した.Thanks go to Ke Shi for
   reporting the problem.

[14.0.1]

 * キャッチモデルの実装の誤りを修正した.Thanks go to Bruno
   Vinicius for reporting the problem. 以下の擬似コードにキャッチモデ
   ルの正しいトレードオフルールを示す:

    // catchable_area_l_stretch is the heterogeneous parameter,
    // currenlty within [1.0,1.3]
    double this_catchable_are_delta
      = server::catchable_area_l * ( catchable_area_l_stretch - 1.0 );
    double this_catchable_area_l_max =   server::catchable_area_l
                                       + this_catchable_are_delta;
    double this_catchable_area_l_min =   server::catchable_area_l
                                       - this_catchable_are_delta;

    if ( ball_pos is inside the MINIMAL catch area )
    {
      // the MINIMAL catch area has a length of
      // this_catchable_area_l_min and width server::catchable_area_w
      //
      // goalie catches the ball with probability
      // server::catch_probability (which is 1.0 by default)
    }
    else if ( ball_pos is beyond the MAXIMAL (stretched) area )
    {
      // the MAXIMAL catch area has a length of
      // this_catchable_area_l_max and width server::catchable_area_w
      //
      // goalie definitely misses the ball
    }
    else
    {
       double ball_relative_x = ( ball_pos - goalie_pos )
                                .rotate( -(goalie_body + catch_dir) ).x;
       double catch_prob
         = server::catch_probability
           - server::catch_probability
             *   ( ball_relative_x - this_catchable_area_l_min )
               / ( this_catchable_area_l_max - this_catchable_area_l_min );
       // goalie catches the ball with probability catch_prob
       // it holds: catch_prob is in [0.0,1.0]
    }

[14.0.0]

 * 新しいパラメータ:
   - server::tackle_rand_factor (デフォルト値: 2.0)
   - server::foul_detect_probability (デフォルト値: 0.5)
   - server::foul_exponent (デフォルト値: 10.0)
   - server::foul_cycles (デフォルト値: 5)
   - server::golden_goal (デフォルト値: true)
   - player::kick_power_rate_delta_min (デフォルト値: 0.0)
   - player::kick_power_rate_delta_max (デフォルト値: 0.0)
   - player::foul_detect_probability_delta_factor (デフォルト値: 0.0)
   - player::catchable_area_l_stretch_min (デフォルト値: 1.0)
   - player::catchable_area_l_stretch_max (デフォルト値: 1.3)
 * 変更されたパラメータ:
   - server::stamina_capacity (148600.0 -> 130600.0)
   - server::dash_angle_step (90.0 -> 45.0)
   - server::side_dash_rate (0.25 -> 0.4)
   - server::back_dash_rate (0.5 -> 0.6)
 * ダッシュモデルの改善.server::dash_angle_stepの新しい値(45.0)によっ
   て,プレイヤは8方向へダッシュできるようになった.
   server::side_dash_rateとserver::back_dash_rateの値がそれぞれ増加し,
   横方向/後ろ方向へより大きな加速を得られるようになった.
 * スタミナモデルの改善.スタミナキャパシティの値が148600.0から
   130600.0へ変更された.
 * タックルのノイズ増加.server::tackle_rand_factorパラメータが導入さ
   れ,結果として,各ヘテロジーニアスプレイヤタイプは独立した
   tackle_randパラメータを持つようになった.このパラメータによって,
   タックルによるノイズはキックのものよりも大きくなる.各プレイヤタイ
   プのtackle_rand値は以下のように計算される:

     tackle_rand = kick_rand * server::tackle_rand_factor
 * 危険なタックルに対するファウルの導入.プレイヤが特定の条件下でタッ
   クルコマンドを実行し,それを審判が検出した場合,プレイモードは

     foul_charge_[lr]

   へ変更される.l または r はタックルを実行したプレイヤのサイドであ
   る.一定の待ち時間の後,プレイモードは"free_kick_[lr]"または
   "indirect_free_kick_[lr]"に変更される.ここで,l または r はボー
   ルを所有していたプレイヤのサイドである.ファウルがペナルティエリア
   内で起きた場合,
     - ペナルティエリアが罰せられるプレイヤのサイドであれば,ファウル
       が起きた地点でもう一方のチームへ間接フリーキックが与えられる.
     - そうでなければ,ボールはペナルティエリアの外まで動かされ,もう
       一方のチームへフリーキックが与えられる.

   現在,危険な状況となる条件は以下のように定義されている:
     - ボールを所有するプレイヤが,ボールとタックルを実行したプレイヤ
       との間に存在する.
     - ボールを所有するプレイヤの体の向きが,タックルを実行したプレイ
       ヤの逆方向へ向いている.
     - ボールを所有するプレイヤがダッシュコマンドを実行している.
     - 最終的に,各プレイヤタイプのfoul_detect_probabilityパラメータ
       に基づいて,ランダムにファウルが検出される.
 * 意図的なファウルの導入.意図的なファウルとイエロー/レッドカードが
   導入された.タックルコマンドは追加引数としてブール値を取れるように
   なった:

      (tackle DIR {true|false})

   このブール値は,プレイヤが敵に対するファウルを意図しているかどうか
   を示す.ブール値が省略された場合,false値が使用される.

   詳細:

     a) ブール値引数がfalseの場合:
        通常のタックル(すなわち,ボールへのタックル)
     b) ブール値引数がtrue かつ 敵プレイヤがボールを蹴れない状態:
        通常のタックル
     c) ブール値引数がtrue かつ 敵プレイヤがボールを蹴れる状態:
       c1) ボールへのタックルが実行される.ただし,タックルの成功確率
           はより高くなる(server::foul_exponent = 10)
       c2) ファウルが成功した場合:
           ファウルを実行したプレイヤはserver::tackle_cycles(=10)サイ
           クルの動作停止ペナルティを受けず,代わりに,タックルを受け
           た敵プレイヤはserver::foul_cycles(=5)サイクルの動作停止ペ
           ナルティを受ける.
       c3) ファウルが成功した場合:
           審判はfoul_detect_probabilityパラメータに基づいてランダム
           にファウルを検出する
           => ファウルを受けたチームへフリーキックを与える
       c4) 審判がファウルを検出 かつ 前節で示した危険な状態に合致する
          場合:
           => プレイヤへイエローカードを与える かつ
              ファウルを受けたチームへフリーキックを与える
       c5) 審判がファウルを検出 かつ 前節で示した危険な状態に合致する
           かつ ボールが罰せられるプレイヤサイドのペナルティエリア内
           に存在した場合:
           => プレイヤへイエローカードを与える かつ
              ファウルを受けたチームへ間接フリーキックを与える
       c6) プレイヤが2枚目のイエローカードを与えられた場合:
           => プレイヤへレッドカードを与える かつ
              プレイヤはサッカーサーバから切断される
 * イエロー/レッドカード.意図的で危険なファウルが検出されると,審判
   はそのプレイヤを罰し,イエロー/レッドカードメッセージをクライアン
   トへ送る.メッセージフォーマットはプレイモード情報のものと似ており,
   罰せられるプレイヤのサイドと背番号の情報がカード情報に付加される:

     (referee TIME yellow_card_[lr]_[1-11])

    または

     (referee TIME red_card_[lr]_[1-11])
  * センサメッセージ中のファウル情報.
    - プレイヤは,意図的なファウルによって起こされた停止状態と,持っ
      ているカードの状態を,sense_bodyメッセージによって毎サイクル知
      ることができる.これらの情報は以前のフォーマットの後に追加され,
      バージョン14以降のクライアントにのみ送られる.

        (sense_body TIME ....
          ...
          (foul (charged CYCLE) (card {none|yellow|red})))

      CYCLESは現在の動作停止状態が継続するサイクル数を示し,0であれば
      プレイヤは停止していない.

      sense_bodyメッセージと同様に,fullstateメッセージによって他のす
      べてのプレイヤの動作停止状態を知ることができる:

        (fullstate TIME ...
          ...
          ((p {l|r} <unum> [g] <player_type_id>)
           <pos.x> <pos.y> <vel.x> <vel.y> <body_angle> <neck_angle>
           [ <point_dist> <point_dir>]
           (<stamina> <effort> <recovery> <capacity>)
          [t|k|f] [y|r])
          ...

      プレイヤの状態に応じて,'f'(プレイヤは地面に横たわっていること
      を示す), 'y'(イエローカードを示す) または 'r'(レッドカードを示
      す) が各プレイヤ情報に追加される.

    - コーチは,see_globalメッセージによって,すべてのプレイヤの動作
      停止状態とカード情報を観ることができる.これらの情報はバージョ
      ン14以降のクライアントにのみ送られる.プレイヤのfullstateメッセー
      ジと同様に,'f','y','r' が各プレイヤ情報へ追加される:

        ((p "TEAM" UNUM[ goalie]) X Y VX VY BODY NECK[ ARM][ {t|k|f}][ {y|r}])

    - ゲームログへの記録とモニタクライアントへの情報送信のために,新
      しいプレイヤの状態フラグとしてFOUL_CHARGED,YELLOW_CARD,
      RED_CARDが導入された.
 * ヘテロジーニアスキーパーの導入.オンラインコーチはキーパーのプレイ
   ヤタイプを変更できるようになった.'catchable_area_l_stretch'パラメー
   タが各プレイヤタイプへ追加された.このパラメータの値は以下のように
   計算される:

     double delta = random( player::catchable_area_l_stretch_min,
                            player::catchable_area_l_stretch_max );
     catchable_area_l_stretch = delta;

   トレードオフとして,このようなキーパーのキャッチコマンドの成功確率
   は以下のように減少する:

     double default_catchable_area_l = server::catchable_area_l;
     double this_catchable_area_l = default_catchable_area_l * catchable_area_l_stretch;

     if ( ball_pos is inside the default catch area )
     {
       // goalie catches the ball with probability server::catch_probability
     }
     else if ( ball_pos is beyond the stretched area )
     {
       // goalie definitely misses the ball
     }
     else
     {
       double ball_relative_x = ( ball_pos - goalie_pos ).rotate( -(goalie_body + catch_dir) ).x;
       double catch_prob
         = server::catch_probability
           - server::catch_probability * ( ball_relative_x - server::catchable_area_l )
                                         / ( this_catchable_area_l - default_catchable_area_l );
       // goalie catches the ball with probability catch_prob
     }

   キーパーのプレイヤタイプID情報がfullstate情報内で送信されるように
   なった.プレイヤがバージョン14以降のクライアントとして接続すれば,
   fullstateメッセージによって以下のようなプレイヤ情報を得られる:

     (p {l|r} <unum> [g] <player_type_id>)
 * ヘテロジーニアスキックパワーレートの導入.'kick_power_rate' と
   'foul_detect_probability'がヘテロジーニアスプレイヤタイプのパラメー
   タとして追加された.これらの値配下のように計算される:

     delta = random( player::kick_power_rate_delta_min,
                     player::kick_power_rate_delta_max )
     kick_power_rate = server::kick_power_rate + delta
     foul_detect_probability = server::foul_detect_probability
                               + player::foul_detect_probability_delta_fact * delta

  このトレードオフでは,(非常に強くキックできる)強いプレイヤはスマー
  トではない(審判をうまく騙せない)というモデルを想定している.

  ファウルは新しい仕様であるため,バージョン14においては,キックパワー
  レートを実際には*変更しない*.これは,チームに移行期間を与えるため
  である.そのため,上記のパラメータは0に設定されている.これらのパラ
  メータはバージョン15以降で変更される予定である.
 * ゴールデンゴールオプション.新しいスイッチオプションとし
   て,'server::golden_goal'が導入された.このオプションは延長戦時に
   試合が終わる条件を変更する.server::golden_goal が true であれば,
   延長戦時にゴールが決まれば試合は即座に終了する.
   server::golden_goal が falseであれば,たとえゴールが決まっても延長
   戦のすべての時間が経過するまで試合は終了しない.このオプションによっ
   て,より柔軟な競技形式が可能となる.

これ以前の変更に関しては、filesserver-ChangeLog.sjis.txtを参照のこと。


添付ファイル: filesserver-ChangeLog.sjis.txt 1646件 [詳細]

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