robocode・移動&回避
移動の基本
- 反重力移動
- 障害物や弾を避ける常套手法。
近寄りたく無い座標に仮想反重力点を設定し距離に応じた斥力を受けるように移動する。
この手法の優れた点は斥力は近寄れば強くなり離れれば弱まる点にある。
別に現実重力をシミュレーションしたい訳ではないので距離の2乗でなくとも良く、目的に応じて調整すれば良い。
- その他
- 色々な移動モードを持つ機体があるが自分的には反重力移動+αで良いと思う。
反重力移動万能論
反重力点
実際に設定すべきもの
もう一工夫
距離依存の斥力が優秀な反重力移動もやはり距離の最小値を決めて置くとよい。
恐らくロボットサイズ前後の値が妥当。
そうする事で詰み弾幕に挟まれた時などより薄い方に移動する事ができる。
(これをサボると弾幕の真ん中でただただ震える事に・・・)
回避
- 敵弾回避1
- 敵のHPの変動から射撃を検知できる。
敵のHPが0.1〜3.0減った場合は射撃された可能性がある。
ただし味方の弾HIT報告や敵の予測軌道が壁衝突。他機衝突の場合を除く。 - 敵弾回避2
- 敵の射撃方向は解らないので自分が狙われたものとする。
ただし敵は上記射撃モードの何れかを選択してくると想定。
不運にも被弾した場合は軌道計算から敵がどの射撃モードで射撃したかを類推する。
回避の有効性
色々試した結果、上記の3モードを敵毎に得点制で判断すると
生存率が約3倍向上ようだ。
回避の有無だけが違う機体の戦績
- 3vs3
- 100戦100勝
- 1vs3
- 100戦69勝31敗
回避は十分有効な事が解る。