これまでに述べたフォーマットで使用された非終端記号の意味と構文を解説す る.
ルールは左側に条件を持ち,右側に行動のセットを持つ. 各ルールは本質的にif-then命令文とみなすことができる:
if CONDITION then { DIRECTIVE_1 DIRECTIVE_2 ... }
プレイヤのプログラム内では,コーチから与えられた全てのアドバイスを小さ なルールベースとして容易に表現することができる. アドバイスへの追従は,現在の世界の状態を条件に照合し,指示の実行を試み ることで容易に行なえるだろう. 注: 現在の状況に複数の条件が適用可能で,かつ指示内容が異なる場合,指示 の選択はプレイヤの責任である. プレイヤは指示内容についても慎重に考慮すべきである点にも注意. 例えば,合致した指示が5番プレイヤへのパスのみであったが,5番プレイヤへ のパスコースが敵に消されていた場合,ボールを持ったプレイヤは指示を無視 する必要があるかも知れない.
条件は,状態を記述したアトミックな命題の論理結合によって形成される:
常に true.
常に false.
最初のINTがMINIMUM,二つ目のINTがMAXIMUMを意味する. チームTEAMのプレイヤで,背番号がUNUM_SET内のMINIMUM以上,MAXIMUM 以下のプレイヤが領域REGION内に存在すると,trueとなる. 領域と背番号についての詳細は後で述べる. TEAMは "our" か "opp" のいずれかである. コーチのメッセージは自チームのプレイヤにのみ配信されるので,TEAMの 曖昧性はない.
ボールが領域REGIONn内に存在すれば true.
チームTEAMのプレイヤで,背番号がUNUM_SETに該当するプレイヤが一人 以上ボールをコントロールできる状態であれば,true. ボール所有者とは,最後にボールに接触した(例えば,ボールをキッカブ ルエリア内に入れた)プレイヤのことである. ボールがプレイヤの制御を離れた後でも,これは変わらない.
プレイモードがPLAY_MODEであればtrue.PLAY_MODEの正当な値について は 7.7.7節を参照.
時間,得点差,味方または敵の得点を定数値と比較できる.演算子として
が使用可能.
Examples: (time 20) (2
opp_goals)
CLANG_VARがインスタンス化されていれば,変数CLANG_VARによって示 される背番号がUNUM_SET集合内に含まれるかどうかがチェックされる. 変数がまだ束縛されていなければ,特定の集合へ束縛される.
論理結合は以下のようになる:
例: "敵の3番プレイヤが領域X内に存在し,ボールを制御している"という条 件は以下のようになる.
(and (ppos opp {3} X) (bowner opp {3}))
指示は基本的に個々のプレイヤ集合のための行動のリストで,二つの形式を 取る:
プレイヤ自身の位置をREGION内に移動させる.
プレイヤのデフォルト位置をREGION内にする. この指示は主にチームフォーメーションの指定を意図している.
UNUM_SETに含まれる敵プレイヤをマークする.
現在のボール位置からREGIONへのパスコースをマークする.
現在のボール位置からUNUM_SETに含まれる敵プレイヤへのパスコースを マークする.
プレイヤまたはチームのオフサイドトラップラインをREGIONにセットする.
プレイヤのヘテロジニアスタイプがTYPEである. TYPE番号については 4.6節で述べられてい る. 値が-1の場合,プレイヤはヘテロジニアスタイプについての情報を消去す べきである.
REGION内にいるプレイヤにボールをパスする.
UNUM_SETに含まれるプレイヤにボールをパスする.
REGIONへとドリブルする.
REGIONからボールをクリアする. これは,ボールをREGIONの外へと蹴り出すことを意味する.
ゴールへとボールをシュートする.
ボールをホールドする. 例えば,現在の位置に立ったまま敵プレイヤからボールをキープする.
ボールを追跡し,制御下に置くことを試みる.
UNUM_SETに含まれるプレイヤ(またはボール所有者?)にタックルする.
REGIONとして以下のいずれもが使用可能:
後でより詳細に定義する.
ピッチのラインに平行な辺を持つ矩形を定義する.
引数の点によって構成される三角形を定義する.
共通の中心点を持つ二つの円にはさまれたドーナツ型の弧を定義する.
引数は,二つの円の共通の中心点とそれぞれの半径,弧の開始角度と角度
範囲の大きさを意味する.
例えば,半径 の円は``(arc (pt 0 0) 0
0 360)'' と定義でき,
U字型の領域は``(arc (pt 0 0) 5 10 0 180)''と定義できる.
ヌル(空の)領域.
引数の領域の和集合によって構成される領域を定義する.
POINTとして以下のいずれもが使用可能:
XとYは実数かつグローバル座標である. 絶対位置(X,Y)を意味する.
二つの位置を数学的に結合し,新しい位置を生成する.
POINT自身が算術演算子から構成することができるため,再帰的な構
造を形成することができる.
演算子は自然な方法で定義される. 例えば,
これらの相対的な位置の使用は,``ボールの位置へ移動'',``ボールから 10m以内に味方が二人いるならば''などといったような概念の表現を容易に する.
オンラインコーチは,チームのサイドに関係なく常に左手座標で視覚情報を 受け取ることに注意. しかし,コーチが右サイドのチームにメッセージを送る場合は,メッセージ 内では右手座標を用いなければならない. 左手座標から右手座標へと座標値を変換するには,-1倍するいだけで良い.
Unum set はプレイヤの背番号の集合である. 順番が重要でなく,サーバによって変更されるかも知れないという意味で, これらは集合である. 集合の中に0が含まれていれば,集合は全てのプレイヤ 1 - 11 を含む. 集合は変数を含むことができる.
Format: { NUM NUM
...NUM
}
技術的には,UNUMが現れるところであればどこであっても変数を使うこと ができる. しかし,変数がインスタンス化されているか導き出せることを確認するこ とが重要である. スコープは最も込み入った規則である. 例えば,以下の例では Xのスコープは4行目である.
1 (definerule rule1 model 2 (bowner our {0}) 3 ((true) (do our {5} (mark 11))) 4 ((bowner our {X}) (do our {X} (shoot))) 5 )
この例は,変数がどのようにしてインスタンス化できるかも示している: 定数としてUNUMを持つ条件においてのみ(POINT内のUNUMは条件のUNUMとしてカ ウントされない),変数は採用される. その値はどの背番号が条件をtrueにするかをチェックすることでセットされる. 例では,Xはボール所有者の背番号によってインスタンス化される. pposのような条件では,背番号の集合として変数をインスタンス化 することができる:
(ppos our {X} 1 11 REGION)
この例では,XはREGION内に存在するプレイヤの背番号の集合として インスタンス化されなければならない. 次のようなインスタンス化はサポートされないことに注意:
(ppos our {5} 1 1 (rec (pt ball) (pt our {X})))