robocode基礎
今回かなり徹底的にやったので備忘録では勿体無いと思った。
ちゃんとコンテンツに纏めようかと。。
あくまで僕の視点から見た3週間のマジcodeですよ
robocode基礎
機体の種類
役割 | HP | 特記事項 |
---|---|---|
リーダ機 | 200 | やられると全員30ポイントダメージ |
一般機 | 100 | |
ドロイド機 | 120 | レーダー無し |
各種性能
分類 | 要素 | 値 | 特記事項 |
---|---|---|---|
弾 | 0.1〜3.0のパワーを選択し自分のHP削って撃つ。 当たると自分が回復&得点。外せば丸損。 |
||
威力 | (power > 1.0): 6 * power - 2 (power <= 1.0): 4 * power |
大きい弾はちょっと得。 | |
弾速 | 20 - 3 * power | ||
回復量 | 3 * power | ||
移動 | 速度によって旋回速度が変わる | ||
前進・後進 | MaxSpeed:8(dot/tick) | ||
加速 | 1 (speed/tick) | ||
減速 | 2 (speed/tick) | ||
旋回 | 10 - 0.75 * speed (degree/tick) | ||
衝突 | ダメージを受ける | ||
壁衝突 | speed / 2 | 丸損 | |
敵衝突 | 0.6 | 得点に加算 | |
砲塔 | 回さなきゃ撃てない・・・ | ||
旋回 | 20 (degree/tick) | ||
レーダー | そのtick中に回った範囲の敵の情報が取れる。 | ||
旋回 | 45 (degree/tick) |
その他
- 処理時間
- 1 tick毎15ms 以内の処理しか許可されない。超えてしまうとそのtickはスキップ扱いになる。
戦略
- ラウンド
- きっかけのイベントは3ラウンド制だったが10ラウンド・3機チームを想定した設計にする。(当然1on1要素も入る)
- パターン
- 10ラウンド程度の情報はメモリに入れる。得られる情報は全てパターンに使う。
- 移動
- 減速の加速度が加速より大きいので移動中の方が有利。
撃たれたときの理想は速度4が良い。(加速1+減速2でトータル前後方向に加速度3の選択肢がある)
しかし態々調整するのも面倒だし、有利な地点への素早い移動を考えなるべく高速を保つようにする。 - ダメージ
- 体力、得点を考慮すると避けるべき優先度はこうなる。
弾 >> 壁 > 敵(ダメージボーナス&トドメボーナス) - 攻撃型/防御型
- 弾を当てる自信が無ければ撃たずに逃げ回った方が良い。
ダメージ(power*4+α)と回復(power*3)を考慮すると100/(4+3) = 15% が採算ライン。
如何に当てるか?如何に採算割れ攻撃をしないか?が重要。
各要素
- #0000FF;">白点:実際の敵弾(ロボットには見えていない)
- #0000FF;">緑点:実際の味方弾(ロボットには見えていない)
- 青線
- 味方の射線(味方の自己申告なので正確)
- 赤線
- 敵の予測射線
レーダが当たるタイミングが悪かったり自機狙いじゃなかったりで大きく誤差が出るものの
肝心の自分に向かって来る弾はある程度見えている。 - 小さい白丸
- 自機予測軌道。思考ルーチンを仮想未来戦況で実際に走らせているのでかなり正確な予測(処理量的にはかなり無理をしている)
- 小さい黒丸
- 弾回避用の反重力。弾が来ると思われる20tick前から危険地域に指定している。
- 小さい青点
- ロボット予測軌道。(等加速度)
- 白丸
- パターン予測による敵予測軌道
- グレー丸
- パターン予測に利用した過去データ
- 白太丸
- 敵との距離調整用の反重力点
- 黒太丸
- ランダム移動用の反重力点
- 壁
- 反重力点
- 敵・味方
- 反重力点
- 緑太丸
- 以上の結果、力学的に決まる目的地
何処まで強くなるのか?
現在のエース
ゲッコー瞬殺・・・(ゲッコーって??w)
どれくらい強くなるのか?
大会の有力機と対戦してみた。
http://www.ibm.com/developerworks/jp/java/library/j-robowrap/index.html
Robocodeはしっかり考えれば、ちゃんと結果が付いてくる所が面白い!
- Yngwie
- 大会優勝機
相性が良いのかそれ程強く感じない。
こちらとの相対角度を元に回避パターンを選択しているように見える。
これは通常のパターンマッチでは考慮されない事が多いが後述の射撃反応パターンの餌食となった。
射撃反応パターンのヒット率が三割を大きく超える状態。
- Vapour
- 大会準優勝機
強い!何とか勝ち越すしヒット率も上回るが得点で負ける。
脅威の確率で大玉を当てて来る為、瞬殺される事があり
最終的にBullet dmg&bonusで差が付く。
- Entangled
- 日本の有力機。
http://shinh.skr.jp/robocode/entangled.html
やはり相性の問題か、、作者解説の回転反射移動が射撃反応パターンの餌食になっている。
- Melee
- Yngwieは消極策過ぎて弱い。
Entagledは安定して強い。
- sandboxDT
- たぶん最も有名な機体。最強レベルに挑戦してみた!