11

ターン制のマルチプレイヤーiPhoneゲームを構築したいと思います。このゲームでは、プレイヤーを接続して世界の状態データを提供するために、どこかにゲームサーバーが必要になります。ゲームサーバーがどのように機能するかを理解しようとしているので、ゲームサーバーの設計と構築を開始できます。今まではWebアプリケーションの構築経験しかなかったので、当然、Webサーバーと同じように動作するようにゲームサーバーを設計したいと思っていますが、できますか?

過去に使用したASP.NETMVCWebサーバーは、クライアントがWebページデータの要求をサーバーに送信し、サーバーがHTML、XML、またはJSONを生成して、HTTPパケットでクライアントに返します。このプロセスはマルチプレイヤーゲームでもまったく同じように聞こえますが、クライアントがHTMLを要求しない可能性がありますが、XMLまたはJSONデータを要求することは理にかなっていますね。

だから私の質問は...

  1. ゲームサーバーはASP.NETMVCを使用して作成でき、私が設計したRESTful APIを使用してWebサーバーと同じように機能しますか?
  2. XMLまたはJSONデータがパックされたHTTPパケットを使用するよりも、ゲームデータを要求および受信するためのより良いアプローチはありますか?ゲームサーバーから返されるデータは少なくなります。
  3. RESTful APIを使用してWebサーバーからデータにアクセスすることは理にかなっていますが、RESTful APIを使用してゲームサーバーからゲームデータを要求することは意味がなく、実際、セキュリティの問題を引き起こす可能性があると思いますか?
  4. 最後に、まともなゲームサーバーを構築する方法の例を示す良いゲーム本を誰かが推薦できますか?

よろしくお願いします!

4

2 に答える 2

10

主な違いは、Webサーバーが(比較的)ほとんどまたはまったく状態情報を使用せずに、比較的静的なコンテンツを大量に生成することです。状態が使用されている場合でも、通常はセッションまたはユーザーに固有です。読み取りは書き込みよりもはるかに頻繁であるため、キャッシュはスループットの向上に役立ちます。また、Webブラウザーを信頼して、(比較的)信頼できる方法で一部の状態データとCookieを渡すこともできます。

それどころか、ゲームサーバーはほとんどの場合、クライアントからの更新を処理し、大量のグローバル状態(すべてのゲーム、プレーヤー、ステータス状態)を保持し、クライアントが要求したときにステータス更新をクライアントに送信します。キャッシングは不可能であり、クライアントが時刻を教えてくれると信頼することはできません。クライアントができる限りの方法で不正行為を試みると想定する必要があります。

すでに使用している標準の認証メカニズムを使用できるため、RESTAPIの使用はそれほど問題にはなりません。

本「 BeautifulArchitecture」の第3章では、オンラインゲームと仮想世界向けのスケーラブルなアプリケーションサーバーであるDarkstar(現在はRedDwarf )プロジェクトのアーキテクチャについて説明しています。RedDwarfの規模はあなたが望むものよりもはるかに大きいですが、この本はゲームサーバーを作成するときに対処する必要があることを説明しています。

于 2010-07-12T15:18:05.933 に答える
4

Webサーバーには1つの重要なコンポーネントがありません...

IE。彼らはステートレスです。Webのプラットフォーム全体(および一般にHTTPサーバー)は、ステートレスであるというパターンに基づいています。つまり、ページからページに切り替えるときにデータを保持しません。

制限を回避する方法があります。クライアント側:ブラウザが開いている間、セッションを使用してデータを保持できます。またはCookieを使用してデータを長期間保存します。サーバー側:データベースは通常、状態を長期間保存するために使用されます。それで...

  1. はい。ただし、ゲームセッションの状態を保存する量と期間によっては、ゲームサーバー/エンジンを個別に(Webサーバーとしてではなく)実行すると、拡張/拡張する余地が大幅に増える場合があります。将来。

  2. はい、いいえ... XML / JSONは、シンプルでプラットフォームに依存しないため、インターネット上でオブジェクトの状態を渡す方法です。独自のサーバーバックエンドを作成している場合と作成していない場合があるため、独自のソリューションを最初から作成することを検討する前に、 XML-RPCの使用を検討することをお勧めします。

  3. なぜあなたがセキュリティについて妄想しているのかわかりません。許容可能な要求/応答サイクルについてかなり厳密なアクセスポリシーを実装する場合、問題は発生しないはずです。前に述べたように、XML-RPCを調べてください。重要なのは、ユーザーが必要以上のゲームサーバーデータにアクセスできないようにすることです。

  4. いいえ、主に私がゲームを書いていないからです。ただし、私はクライアント/サーバーアーキテクチャアプリを作成した経験があり、ロケット手術ではありません。ベータ版が間もなくリリースされるGameDevelopmentStackExchangeFAQサイトへの参加を検討することをお勧めします。

于 2010-07-12T15:23:41.033 に答える