StarCraft: Brilliant Brood War ボットの構築

学生StarCraft AIトーナメントプレイするようにプログラムされたボットが対戦する AI 対 AI トーナメントですスタークラフト: ブルードウォーお互いに。 SSCAIT は 2011 年に始まり、3 つの主要な Brood War AI トーナメントの 1 つです。昨年の学生部門のタイトルは、Martin Rooijackers と彼の作品、LetaBot が受賞しました。彼らは2014年の学生部門と混合部門でも優勝しました。今年は Martin と LetaBot が準々決勝に進出しました。

ボットが戦いを続ける間、私はマーティンにボットがどのように機能するかについて詳しく教えてくれるように頼んでいます。 Starcraft の種族の中には、他の種族よりもボットを構築しやすいものがありますか?ボットにやらせるのが最も難しいことは何ですか?そして、LetaBot はボット メタを支配するように構築されているのでしょうか、それとも人間にも対抗できるのでしょうか?

ピップ: こんにちは、マーティン。あなた自身のことと、SSCAIT に参加する理由を少し教えていただけますか?

マーティン・ロイジャッカーズ:私はマーティン・ロイジャッカーズ、マーストリヒト大学の修士学生です。を設計するスタークラフトボットは私の修士論文の一部です。 SSCAIT に参加する理由は、自分のアルゴリズムが他のボットに対してどの程度優れたパフォーマンスを発揮するかをテストするためです。

ピップ: LetaBot について紹介して、AI がどのように機能するかについて少し教えてもらえますか?

氏:私は、Berkeley Overmind の Terran バージョンを作成するというアイデアから LetaBot を始めました [Berkeley Overmind は、AIIDE 2010 StarCraft コンペティションで優勝した Brood War をプレイするための AI エージェントです。これについての Ars Technica の詳細な投稿はここにあります]その場所を飛び回る航空ユニットとして、ムタリスクの代わりにレイスを使用します。他のボットに対して実験を行ったところ、どのボットもゲームの初期段階で問題があることがわかりました。そこで私はまずその問題に焦点を当てることにしました。

YouTubeで見る

LetaBot はまだ開発中ですが、一般的には次のように動作します。

- 初期の攻撃から安全な構築順序 [ユニットや構造物などを構築するために使用する順序とタイミング] で開きます。必要に応じて壁を作ります。
- 安全なときにできるだけ早く拡張するようにしてください。
- 基地の安全を確保しながら航空ユニットの技術を向上させます [これは、航空ユニットの生産に必要なだけの建造順序を達成することを意味します]
- 制空権を利用してマップ制御を獲得し、より多くの拡張を実現します

ピップ: Starcraft AI の設計という問題に最初にどのように取り組みましたか? (たとえば、既存のボットを検討していましたか、それともゼロから始めましたか?特定の課題を解決しようとしていましたか?)

氏:LetaBot は UAlberta ボットのフレームワークに基づいて構築されました [GitHub 上の UAlbertaBot の最新情報]、そのフレームワークは非常にモジュール化されているためです。時間が経つにつれて、鉱物収集アルゴリズムや壁構築アルゴリズムなどのモジュールをさらに追加していきました。

ピップ:StarCraft をプレイする上で、ボットを使用すると最も簡単に達成できる要素はどれですか?

氏:ボットにとって StarCraft の最も簡単な要素は次のとおりです。

- 即時解決を必要としない要素 (したがって、リアルタイムの制約が少なくなります)。 [StarCraft を知っている方のために例を示します:] 私の壁構築アルゴリズムでは、壁を計算するのに数秒かかります。これは、最初の補給倉庫は 5 つの追加の労働者ユニットが構築された後にのみ構築されるためです。

- 数学的に簡単に定式化できる要素。この例としては、鉱物収集の最適化が挙げられます [鉱物は、ゲーム内で移動して採掘するリソースです]。往復時間を短縮したいと考えています。これは次のことに関連します。待ち行列理論

- スクリプト化された動作で十分な要素。 RTS ゲームでは、これらのリソースは別の場所 (新しい建物の建設など) で使用できるため、通常はユニットをキューに入れたくないとよく知られています。しかし、生産施設が常に生産していることを確認したいと考えています。これは StarCraft ではマクロと呼ばれます (技術的にはマクロ管理のユニット生産の側面です)。ボットのマルチタスクにより、すべての生産施設を常に監視し、すべてのユニットが常に 1 つのユニットだけを生産していることを確認できるため、このユニット生産ステップはボットにとって簡単です。

YouTubeで見る

ピップ: そして、現時点でボットで複製することが不可能な要素 (ある場合) はどれですか?

氏:驚かれる方もいるかもしれませんが、ボットは人間のプレイヤーよりも 1 分間に多くのアクションを実行できるにもかかわらず、微細な管理能力は依然として標準以下です。ボットは個々のユニットをより速く制御できるため、一撃離脱テクニック(ダメージを与えてから危険を回避する)を使用できますが、どこで、いつ、どのように攻撃/撤退するかを決定することは依然として問題です。

ピップ: コンテストにはかなりの人種が存在するようです。ボットチャレンジに関しては、それらはほぼ同等ですか? それとも、あるレースを他のレースよりもプログラムする方が簡単ですか?

氏:ボットにとってマイクロ管理は難しいという事実により、プロトス種族は他の種族ほどマイクロ集中的ではないため、プロトスボットを作成する方が簡単です。単に攻撃して移動するだけで、かなり遠くまで到達できます。

Terran は、ほとんどのユニットがボットが各ユニットに対して個別に実行できる一撃離脱戦術が可能であるため、強力である可能性があります。これに関する主な問題は、地形/経路探索の処理にあります。 Terran のもう 1 つの難点は、大きなユニットの塊を持った場合にのみ強力になることです。したがって、序盤のゲームを生き残るのはより困難です。しかし、Terran ボットがゲーム序盤から抜け出すと、通常は Protoss ボットや Zerg ボットを圧倒します。

Zerg は側面の動き、軍隊の包囲、Mutalisk への嫌がらせ、その他多くの微細なテクニックに大きく依存しているため、おそらくボットをプログラムするのが最も難しいでしょう。

ピップ: あなたはしばらくコンテストに参加していますが、StarCraft をプレイするためにボットをプログラムしていることに気づきましたか、それとも別のボットを倒すためにボットをプレイすることに集中していますか?基本的に、私が興味を持っているのは、これらの AI が理論的に人間と対戦したり、人間に勝つことができるのかどうか、それとも互いに戦うように構築されているのかどうかです。

氏:2014 年のトーナメントでは、ほぼすべてのボットがゲーム序盤の防御力を欠いていることをボットに悪用させました。そのため当時、私は他のボットを倒すことができるようにボットを作成していました (私のボットはバンカーラッシュ当時のボット)。 Computational Intelligence and Games (CIG) 2015 トーナメントの後、私はラッシュ ボットがナンバー 1 の座に最後の日を迎えたことを目にしました。 ZZZKbot という名前の洗練された 4 プール ボット [4 プールは、できるだけ早くスポーン プールを構築し、敵に基本ユニットの波を投げ込むオールイン戦略です] が CIG 2014 トーナメントで優勝しました。私の予測では、ボット開発者は、勝ちたければ初期のゲームを開発する必要があることに気づくだろうと予想していました。

数か月後の AIIDE (人工知能とインタラクティブ デジタル エンターテインメントのトーナメント) では、ZZZKbot が 2 位に落ち、私の 2 Rax SCV ラッシュ ボット [これは労働者ユニットとスペースマリーンを敵に投げつける 2 つの兵舎を備えたビルドです] が 4 位になりました。 CIGでの1位がAIIDEで10位になりました。そこで、それまで開発していたマクロ モジュールをボットに追加したところ、ボットはマクロ指向のプレイ スタイルに切り替わりました。私のボットの最新バージョン (残念ながら SSCAIT には完成が間に合いませんでした) は、私が知っている初期の攻撃性にもついに対処できるようになりました。したがって、基本的に CIG 2015 の後、私は他のボットの欠点を利用して勝とうとすることを放棄し、代わりに人間とボットの両方を倒すことができる一般的なマクロ プレイ スタイルに焦点を当てました。

YouTubeで見る

Pip: LetaBot を使って解決しなければならなかった最も困難な課題は何ですか?

氏:ゲーム序盤の攻撃性を抑えながら、速い展開を目指します。ボットがゲーム中盤に達すると、そのマルチタスクは大いに役立ちますが、ゲームの初期段階では、それを利用するのに十分なユニットがありません。 Dennis Soemers からのテキストマイニングによるビルド命令と、CardinalAllin という TeamLiquid ユーザーの助けにより、私のボットは敵軍に適応して中盤まで到達できる機能を備えました。

ピップ: 今年これまでの SSCAIT でのハイライトは何ですか?誰のボットが最も興味深いと思いましたか?その理由は何ですか?私は実際には Starcraft プレイヤーではないので、誰がユニットをうまく使っているのか、興味深い戦略を持っているのか、あるいは彼らのプレイ方法に予期せぬ画期的な進歩があったのかどうかを知るのは良いことです。

氏:今年はザーグ選手が復活した年だ。これまでに次のようなことがありました。

- ZZZKbot: これまでで最も洗練された 4 プール ボット
- Marian Devecka: このボットの最新バージョンは 3 つのユニット (Zergling/Hydralisk/Lurker) に焦点を当てています。これら 3 つのユニットはゲーム終盤には十分ではありませんが、このボットからのゲーム中盤の攻撃は、その事実を補うのに十分な破壊力があることが証明されています。
- tscmoop: すべてのユニットを使用できるボット [理論的にはより多用途になります]。序盤の守備と終盤のゲームプレイは優れているが、中盤の攻撃を阻止するのにまだ問題がある。

さらに、SCV (テラン ワーカー ユニット) の他の SCV を修復する機能を利用して準々決勝に進出した Stone というワーカー ラッシュ ボットもあります。

YouTubeで見る

つまり、昨年からの最大の変化は、ゲーム序盤の攻撃性がより激しくなったということですが、同時にゲーム序盤のディフェンスが強化されたということです (冗談です (ランプは守備的な位置として使用できるチョークポイントです) :)))。

これらの変更は、焦点がゲーム中盤の攻撃と防御に移ることを意味します。私の予測では、次のトップの CIG (それが先の場合は AIIDE) ボットは、ゲーム中に強力なプッシュを実行できるボットと、そのようなプッシュを阻止できるボットで構成されるでしょう。トップ 3 に 1 ベース ラッシュ ボットはもう存在しません。このトーナメントは、それらが存在する最後の主要な StarCraft AI トーナメントになります。今後、(主要な)トーナメントで勝つためには、すべてのボットを拡張する必要があります。

お時間をいただきありがとうございました!

SSCAIT の準決勝と決勝は、1 月 30 日の午後 8 時 (CET) (グリニッジ標準時午後 7 時) に開催されます。Twitch経由で視聴できます

*ピップは説明にとても感謝しています。さもなければこのダジャレは頭上を飛んでいたでしょう。