目次

Battle Dronesは、繰り返しのプレイテストを開発の指針にすることで、AI製のブラウザゲームがどこまで進化できるかを示している。最も独特な機能は、専用ゲームサーバーを使わず、音で近くの端末同士をつなぐマルチプレイだ。

要点#

  • Simon Willisonによると、Battle Dronesは12回の大規模な改良とコーディングエージェントによる321件のコミットを経て作られたが、本人はコードをほとんどレビューしていない。
  • このブラウザ版RTSはモバイルとデスクトップに対応し、3Dユニット、ランダムマップ、サバイバルチャレンジ、AI対戦相手を備えている。
  • 近くの端末同士がスピーカーとマイクでゲーム情報を交換できる。ただし、このマルチプレイ機能のテストは限られている。
  • 最大の教訓は、コーディングエージェントに測定可能なゲーム上の課題を与え、変更が実際のプレイを改善したか確かめることだ。

遊べる内容#

Battle Dronesは、資源を集め、基地を建設し、地上部隊と航空部隊を指揮するリアルタイムストラテジーゲームだ。ブラウザで動作し、3DグラフィックスにはThree.jsを使っている。

Willisonの2026年10月20日の投稿によると、建物9種、地上車両7種、航空機6種、歩兵ユニット3種が登場する。プレイヤーは5つのバイオームにまたがる6つのマップから選ぶか、再利用可能なシード値から回転対称のマップを生成できる。

まずはSkirmishで資源管理と操作を覚えよう。Last Standでは敵基地の代わりに攻撃部隊が次々と押し寄せ、AI vs. AIでは内蔵AI同士の対戦を観戦できる。別のAgent vs. Agentモードでは、言語モデルがツールを通じて軍を操作し、その判断を調べるための記録とデバッグビューアーも用意されている。

音によるマルチプレイの意義#

マルチプレイモードは、マイクが音を拾える範囲にある端末間で音声メッセージをやり取りする。WillisonはノートPC、iPhone、iPadの間で試したと報告しているが、テストする時間はほとんど取れていないと明言している。

実用上の利点は、ホスティングの負担が減ることだ。静的なブラウザゲームなら、専用のマルチプレイサーバーを維持せずに配信でき、近くのプレイヤーは端末の音響機器を使って通信できる。ゲーム自体は引き続きブラウザに配信する必要があり、音が担うのはプレイヤー間の接続だ。

これはローカルマルチプレイの実験として捉えよう。元記事には、環境ごとの接続距離、帯域幅、信頼性の実測値はない。周囲の騒音や長時間のプレイにどこまで対応できるかも確認されていないため、別のゲームに採用する前に検証が必要だ。

ゲームプレイを改善したもの#

Willisonによると、初期版はRTSらしい見た目でも、夢中にはなれなかった。改善のきっかけとして挙げているのは、「もっとずっと面白くして」という大まかな指示だ。その後Claudeは何時間もかけて仕組みを追加し、対戦シミュレーションを実行した。

その結果、序盤の戦略、戦場の目標、残骸の回収、特殊攻撃が加わり、プレイヤーの選択肢と領土を争う理由が増えた。エージェントが書いたリリースノートによると、難易度NormalでのAI同士の1,200試合で、25分経っても決着しない試合は14%から0.9%に減った。また、スクラップ量で800以上の差をつけられた側が勝つ割合は、24%から46%に上昇したという。これらは報告されたシミュレーション結果であり、人間が楽しめることを独立に裏づける証拠ではない。

Archipelagoマップからは、より具体的な設計上の教訓が得られる。島の目標を確保するにはCondor輸送機で運んだ歩兵が必要で、それまで使われにくかったユニットに明確な役割が生まれた。不要に感じるユニットがあるなら、プレイヤーがそれを選ぶ動機を変えよう。ユニットを増やすだけでは、問題が残ることがある。

この手法を応用するには#

同様のプロジェクトでは、まず1試合を遊べるようにし、うまく機能するかを確かめる明確なテストを用意しよう。Battle Dronesからは、次の4つの有用な手順が見えてくる。

1. コンテンツを増やす前に、資源収集、建設、ユニット選択、戦闘を実装する。 2. エージェントがバランスを繰り返し検証できるよう、自動対戦モードを追加する。 3. 試合の膠着や、対戦相手がほとんど使わないユニットなど、具体的な問題を伝える。 4. 自分でプレイし、その体験を報告されたテスト結果と比較する。

リプレイや同期型マルチプレイでは、シミュレーション結果の一貫性を初期段階から要件にしよう。Battle Dronesでは、ブラウザの数学関数のわずかな違いでリプレイがずれる問題が発生した。Claudeは対処として、Math.sin()やMath.cos()などの一部の関数を独自実装に置き換えた。

まだ確認が必要なこと#

Willisonは、このプロジェクトを大部分がバイブコーディングで作られたものと説明しており、TypeScriptのコードはほとんどレビューしていない。本人のプレイテストは「面白い」という判断を支えているが、コード品質、安全性、端末間の互換性を保証するものではない。

費用も不明確なままだ。開発記録には夜通しの実行や大量のトークン消費が記されているが、支出総額は示されていない。同じ手法を試すなら、長時間のエージェント処理を始める前に予算を決め、使用量を記録するべきだ。ホスティング費用が安くても、開発費用が安いとは限らない。

次の一歩#

Battle DronesでSkirmishを1試合プレイし、わかりにくさやテンポの悪さを感じた場面を1つ具体的に記録しよう。その気づきを、次の開発タスクにする。

出典: https://simonwillison.net/2026/Oct/20/battledrones/

目次