websocket を使用して、node.js の上にリアルタイム ターン ベースの戦略ゲーム サーバーを作成する予定です。html5 を適切にサポートする最新のブラウザーに対応する予定であり、下位互換性についてはあまり考慮していません。
提供されるゲームは、一度に少数のプレーヤー (たとえば 2 ~ 10 人) によってプレイ/観察され、チェスで使用され、www.chess.com で実装されているクロック タイマーを備えています。制限時間のあるゲームは最大で 1 時間続きます。制限時間のないゲームをプレイするオプションもあります。
サーバーは、プレイヤーの評価、プレイヤーのフレンド リスト、実行中/終了したゲーム状態の管理、およびゲーム クロックの実行を処理します。ゲームの状態はほんの少しの json で、1 ゲームあたりせいぜい数キロバイトです。
制約の 1 つは、実際のゲーム ロジックはすべて、サーバーではなくクライアントで実行する必要があることです。このため、クライアントまたはその対戦相手が誤動作している/悪意があるためにクライアントが違法な動きを通知した場合、無関係のクライアント (つまり、私のサイトを使用している他の誰か) がゲームの状態をロードするメカニズムが必要です。彼らのブラウザはバックグラウンドにあり、論争はそこで解決されます。
それは私の要件を要約しています。
これはおもちゃのプロジェクトではなく、多くのユーザーを獲得したいと考えているため、バックエンドのアーキテクチャとスケーラビリティを前もって考えたいと思います。私は一般的にnode.jsまたはWebサイトの展開について特に知識がありません。そのため、visアーキテクチャ、テクノロジー/ライブラリ、スケーラビリティ/プロキシ/ロードバランシング、クロックの実装方法、およびレイテンシの問題への対処方法に関するアドバイスや洞察、どこで/ゲームの状態の保存方法など、よろしくお願いします。