ゲーム エンジン (プレイヤーの動きなどを計算する) がサーバー上で実行され、レンダリングとキーボード/マウスの処理がクライアントによって行われる小さなサッカー ゲームを設計しています。使いたいサーバー(Haskell)について
- クライアント/サーバー通信用の Happstack
- Yampa / ゲームエンジンの Reactulate
約 20 ミリ秒ごとに、クライアントはキーボードとマウスのイベントを HTTP GET 経由でサーバーに送信し、現在のゲーム ステータス (JSON でエンコードされたボールとプレーヤーの位置) を受信してレンダリングする必要があります。ゲーム ループ、入力処理、およびレンダリングに SDL インフラストラクチャを使用することを考えています。
サーバーは基本的に 2 つのスレッドを実行します。happstack サーバーは HTTP GET を受信し、キーボード/マウス コマンドをキューに入れ、2 番目のキューから現在のゲーム ステータスを読み取り、HTTP GET リクエストに応答します。
2 番目のスレッドは、Yampa Arcade の論文で説明されているように、Yampa ゲーム エンジンを実行します。ゲーム エンジンは新しいラウンドを可能な限り迅速に (ティックなしで) 計算し、結果をレンダリング キューに入れます。
一般的な質問: これは実行可能なアーキテクチャのように見えますか?
具体的な質問: サーバー側のレンダリング キューをどのように設計しますか? これには Chan を使用しますか? ゲーム エンジンがクライアント側の「カチカチ」よりも平均して速い場合、キューはどんどん長くなります。これは、Chan でどのように処理できますか?
あなたのコメントは大歓迎です!