Epoch Street 1.0.0 には、ネット対戦が入っていません。作っていないからではなく、まだ出せる段階ではないからです。何が在って、何が残っているのかを書きます。
もう動いているもの
部屋を立てて、席にすわって、いっしょに1局遊ぶ——そこまでは動いています。テスト版では、テスターのみなさんに実際に触ってもらっています。
- 部屋(カスタムロビー) … 合言葉で入る部屋。2〜8人。席ごとに人/CPU/閉を選べて、ルール設定とプレイヤー設定はゲームと同じ画面がそのまま開きます
- クイックマッチ … 目標金額の帯(3つ)を選んで並ぶと、集まった人どうしで自動的に部屋ができます。遊ぶボードは運営が選んだプールから決まります
- 再参加 … 回線が切れても、戻れば同じ席に戻れます。いない間は CPU が代わりに打ちます
- 持ち時間 … 席ごとの時間。使い切ったその手番だけ CPU が代わりに打ちます(席を失うわけではありません)
- 全員一致での早期終了 … 長くなりすぎた対局を、全員が賛成したときだけ終われます
- 自作ボード … 部屋のボードは、持っていない人にも配られます
部屋 — 合言葉で入り、席にすわるdesync が起きない作りにしました
ネット対戦でいちばん怖いのは、みんなの画面が少しずつ違う盤面になっていくことです。Epoch Street は、そこを構造で閉じました。
対局中 — 右上は席ごとの持ち時間サーバーが本物の対局を動かしています。 ゲーム本体と同じエンジンを、サーバーが画面なしで走らせています。クライアントが送るのは「何をしたか」という決定だけで、サーバーがそれを検証し、順番を決めて、全員に配ります。みんなは同じ決定を同じ順番で受け取るので、盤面がずれる余地がありません。
CPU の思考もサーバーが担当します。 エンジンの中で唯一の小数計算は CPU の判断のところにあって、小数は機械や OS によって答えが変わることがあります。そこをサーバーだけの仕事にすると、クライアント側の再現は整数と共有の乱数だけになります。機種や OS の違う人が同じ卓に着いても、盤面は1ビットも違いません。
ボードのバイトを照合してから始めます。 同じ名前のボードでも中身が違えば、最初の1手でずれます。部屋は遊ぶボードのハッシュを広告し、参加者は自分が実際に読んだファイルのハッシュで答えます。合わない人には、その部屋のボードそのものが配られます。
なぜ 1.0.0 に入っていないのか
実機を使った動作テストが終わっていないからです。自動テストは、2つのクライアントを本当に対戦させるところまで走っています(カジノのミニゲームが手番に割り込む場面も含めて)。それでも、回線の切れかた・機種・遅延のばらつきは、人の手元でしか出ないものがあります。
ですので 1.0.0 では、ネット対戦は画面ごと出していません。「一度出して引っ込めた」のではなく、まだ卒業していないという状態です。目安は 正式版 1.1 です。
⚠ ひとつだけ、はっきり書いておきます。正式版 1.0.0 とテスト版は、同卓できません。 エンジンの版は同じでも、正式版にはネット対戦の入口そのものが無いためです。
これから
残っているのは実機でのテストと、そこで出たものの手当てです。進んだらまたここに書きます。
いま遊べるのは、同じ画面を囲む2〜8人とチーム戦、そして CPU との対局です。あそびかたの基本 からどうぞ。