◇◇Botters of the Galaxy 参加記◇◇


CodinGameで2018/03/03~2018/03/12の10日間にわたって行われたオンラインコンテスト「Botters of the Galaxy」に参加しました!CodinGameの存在は前回のコンテスト(Mean Max)のときに知ったのですが、そのときはAtCoderで開催されていたマラソンマッチ「Hokkaido Univ.& Hitachi 1st New-concept Computing Contest 2017」の期間中だったため、今回が初参加でした。

☆結果

世界95位/1713人、日本11位/90人(Legend league)でした。 Goldまでいけたらいいな~と思っていたので、Legendに到達できてとても嬉しいです。

☆ゲームの概要

2人のHEROに毎ターン行動の指示を出して

のどれかを達成すれば勝ちになります。 HEROは5種類の中から2体選ぶので、選んだHEROによって戦略が大きく変わることがゲームの特徴だと思います。LoLというゲームに似ているという声がたくさんありましたが、僕はLoLをやったことがないため分かりませんでした。

☆戦略

勝利条件の一つに「相手のTOWERを潰す」というのがあるのですが、このゲームではTOWERにも攻撃性能があり、相手のTOWERに近づいたENTITYはTOWERから砲撃されてゴリゴリhealthが削られていきます。相手のHEROやUNITも殴ってくるので、TOWER落としを目標に据えるのはやめました。そうなると敵のHEROとUNITを地道に潰す戦略をとりたいのですが、こういうユニットを動かす系のゲームでは相手のユニットの攻撃範囲外から地道にペチペチ殴っていけば無傷でボコれることを知っていたので、攻撃範囲の広いHEROを上から貪欲に2人(IRONMANとDr.STRANGE)雇用することに決めました。

○基本的な立ち回り

立ち回りについては、相手HEROの攻撃範囲に入らないかつ相手のENTITYを自分の攻撃範囲に収められるような場所を評価関数を使って探索しました。自分の周囲の座標を格子状に全探索し、よいことが期待される場所(相手のHERO/UNITに攻撃できる、など)には加点、悪いことが期待される場所(相手のHERO/UNITの攻撃範囲に入っている、など)には減点というように各座標にスコアをつけて、一番よいスコアの座標に移動します。そのままだと妙な場所に移動してしまうため、自分のUNITの後ろにポテンシャルを置いて、あまり奇妙な動きをしないように調整もしました。
移動場所を決めたら、その場所で相手HEROやUNITを殴れるなら殴り、殴れないならskillを使ったりアイテムを買ったりしました。
以上が基本の動きになります。

○その他の行動
・アイテム購入

アイテムは、アイテムを購入しようと思ったときに買える範囲で一番mana上昇量の多いものをIRONMANだけが購入しました。ポーションも買いたいので購入は3つまでにして、アイテムを売ることはせず、3つになったらそれ以上買うのはやめました。ポーション系については、基本はmanaが減ったらすぐにマナポーションを買っていたのと、死に掛けたときに普通のポーションを買うようにしていましたが、死に掛けているときには大体お金もないため、こちらはあまり発動していなかった印象です。

・スキル

スキルについては、基本的にmanaがあるかぎりぶっぱしていました。
主力はIRONMANのFIREBALLで、これは本当に優秀でした。敵が遠いほど威力が高くなるので、相手がある程度遠いところにいる場合にとりあえず撃ったり、死にそうになっている相手がいたら集中的に狙って逃げ帰る前に仕留めたり、相手に近いGROOTに打ち込んで相手を襲わせるのにも使いました。特にGoldからLegendに昇格するときに勝たないといけないBOSS(Star-Lord)はGROOTに殴られたときに反撃するルーチンを持っておらず、これがないと多分勝てていませんでした。
Dr.STRANGEのPULLも強いスキルで、PULLの射程圏内に相手が入った瞬間にとりあえず引っ張るだけで有利になることが多かったです。
先ほど挙げたPULLもそうですが、このゲームでは相手や自分を瞬時に移動させて接近状態にするスキルがいくつかあり、対処しないとそのまま殴られて死んでしまいます。そこで、そのようなスキルを使われたと判断したときにはIRONMANはBLINKで自分のTOWERに向かって飛び、Dr.STRANGEはSHIELDで防御力を上げたあと徒歩で離脱しました。
のこりのスキルは大して強くなく、Dr.STRANGEのAOEHEALは(アイテム購入しないこともあって)本当に焼け石に水程度しか回復しないため暇なときに使う程度でした。IRONMANのBURNINGは使いませんでした。

・Lasthit/Deny

Lasthitについてはそれほど貪欲に狙わず、相手HEROを殴れないときに死にそうな相手UNITがいたらそちらを狙うという感じでした。Denyも最初は狙っていたのですが、試合を見てると大体相手のHEROか自分のHEROが全滅して終わっていたので、味方を殺すのは損だと思いやめました。

☆コード

保存しておくのを忘れました。だいたい850行くらいでした。

☆まとめ

最初は適当なところで切り上げようと思っていたのですが、いざやってみると熱中してしまい、結局Legendになるまでやってしまいました。特に終了間際の金土日は一日10時間くらいやってたと思います。ただ、Legendに到達した瞬間に燃え尽きてしまい、そのあとの上位争いに参加できなかったのは少し残念でした。次回も是非参加して、今度はもっと上の順位を目指したいです。

トップに戻る