読者です 読者をやめる 読者になる 読者になる

中年engineerの独り言 - crumbjp

LinuxとApacheの憂鬱

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% が採算ライン。
如何に当てるか?如何に採算割れ攻撃をしないか?が重要。
スクリーンショット

文字だけじゃツマラナイのでなるべく画像を載せよう

解析の為、onPaintで色々情報を書き込んでいる。

各要素
#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
たぶん最も有名な機体。最強レベルに挑戦してみた!


惨敗・・・正直ココまで差があるとは・・・