綱の向こう側

8人のプレイヤーで試合をテストするため、同じコンピューターでゲームのウィンドウを8つ開きました。それぞれのウィンドウでは、AIが誰かの代わりに遊んでいます。戦いの途中で、そのうちの一つを閉じて、開き直しました。
そこまで来るのに、この章すべてが必要でした。
まずは一対一から
綱引きは、綱の向こう側に人がいるときがいちばん面白いものです。だからオンライン対戦は、早い段階から用意しました。プレイヤーの一人がSteamでルームを作り、友達を招待します。それぞれが陣営とパークを選べば、試合が始まります。試合が終わると、Rematchを押すことで、両者が同じ選択のまま、すでにReady状態のルームへ戻ります。
興味深いのは、インターネットを通らないものです。一つの戦いには片側90体の部隊がいて、それぞれにHP、目標、経路、クールダウンがあります。そのすべてを送り続けるのは重く、壊れやすい。だから送りません。
通信チェス
手紙でチェスを指し合う、通信チェスの二人を思い浮かべてください。それぞれが自宅に盤を持っていて、郵便で届くのは指し手だけです。「ナイトをf3へ」。誰かが手紙を書かずに駒を動かさない限り、二つの盤はずっと同じままです。
Castle Arenaのオンラインも同じように動きます。二台のコンピューターが同じシミュレーションを並べて動かし、交換するのはプレイヤーの命令だけです。「ここに建てる」「あそこをアップグレードする」「ここで救出を使う」。あなたの命令は、両方のマシンでおよそ200ミリ秒後に実行されます。
この比較が通じなくなる点があり、そこがいちばん難しいところです。チェスには乱数がありません。Castle Arenaにはあります。クリティカルヒット、回避、抽選。もし各コンピューターが自分でサイコロを振れば、最初の一撃で盤は分かれてしまいます。だから、偶然のすべては、両側で同じシードから始まる一つの乱数列から出てきます。ルールが別の場所から乱数を取ると、自動テストが失敗します。
同じ始まりと同じ命令があれば、二台のマシンは、最後のHPの一点まで同じ戦いに到達しなければなりません。
1秒に一度ほど、二台は戦闘全体の指紋(チェックサム)を比べます。違いがあれば、二つの別々のゲームが静かにずれていくのを許すのではなく、試合を止めます。
ただで手に入ったもの
この方式には、おまけの恩恵もありました。同じ命令から同じ戦いが生まれるので、リプレイはとても小さくなります。保存するのは、試合の設定、シード、そして命令のリストだけです。0.5倍から8倍の速度で見られ、どこへでも飛べます。
プレイ中、スカウトが各レーンの各秒の激しさを記録し、大きな瞬間を記録します。救出、建物の崩壊、城の陥落などです。試合後、Highlightsは30〜60秒のリールにまとめます。城の陥落はスローモーションになります。結果画面のグラフもクリックできます。ポイントをクリックすれば、リプレイがその瞬間から開きます。「あれ、北のトレイルをいつ失ったんだっけ?」という問いへの、最も速い答えです。
誰かが落ちたとき
接続は切れ、ゲームは固まり、コンピューターは再起動します。一対一では、相手が消えると試合は一時停止し、2:30の再接続カウントダウンが表示されます。切断されたほうは、ゲームを開き直してRejoin matchを選ぶだけです。残っているコンピューターが戦いの完全なスナップショットを送り、そこから二人は再開します。
各側により多くの人を
同じ流れで、対戦モードも増えました。モードはレシピのようなものです。陣営を選ぶ、ランダムにする、ミラーにする、ドラフトする。そこに48のコマンドを重ねられます。「救出なし」から、自分の領域にコインが降るものまで。各レシピは短いコードになり、-rr3-nt-cc のように、コピーして友達に送れます。
その後、2v2と3v3のチーム戦が加わりました。各プレイヤーは自分のワーカー、ゴールド、救出を持ちます。城、領域、戦場の部隊はチームのものです。そこで一つの疑問が生まれました。3v3の城は、3倍の強さにすべきではないか?
測ってみました。
| 形式 | 試合時間 |
|---|---|
| 1v1 | 10.1分 |
| 2v2 | 12.1分 |
| 3v3 | 13.0分 |
城のHPをプレイヤー数だけ掛けても、試合時間は約0.3分しか変わりませんでした。試合は、防衛が崩れたときに決まるのであって、城のHPバーで決まるのではないのです。そこで城はどの形式でも同じにし、代わりに側ごとの部隊の上限を90、135、180と増やしています。
八人で一つの戦い
チーム戦のオンラインは、最初は、あなたと友達がそれぞれAIの味方を連れて戦う形でした。その後、2v2から4v4まで、どの席にも人が座れるようになりました。
二人の場合、コンピューターは命令を直接やり取りします。八人では、全員を全員につなぐと28の接続が必要になり、それぞれが独自の方法で失敗する可能性があります。そこでオンラインのチーム戦は星型です。ゲストはホストとだけ話し、ホストが他の全員に命令を中継します。
そして、4v4で誰かが落ちたとき、試合を止めて一人を待つのは、残りの六人にとって不公平です。
| 誰かが切断したとき | 1v1 | 4v4 |
|---|---|---|
| 試合 | 一時停止して待つ | 続行する |
| 空いた席 | 空いたまま | AIがすぐに引き継ぐ(全コンピューターで同じターンから) |
| 戻ってきた人 | スナップショットを受け取って再開 | スナップショットを受け取り、他の人に追いついてから、席を返してもらう |
八つのウィンドウが教えてくれたこと
グラフィックなしのテストでも、すべての形式で切断と復帰を模擬し、どれも同じ戦いに行き着いていました。しかし、実際にゲームを開いてみると、2v2では4つのウィンドウ、4v4では8つのウィンドウで試したことで、どのテストも捕まえられなかった4つの問題が見つかりました。
- 始まらないルーム。 全員がデフォルトの陣営で入ってきました。チームは陣営の重複を許さないので、試合は始まりません。今ではReadyを押した時点で、味方との重複がすぐに警告されます。
- 参加をあきらめるゲスト。 八つのウィンドウが同時に読み込むと、ホストの応答が遅くなり、参加リクエストは一度しか送られませんでした。今では最大20秒間、繰り返し送ります。
- 七人が待つ一人。 最初のバージョンでは、スナップショットを受け取った時点で席が戻されるため、残りの七人は、その人の戦場が読み込まれるまで約30秒待つことになりました。今では、AIが席を保持し、プレイヤーが追いつくまで待ちます。
- いちばん遅いPC。 試合の準備に8秒以上かかった人は、最初のターンの前にAIに席を奪われました。今では、まだ読み込み中の人に45秒が与えられます。
閉じて開き直したウィンドウでも、試合は続きました。最後には、八つすべてが同一の戦いで終わりました。
まだ足りないもの
ホストが切断して戻らなければ、ルームを引き継ぐ者はおらず、そのチームは負けます。また、命令は、たとえ味方同士であっても常にホストを経由します。どちらも今後の課題として書き留めてあります。
一つの戦いに八人がいれば、八通りの遊び方を求めます。そして、そこで陣営が登場します。
— チーム





