[rcssserver-8.05]

 [rcssserver-rel_10]
 * ボールが遠く離れているのにキーパーがキャッチを試みた場合でもバック
   パスが検出されていた欠陥を修正した。
 [rcssserver-rel_9]
 * コンパイルのための時間と領域を節約するために、デバッグ情報はデフォ
   ルトでは無効になった。新しいデフォルトの"-O2"を書き換えるには、
   `./configure CXXFLASG="<YOUR FLAGS>"'を使用すること。
 * 共有ライブラリはデフォルトではビルドされなくなった。共有ライブラリ
   を使用したい場合は、configureを行う時に--enable-sharedオプションを
   用いる必要がある。
 [rcssserver-rel_8]
 * egcs 2.91.66でのコンパイルの問題を修正した。
 [rcssserver-rel_7]
 * CLangのQuad、Tri、Rec領域で位置の順番を逆にしていたマイナーな欠陥を
   修正した。
 * CLangのDefineメッセージで引用符が失われていた欠陥を修正した。
 * CLang7またはCLang8のみをサポートするクライアントへ、CLang7とCLang8
   の両方のサポートを要求するCLangメッセージを送信していた欠陥を修正
   した。
 * (hear time TEAM [rcssserver-UNUM])の形式のメッセージがデフォルトで
   送信されなくなった。
 * プレイヤが受信する音声メッセージは、以下の形式のearコマンドによって
   有効無効を切り換えられるようになった。

 (ear ({on|off} [rcssserver-TEAM] [TYPE]))

 TEAMは、"our", "opp", "left", "l", "right", "r" または各チーム名であ
 る。TEAMが省略されると、両チームからの音声メッセージに対してコマンド
  が適用される。TYPEは音声のタイプを指定するために使われる。"complete"
  または"c"は音声データを含むメッセージを指定し、"partial"または"p"は
  音声データを含まないメッセージを指定する。TYPEが指定されなければ、両
  タイプへコマンドが適用される。

 例:

 '(ear (on))' // 全ての音声を有効にする。
 '(ear (off partial))' // '(hear time TEAM [rcssserver-UNUM])'を無効にする
 '(ear (on our complete))' // チームメイトからの'(hear time TEAM [rcssserver-UNUM] "message")'
 を有効にする。
 '(ear (off opp))' // 敵の全ての音声を無効にする。

 (訳者注:"無効にする"とは、そのタイプのメッセージがサーバから送られ
   てこなくなるという意味である。)
 * GCC 2.96でのコンパイルの問題を修正した。
 * CLangのRuleMsgとDelMsgのqueueingがサポートされた。各メッセージが
   CLangウインドウを送ることが出来る数は、2つの新しいパラメータ、
   clang_rule_winとclang_del_winによって指定される。これらのデフォルト
   値はいずれも1である。
 * ゴールキックに関するバグを修正した。プレイモードがまだゴールキック
   の時に相手チームのプレイヤがボールをキックした場合に、相手チームへ
   ゴールキックが与えられていた。代わりに、ゴールキックがやり直される
   ようになった。
 * Cygwin上でコンパイルする場合のいくつかの問題を修正した。
 * キーパーがボールをキャッチしプレイヤの上にmoveした場合にプレイヤが
   ボールをキックできるバグを修正した。
 * オフサイドエリアのデフォルト値が2.5になった。
 * 適切なゴールキック(通称:規約16)はデフォルトでオフになった。
 * システムにlibzが検出されなかった場合のrcssclientのコンパイルにおけ
   る問題を修正した。
 * Replayパラメータは利用できなくなった。これは、ゲームをリプレイする
   目的で、いくつかのかなり古いコードのためのものであった。これは
   rcsslogplayerによって代用される(ずっと代用されてきていた)。
 * キックオフ前にプレイヤがダッシュ可能で、キックオフまでに加速度が蓄
   積されていた古い欠陥を修正した。Thanks go to Michael Gollin for
   reporting this bug and how to correct it.
 [rcssserver-rel_6]
 * 失われたメッセージを検出し再生することをより容易にするために、チー
   ムグラフィックプロトコルが変更された。新しいフォーマットでは、(モ
   ニタへのメッセージに適合していることを確認するために)256x64のイメ
   ージを8x8のタイルへ分解しなければならない。メッセージ形式は以下のよ
   うになる。

 (team_graphic (<X> <Y> "<XPM line>" ... "<XPM line>"))

   XとYは、8x8タイルの256x64完全イメージでの座標である。それぞれ0から
   31、0から7の範囲を持つ。各XPMラインは8x8タイルからのラインである。

 このコマンドに対して、サーバは以下のように答える。

 (ok team_graphic <X> <Y>)

 次に、サーバはメッセージボードによって以下のコマンドを各モニタに送信
 する。
 (team_graphic_{l|r} (<X> <Y> "<XPM line>" ... "<XPM line>"))
 * 新しいパラメータに関するserver.confのデフォルト値を修正した。
 * あるタイプのプレイヤが既にフィールド上に最大数いる場合に、同じタイ
   プのプレイヤ同士で交代できない欠陥を修正した。
 * タックルパワーがタックルの成功確率によって減少させられないようにな
   った。
 * プレイヤの交代がログファイルへ明示的に記録されるようになった。メッ
   セージボードは、ゲームログでプレイヤの交代を記録し、モニタへ以下の
   形式でデータを送信するために使われるようになった。

 (change_player_type {l|r} <unum> <player_type>)
 * gcc3.xでコンパイルする際のパラメータの解釈の問題を修正した。
 [rcssserver-rel_5]
 * フリーキック違反とバックパスの有効無効を切り換えるパラメータが追加された。

 free_kick_faults
 back_passes

 これらはいずれもデフォルトで有効である。
 * 適切なゴールキックの施行のためのパラメータが追加された。

 proper_goal_kicks
 stopped_ball_vel
 max_goal_kicks

 これらのデフォルト値はそれぞれ、on、0.01、3である。
 * キックオフ前にオンラインコーチがteam_graphicコマンドを送ることが出
   来るようになるだろう。画像は256x64のXPM形式で、各team_graphicコマン
   ドはXPMの一ラインのみを含まなければならない。コマンドの形式を以下に
   示す。

 (team_graphic "<line>")

 サーバはこのコマンドに対して次のように答える。

 (ok team_graphic)

 これが各ラインに対して得られ、イメージが完全であれば、次のメッセージ
 が得られる。

 (ok team_graphic_done)

 受信された各ラインは以下の形式でモニタへ送られる。

 team_graphic_{l|r} "<line>"

 この段階で、モニタは接続されていなければならない。
 * Stadium::M_caught_ballがNULLの時に参照されない欠陥を修正した。
 * フリーキック違反の欠陥を修正した。ダッシュする前に複数回キックをし
   ていた場合はフリーキック違反が取られていなかった。
 * server_paramメッセージでvisible_angleがdegreeでなくradianで報告さ
   れていた欠陥を修正した。
 * ゴールキック時にフィールドから出たボールがサイドライン上にドロップ
   ボールされる欠陥を修正した。
 [rcssserver-rel_4]
 * バージョン8以上のクライアントに対するserver_paramメッセージにタック
   ルパラメータが含まれるようになった。メッセージの生成において、項目の
   順番が変更され、推論できる値は送られなくなった。括弧を含んでいる場合
   の解釈を容易にするために、全て文字列値は引用符で囲まれるようになった。
 * キーパーがボールをキャッチした時のボールとプレイヤが衝突してしまう
   欠陥を修正した。
 * FIFA規定16に従って、ゴールキックからは直接プレイへ戻るようにボール
   をキックすることを要求されるようになった。ボールがペナルティエリア
   の外に出る前に止まったり、別のプレイヤによってキックされた場合は、
   ゴールキックをやり直す。ゴールキックを3回失敗すると、相手チームに
   ペナルティエリアの近い方のコーナーでのフリーキックが与えられる。個
   人的には、無能さや時間の浪費に対してイエローカードを与えるべきだと
   思うが、我々はまだイエローカードを用意していない。
 * tackle_power_rate(0.027)を追加した。以前は、タックルによってボール
   が最大スピードに達していた。実際のパワーはタックルの成功確率によっ
   て減少されるようになった。これは単純に、要求したパワーに成功確率を
   掛けることで得られる。
 * フリーキック違反やバックパス違反を侵した後、フリーキックが与えられ
   る前にキックやタックルが出来てしまう欠陥を修正した。
 * 敵のフリーキック時にボールに近づけてしまう欠陥を修正した。
 * フリーキックが取られた後のプレイモード変更で1サイクルの遅延が起こる
   問題を修正した。
 * 音声に関するデバッグメッセージを削除した。
 * バックパスにおける欠陥を修正した。フリーキックで蹴られたボールをキ
   ーパーがキャッチした場合に、バックパスが取られていた。
   (訳者注:意味が良く分からないので、原文を載せておきます。クライア
     ント開発においては特に意識しなくても良い問題だと思います。)
   Fixed defect in backpasses where a kick from a player on team A followed
 by a freekick and a catch by the goalie would be incorrectly called a back
 pass.
 * pointtoの報告される方向に関するバグを修正した。以前は、プレイヤの
   向きによって誤って調節されていた。
 * 引用符で囲まれたsayメッセージ内の括弧のカウントに関するバグを修正した。
   (say "Test)")のようなメッセージが正しく解釈されるようになった。
 * pointtoで使われる新しいベクトル(Vector2Dクラス)にあったバグを修正
   した。setHead()メソッドがX座標とY座標を取り違えていた。Thanks to
   Michael Gollin for pointing out the bug and providing the correction.
 [rcssserver-rel_3]
 * CLangにRuleを追加した。クライアントはRuleを定義できるようになっ
   た。これは後で有効、無効にしたり削除することが出来る。Ruleは次の
   ように定義される。

 (define DEFS)

 DEFS : // 古いdefsと同じ
      | (definerule VAR {model|direc} RULE)

 VAR : [rcssserver-abe-oqrt-zA-Z_]+[a-zA-Z0-9_]*

 RULE : (CONDITION DIRECTIVE_LIST)
      | (CONDITION RULE_LIST)
      | ID_LIST

 RULE_LIST : RULE_LIST RULE | RULE

 ID_LIST : all | VAR | (ID_LIST2)

 ID_LIST2 : ID_LIST2 VAR | VAR

 CONDITION :  // 変更なし

 DIRECTIVE_LIST : // 変更なし

 例えば、以下のメッセージが有効である。

 (define (definerule MyRule12345 model ((true) "dostuff")))
 (define (definerule MyRule2 direc ((true) "doStuff" "andOtherStuff")))
 (define (definerule MyRule3 model ((true) "dostuff"))
         (definerule MyRule3 model ((true) "doStuff" "andOtherStuff")))
 (define (definerule MyRule4 direc MyRule2))
 (define (definerule MyRule4 direc (MyRule2 MyRule3)))
 (define (definerule MyRule4 direc ((true) MyRule2)))
 (define (definerule MyRule4 direc ((true) (MyRule2 MyRule3))))
 (define (definerule MyRule4 direc all))
 (define (definerule MyRule4 direc ((true) all)))

 Ruleはdeleteメッセージによって後で削除されるかもしれない。これは次の
 形式で行われる。

 (delete IDLIST)

 例えば、以下のメッセージが有効である。

 (delete all)
 (delete MyRule12345)
 (delete (foo bar))

 Ruleはruleメッセージによって有効化、無効化される。これは次の形式である。

 (rule ACTIVATION_LIST)

 ACTIVATION_LIST : ACTIVATION_LIST ACTIVATION_ELEM | ACTIVATION_ELEM

 ACTIVATION_ELEM : ({on|off} ID_LIST)

 例えば、以下のメッセージが有効である。

 (rule (off all) (on (foo bar)) (off MyRule12345))

 各有効化の要素はリストにある順番で適用されるべきである。上の例では、
 まず全てのRuleが無効化され、次に'foo'と'bar'のルールが有効化され、
 最後に'MyRule12345'が有効化される。
 [rcssserver-rel_2]
 * dash_power_rateとstamina_inc_maxの間に新しいトレードオフが追加され
   た。dash_power_rateとplayer_sizeの間と、stamina_inc_maxとplayer_speed_max
   の間の古いトレードオフはデフォルトでは無効にされた。
   バージョン8のクライアントは新しいトレードオフを考慮するための追加
   情報を得る。デフォルトで全てのプレイヤのplayer_speed_maxが1.2にな
   った。
 * フリーキック時にプレイヤが自身にキックすることが禁止された。プレイ
   ヤはダッシュしない限りは複数回ボールをキック出来る。一度でも他のプ
   レイヤがボールをキックすれば、フリーキックのキッカーは通常どおりボ
   ールを扱うことが出来る。プレイヤが自身にボールをキックした場合(訳
   者注:ドリブルなどのダッシュを含む行動を行った場合)、2回目のキック
   を行った位置で相手チームにフリーキックが与えられる。これはプレイモ
   ードをfree_kick_fault_[rcssserver-lr]に変更する。lまたはrは攻撃側
   プレイヤのサイドである。AFTER_FREE_KICK_FAULT_WAIT(30)サイクル後に、
   プレイモードはfree_kick_[rcssserver-lr]に変更される。lまたはrは攻撃
   側プレイヤの反対のサイドである。
 * CLangにおけるボール所有者のチームサイドの設定でのバグを修正した。
 * バックパスが禁止された。プレイヤがキックしたボールを同じチームのキー
   パーがキャッチした場合をバックパスと定義する。ただし、別のチームの
   プレイヤの干渉があった場合は除く。バックパスが発生した場合、ぺナル
   ティーエリアの近い方のコーナーでのフリーキックが相手チームに与えら
   れる。これはプレイモードをback_pass_[rcssserver-lr]に変更する。lま
   たはrは、攻撃側のキーパーのサイドである。AFTER_BACK_PASS_WAIT(30)サ
   イクル後に、プレイモードはfree_kick_[rcssserver-lr]に変更される。l
   またはrは攻撃側キーパーと反対のサイドである。チームXのプレイヤからの
   パスがチームYのプレイヤに当たって跳ね返り、そのボールをチームXのキー
   パーがキャッチした場合はバックパスでは*ない*。チームXのプレイヤからの
   パスがチームYのプレイヤに当たって跳ね返り、そのボールをチームYのキー
   パーがキャッチした場合はバックパスでは*ない*。
 * プレイヤからの音声は以下の形式を取るようになった。

 (hear time direction TEAM [rcssserver-UNUM] "message")
 (hear time TEAM [rcssserver-UNUM])

 TEAMは、次のいずれかである。

 opp | our

 背番号は自分のチームのプレイヤの場合のみ与えられる。(チームメートの
 声の認識をシミュレートするため)

 一つ目目の形式は、各サイクルでの各チームからの最初のメッセージのための
 ものである。他の全てのそのサイクルでの受信メッセージは二つ目の形式で
 ある。
 * プレイヤはsayメッセージを引用符で囲んで送ることが出来るようになった。
   例えば、

 (say "message")

 これは次のコマンドと同じ効果を持つ。

 (say message)

 違いは、古いバージョンでは、他のコマンドが続くことなくヌル文字が続か
 なければならないことである。例えば、

 (say "message")(dash 100)

 これは、サーバによってsayコマンドとdashコマンドであると解釈される。
 しかし、

 (say message)(dash 100)

 これは単一のsayコマンドとしてしか解釈されない。そして、sayメッセージ
 の内容は"message)(dash 100"となる。
 * 古いクライアントが経験したラインの順序に関する問題を修正した。これ
   らのクライアントのいくつかはラインが現れる順番(近い方が先に来る)
   を信頼していた。よって、バージョン8以前のクライアントのために近い方
   のラインが先に来るようにラインをソートするようになった。バージョン8
   以上のクライアントは送られてくるメッセージの構成要素の順番を信頼すべ
   きではない。BTW code I wrote for clients I was working on exhibits
   this reliance on ordering :)=
 * playon中のある時間内におけるCLang Freeformメッセージに関するサポー
   トを追加した。コーチは、全てのfreeform_wait_periodサイクル経過後の
   freeform_send_periodサイクルの間、Freeformメッセージを送ることが出
   来る。freeform_send_periodとfreeform_wait_periodのデフォルト設定値
   はそれぞれ20と600である。例えば、プレイモードがサイクル420にplayonに
   なってそのままplayonが続いた場合、コーチは1020と1040の間、1620と1640
   の間、というタイミングでFreeformメッセージを送信できる。
 [rcssserver-rel_1]
 * CLangライブラリが変更された。これは以前のバージョンとは互換性を持た
   ない。これを反映するためにライブラリのバージョンが0.0.0から1.0.0に
   変更された。クライアントのコードで完全に使用できると言えるまでには
   少しばかりの修正がいくつかのクラスにまだ必要である。しかし、スクラ
  ッチから始めるよりはかなり容易にクライアントを作成できるだろう。シ
  ミュレータの全コードはLGPL(rcssmonitorのみはGPL)に基づいて公開され
  ていることだけは忘れないで貰いたい。よって、もし各自のクライアント内
  でサーバのコードを修正して使用する場合は、バイナリを公開する際にこの
  修正も公開*しなければならない*。より早く、より頻繁な公開を歓迎するだ
  ろう。うまくいけば、このやり方でまずまずの標準RoboCupライブラリ(SRCLib)
  を開始することが出来る。
 * CLangに位置の算術計算に関するサポートを追加した。位置の情報は以下の
   形式を取る。

 (<POINT_LIST>)

 POINT_LISTは、以下の形式である。

 <POINT_LIST> <ARITH_OP> <POINT_LIST> | <POINT>

 ARITH_OPは以下の演算子を使用できる。

	+ | - | * | /

 通常の演算子の優先度と括弧の使用が適用される。以下の例は、ボールと敵
 5番プレイヤの中間位置を意味している。

 (((pt ball) + (pt opp 5)) / (pt 2 2))

 クライアントは、全ての位置の算術演算子がX,Y座標へ独立に適用されると
 解釈すべきである。例えば、以下の式で?を演算子の一つとする。

 ((pt A B) ? (pt C D))

 この式は次のように解釈されるべきである。

 (pt A?B C?D)
 * CLangに三角領域と矩形領域に関するサポートを追加した。形式は以下の
   ようになる。

 (tri <point> <point> <point>)
 (rec <point> <point>)
 * 指示における複数のアクションのサポートを追加した。プレイヤは、各アク
   ションが個々の指示として送られたかのように、同じ方法で複数のアクショ
   ンの指示を扱うべきである。新しい指示に関する文法は以下のようになる。

 ({do|dont} {our|opp} <UNUM_SET> <ACTION_LIST>)
 * CLangにActPassReg, ActPassUNum, ActDribble, ActClear, ActShoot,
   ActHold, ActIntercept, ActTackleを追加した。形式は以下のようになる。

 (pass <REGION>)
 (pass <UNUM_SET>)
 (dribble <REGION>)
 (clear <REGION>)
 (shoot)
 (hold)
 (intercept)
 (tackle <UNUM_SET>)
 * CLangにCondUNumメッセージを追加した。形式は以下のようになる。

 (unum <VAR> <UNUM_SET>)

 これは、以下のように、変数にマッチする背番号の集合を制限することをコ
 ーチに許可する。

 (info ( 9000 (and (bowner opp {X})(unum X {1 3 5})) (do our {5} (mark {X}))))
 * CLangにプレイヤ変数メッセージを追加した。これは次のようなメッセージ
   を可能にする。

 (info ( 9000 (bowner opp {X}) (do our {5} (mark {X}))))

 プレイヤはXを1から11の集合としてこのメッセージを評価すべきである。例
 えば、現在のボール所有者が敵3番プレイヤであれば、5番プレイヤは敵の3番
 をマークすべきである。

 変数は引用符で囲まれるかもしれない。形式は以下のようになる。

 [rcssserver-abe-oqrt-z]+[a-zA-Z0-9_]*

 or

 \"[rcssserver-0-9A-Za-z\(\)\.\+\-\*\/\?\<\>\_ ]+\"

 引用符で囲まれていない変数は少し奇妙に見えるかもしれない。これは、文字
 p,d,c,sがボール移動トークンであり、引用符で囲まれていない変数の開始文
 字として使用できないからである。

 引用符で囲まれた変数は引用符で囲まれていない変数とは*等しくない*。
 例えば、Xは"X"と同一ではない。
 * CLangにcomparison(比較)メッセージを追加した。これは以下の形式を持つ。

 (time <COMP> <INT>)
 (opp_goals <COMP> <INT>)
 (own_goals <COMP> <INT>)
 (goal_diff <COMP> <INT>)
 (<INT> <COMP> time)
 (<INT> <COMP> opp_goals)
 (<INT> <COMP> our_goals)
 (<INT> <COMP> goal_diff)

 COMPは <, <=, ==, !=, >=, >のいずれかで, INTは現在時刻かゴール数と比
 較する整数値である。プレイヤは、整数と*現在時刻*または*現在のゴール数*
 との比較を評価するべきである。プレイヤはこのメッセージに含まれる時間や
 ゴール数を、コマンドが送られた時間やコマンドが受信された時間として扱う
 べきではない。

[rcssserver-8.04]

 [rcssserver-rel_5]
 * いくつかのプラットフォームでrcgファイルにデータが書き込まれないバグ
   を修正した。
 * クライアントへの'clang ver'メッセージのシリアライゼーションに関する
   バグを修正した。
 * コーチが接続する前にプレイヤが'clang ver'メッセージを送ったときに
   セグメンテーションフォルトになる問題を修正した。
 * recoveryの最小値固定に関するバグを修正した。
 * 'ok clang'メッセージに失われていた')'を追加した。
 [rcssserver-rel_4]
 * CLangメッセージ内のサイドが正しく設定されていなかったために、プレイ
   ヤへCLangが送信されなかったバグを修正した。
 * recoveryの最小値がrecovery_minを下回ることがあるバグを修正した。
 * サーバがsynchモードの時の、full-stateメッセージのサポートを追加した。
 Thank you to Michael Gollin for pointing out the problem and the code
 for fixing it.
 * 自動生成されるserver.conf内のタックルパラメータに関するバグを修正
   した。
 * ログを形成する時の遅延を防ぐために、ログが強制的にフラッシュされる
   ようになった。
 * クライアントの再接続に関するバグを修正した。
 [rcssserver-rel_3]
 * いくつかのマシンで発生したコンパイルの問題を修正した。
 [rcssserver-rel_1]
 * サーバは、コーチ言語をサポートする全てのプレイヤに対して、次のコマ
   ンドによって(コーチ言語の使用を)サーバへ通知することを要求するよ
   うになった。

 (clang (ver <MIN> <MAX>))

 MINとMAXは非負整数でプレイヤがサポートするバージョン番号の最小値と最
 大値を示す。MINはMAX以下で無ければならない。このコマンドがサーバによ
 って受理されなかった場合、CLangがサポートされないとみなされる。プレイ
 ヤが未サポートのCLangは、実際に送られたCLangメッセージの代わりに次の
 形式で受け取る。

 (hear <TIME> online_coach_{left|right} (unsupported_clang))

 これは、サポートが行われるようにクライアントが修正を行う必要があること
 を意味し、次のようなメッセージを送らなければならない。

 (clang (ver 7 7))
 * バージョン8以上のオンラインコーチは次のメッセージを受け取る。

 (clang (ver (<player_name>) <min> <max>))

 これは、プレイヤがサポートするCLangのバージョンを示すためである。
 * server.confにタックルのための変数を追加した。これはserver_paramメッ
   セージに追加する必要がある。
 * 圧縮・展開に関するバグを修正した。Thanks go to Hiroki Shimora
 for the patch.
 * 報告されるpointtoの方向に関するエラーを修正した。
 * ボールの衝突とプレイヤの衝突に関して競合していたタックルとタックル
   フォルトの値を変更した。
 * 全てのオンラインコーチのコマンドがオフラインコーチのコマンドとして
   解釈されていたバグを修正した。
 * バージョン7以前のオンラインコーチに対するプレイヤの音声のシリアライ
   ゼーションに関するバグを修正した
 * ペナルティエリアフラッグが+-20.16ではなく、+-20.175になっていたバグ
   を修正した。
 * 最近、サーバは送信したメッセージと受信したメッセージの両方をログに
   記録していた。この送信メッセージはログに記録されなくなった。後に、
   これはserver.confで切り換え可能になるだろう。
 * サーバが時折次のメッセージを吐き出すバグを修正した。
 "../rcssbase/rcssbase/udpsocket.h: 307: Error receiving from client:
 Interrupted system call"
 * オンラインコーチが接続した時のバグを修正した。
 * クライアントでCLangパーザを容易に利用するために、rcssclangparser
   ライブラリを導入した。
 * プレイヤは以下の形式のコマンドでタックルが出来るようになった。

 `(tackle <POWER>)'

 これは10サイクルの間プレイヤを動けなくする。タックルの成功は、タックル
 を行うプレイヤとボールとの相対的な位置関係に基づく確率によってランダム
 に決定される。確率は次の式で計算される。

 fail_prob = ( player_2_ball.x / tackle_dist )^6
             + ( |player_2_ball.y| / 1.25 )^6;

 tackle_distは、ボールがプレイヤの前方にある場合は2.5、プレイヤの後方に
 ある場合は0.5である。player_2_ballは、プレイヤからボールへのベクトルで
 プレイヤの体の向きに相対なベクトルである。

 タックルが成功すれば、ボールはプレイヤの体の方向へ押し出される。

 プレイヤが他のプレイヤを見るとき、't'フラグによって以下のようにプレ
 イヤがタックルを行っているかどうかを見ることが出来る。

 `((p "<TEAMNAME>" <UNUM>) <DIST> <DIR> <DISTCHG> <DIRCHG>
                           <BDIR> <HDIR> [rcssserver-<POINTDIR>] [t])'

 `((p "<TEAMNAME>") <DIST> <DIR> [rcssserver-<POINTDIR>] [t])'

 プレイヤはsense_bodyメッセージによって自分のタックルに関する情報を
 得られる。

 `(tackle (expires <EXPIRES>) (count <COUNT>))'

 以上の情報がアーム情報の後に置かれる。EXPIRESは、現在のタックルが継続
 するサイクル数で、0であればプレイヤがタックルを行っていないことを示す。
 COUNTはタックルを実行した回数を示す。

 コーチの視覚は、't'フラグによって以下のようにプレイヤがタックルを行っ
 ているかどうかを示す。

 `((p "<TEAMNAME>" <UNUM>) <X> <Y> <VEL_X> <VEL_Y> <ANGLE> <NECK_ANGLE>
                           [rcssserver-<ARM_DIR>] [t])'
 * Rcssclientは非常に基本的なスクリプトをサポートするようになった。
   クライアントは-scriptオプションによって指定されるファイルから一行を
   読み込み、sense_bodyメッセージを受信するとすぐにそのメッセージを
   送信する。最初の二つのプログラム引数はホストとポートを指定するために
   使われるので、-scriptオプションと同様に指定しなければならない。例えば、
   以下のコマンドはfoobarスクリプトを使用するクライアントを起動する。

 rcssclient localhost 6000 -script foobar

 1サイクルに一つ以上のメッセージを送るには、単純に複数のメッセージを
 一行に置けばよい。注意:複数のメッセージを送信する時、sayメッセージは
 最後に置かれなければならない。
 * pointto回数のカウントはpointtoをonにする場合とoffにする場合の両方で
   数えられるようになった。以前はpointto offコマンドはカウントに影響
   しなかった。
 * プレイヤは最大10バイトのメッセージを1サイクルに一回、各チームから聞
   けるようになった。
 * バージョン8以上のhearメッセージは次サイクルの最初(sense_bodyメッセ
   ージの後)に遅延して送られるようになった。
 * バージョン8以上のプレイヤは特定のプレイヤに注意を向けるためにattentionto
   コマンドを送ることが出来るようになった。コマンドの形式を以下に示す。

 (attentionto <TEAM> <UNUM>) | (attentionto off)

 <TEAM>には以下のものが使用できる。

 opp | our | l | r | left | right | <TEAM_NAME>

 <UNUM>はチームメンバを識別する整数(背番号)である。プレイヤは一度に
 1プレイヤにしか注意を向けられない。(新しいattentiontoコマンドは以前の
 指定を書き換える。)そして、自分自身に注意を向けることが出来ない。

 プレイヤはチームTのプレイヤA(pTAと呼ぶ)に注意を向けた場合、pTAが前
 サイクルに発行したsayメッセージの中からランダムに1メッセージを聞くだ
 ろう。pTAがsayコマンドを発行しなかった場合、チームTのプレイヤが発行
 した全sayメッセージの中からランダムに1メッセージを聞くだろう。同時に、
 プレイヤはもう一方のチームからランダムに1メッセージを聞くだろう。
 attentiontoがoffの場合(デフォルト設定)は、プレイヤは各チーム
 から1メッセージずつをランダムに聞くだろう。

[rcssserver-8.03]

 * fullstateメッセージから余分なスタミナ情報を取り除いた。
 * Solarisでの問題のためにランドマークリーダを動作しないようにした。
 * 接続時にrcssclientがポートとホストを表示するようにした。
 * プレイヤは以下の形式でフィールド上のある地点を指差すことが
   出来るようになった

   `(pointto <DIST> <DIR>)'

 または

   `(pointto off)'

 一つ目の形式では、プレイヤからDIRの方向、DISTの距離の地点を指し示す。
 DIRはプレイヤの現在の首の向きに相対な値である。
 プレイヤは、少なくとも`point_to_ban'サイクル(デフォルト値:5)の間、
 その動きに関係なく同じ位置を指し続ける。コマンドが一度発行されると、
 新しい'pointto'コマンドが発行されるまで、または`point_to_duration'サ
 イクル(デフォルト値:20)が過ぎるまで、古いコマンドは有効である。
 二つ目の形式は、以前に発行された`pointto'コマンドを無効にする。
 * バージョン8以上で接続したプレイヤは、他のプレイヤがどこを指しているか
   を見ることが出来る。ただし、そのプレイヤが'pointto'コマンドを発行
   中であり、チーム名が見える距離にいなければならない。この場合、'
   see'メッセージ内のプレイヤ情報は次の形式になる。(改行は含まれない)

   `(p "<TEAMNAME>" <UNUM>) <DIST> <DIR> <DISTCHG> <DIRCHG>
                            <BDIR> <HDIR> <POINTDIR>)'

 または

   `(p "<TEAMNAME>") <DIST> <DIR> <POINTDIR>)'

 `POINTDIR'には、実際の値にランダムガウシアンノイズが追加される。この
 ノイズは、ゼロと次式で計算される標準偏差との平均値である。

   sigma = pow(dist / team_too_far_length, 4) * 178.25 + 1.75

 これは、sigmaの最小値が1.75度で、team_too_far_length離れたプレイヤを
 見る時に180度に達することを意味する。
 (訳者注:サーバのソースを見ると最小値は1.25度のようなので、オリジナル
   のNEWSファイルが表記ミスをしているものと思われる。なお、
   team_too_far_length以上離れている場合はPOINTDIRの情報自体が含まれな
   くなる。)
 プレイヤが非常に近い時はノイズが+-2.5度の範囲、team_too_far_length離れ
 ている時は+-360度の範囲になる。正規分布の値の95%が2つの標準偏差内で
 あるので、95%はノイズがこの範囲に収まる。
 残り5パーセントのケースに注意 ;)
 * バージョン8以上の(オンライン、オフライン)コーチは、プレイヤが指差
 している方向を知ることが出来る。この情報はプレイヤの首角度情報のすぐ
 後に置かれる。
 * fullstateメッセージは<POINTDIST>と<POINTDIR>の両方を含み、首の角
 度とスタミナ情報の間に挿入される。腕の情報のフォーマットはsensebody
 と同じ(以下を参照)で、countとscoreの部分の間に挿入される。
 * バージョン8以上のクライアントに送られるsensebodyメッセージに、アーム
 アクチュエータの情報が含まれた。以下の情報がsensebodyメッセージの最後
 の括弧の直前に挿入された。

   `(arm (movable <MOVABLE>) (expires <EXPIRES>)
         (target <DIST> <DIR>) (count <COUNT>))'

 解説:

   - <MOVABLE>は腕が動かせるようになるまでのサイクル数を示す。
     0の時、腕はすぐに動かせる。

   - <EXPIRES>は腕が指差しを止めるまでのサイクル数を示す。
     0の時、腕はどこも指差していない。

   - <DIST> と <DIR>はプレイヤが指差している位置の距離と方向を示す。
     この位置はプレイヤの位置と首の方向に相対で、誤差は10cmと0.1度である。

   - <COUNT>は`pointto'コマンドが実行された回数を示す。
 * サーバパラメータに2つの新パラメータを追加した:
   - `point_to_ban'は`pointto'コマンドを実行できる最小サイクル間隔である。
     (訳者注:一度pointtoが実行されると、このpoint_to_banサイクル経過
      するまでは次のpointtoコマンドを実行できないことを意味する)

   - `point_to_duration'は、`pointto'コマンドが無効になるまでのサイクル
     数を意味する。
 * バージョン8以上のクライアントに対して、専用ソケットの使用が強制され
   た。イニットソケットにコマンドを送ったバージョン8以上のクライアント
   は、以下のメッセージを受け取る。

   (error only_init_allowed_on_init_port)

   そして、コマンドは無効になる。
 * サーバがクライアントとのUDP接続を失うと、サーバはクライアントがbye
   またはdispbyeコマンドを送ったものとして扱う。
 * server_paramへの追加パラメータに関しては、serverparam.Cを参照。
 * コードを綺麗にし、管理しやすく、また拡張しやすくするために、センサ
   のコードを書き直した。
 * ヌル終端文字の無いコマンドを送るバージョン8以上のプレイヤに対して、
   注意メッセージが送られるようになった。
   (訳者注:恐らく、ヌル終端文字の無いコマンドを送られると、strlen
    で文字列の長さが正確に判断できないという不具合を防止するため。)
   メッセージのフォーマットは、

   `(warning message_not_null_terminated)'
 * 圧縮コミュニケーションがサポートされた。クライアントは以下のコマン
   ドをサーバに送ることが出来る

   `(compression <level>)'

 サーバがZLib無しでコンパイルされている場合、サーバは以下のメッセージ
 を返す。

   `(warning compression_unsupported)'

 もし、<level>が0以上9以下の数値で無かった場合、サーバは以下のメッセ
 ージを返す。

   `(error illegal_command_form)'

 それ以外の場合、サーバは以下のメッセージを返す。

   `(ok compression <level>)'

 そして、続くクライアントへのメッセージは、新しい圧縮コマンドが受信さ
 れるまでそのレベルで圧縮される。

 圧縮レベルが0より上の場合、クライアントから送られるコマンドは圧縮され
 ているとみなされる。

 圧縮レベルをゼロにすると、圧縮を行わなくなる。(デフォルト設定)
 * サンプルクライアントは新しい圧縮オプションをサポートする。例えば、
   圧縮メッセージはコンソールへの出力時には圧縮されておらず、サーバ
   へのコマンドは送信前に圧縮される。
 * サーバパラメータにプロファイルオプションを加えた。プロファイルをonに
   した状態でテキストログを保存すると、テキストログにプロファイル情報が
   書き込まれる。 デフォルトではoffである。
 * サーバのコマンドラインオプション解析のバグを修正した。
 * 衝突モデルで稀に起こる無限ループのバグを修正した。

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