2

ゲーム開発に手を出し始めたばかりで、単純なマルチプレイヤー ゲームを作成したいと考えていました。マルチプレイヤー ゲームの主要な通信プロトコルとして HTTP を使用することは可能ですか? 私のゲームは 1 秒間に複数のリクエストを行うのではなく、数秒ごとに 1 つのリクエストを行います。クライアントはモバイル デバイスになります。

私が尋ねている理由は、伝えられるところによると、スケーリングが良好で、ノンブロッキング リクエストをサポートし、「数千の同時ユーザー」を処理できると報告されている Tornado を使用してみるのは興味深いかもしれないと思ったからです。

したがって、私のクライアントは HTTP リクエストを作成でき、ゲーム サーバーに通知するものがあれば、リクエストに応答します。これは、一部の人々が COMET デザイン パターンと呼んでいるものを示していると思います。

ソケットレベルで作業する方がオーバーヘッドが少ないことは理解していますが、ゲームの要件を考えると、これが実現可能かどうか疑問に思っていますか? それとも私はただ頭がおかしいのですか?

前もって感謝します。

4

5 に答える 5

3

Q:マルチプレイヤーゲームの主要な通信プロトコルとしてHTTPを使用することは可能ですか?

A.通信プロトコルとしてHTTPを使用することは、ゲームにとって意味があるかもしれませんが、おそらくそうではありませんが、それはあなたが決めることです。私は、Windows Mobile、Blackberry、Android、iPhone用のアプリケーションを10年以上開発してきました。CE1.0までさかのぼります。それを念頭に置いて、ここに私の意見があります。

まず、テディが提案したようにRFC3205を読むことをお勧めします。それは私の提案の理由を詳細に説明しています。

一般に、HTTPは次の理由で優れています...

  • ブラウザベースのゲーム(クライアントを作成しないフラッシュまたはJavaScript)を開発している場合は、HTTPを使用します。これは、HTTPが組み込まれているため、使用できる可能性が高いためです。
  • あなたはどこでも超安価でまともなスクリプトでhttpサーバーホスティングを得ることができます
  • 利用可能なツールがたくさんあり、ドキュメントもたくさんあります
  • 始めるのは簡単です

HTTPは悪いかもしれません...

  • HTTPは、単純なTCPサービスと比較して、帯域幅の点で大きなオーバーヘッドをもたらします。たとえば、Omegle.comは420バイトのヘッダーデータを送信して、9バイトのペイロードを送信します。
  • 本当に彗星/長いポーリングが必要な場合は、サーバーが何を言っているかに取り組むのではなく、サーバーが正しく動作するようにする方法を理解するのに多くの時間を浪費します。
  • httpトラフィックの安定したストリームは、処理と帯域幅の両方でモバイルデバイスに過負荷をかけ、ゲームのパフォーマンスに費やすリソースが少なくなる可能性があります。
  • 独自のTCPサーバーを作成する方法を知っているとは思わないかもしれませんが、それは本当に簡単です。

サーバーとクライアントを作成している場合は、TCPに直接アクセスします。すでにPythonを知っている場合は、ツイストネットワークライブラリを使用してください。チュートリアルに従うだけで、1時間ほどで簡単なサーバーを起動できます。

LineReceiverの例で、任意のTelnetクライアントでテストできる非常にシンプルなサーバーを確認してください。 http://twistedmatrix.com/projects/core/documentation/howto/servers.html

于 2009-11-02T06:24:20.057 に答える
0

このすべてのテクノロジーを試してみたい場合は、試してみることができます。Webサイトの例が何かを通過するのであれば、竜巻は合理的な選択のように思われます。ただし、必要な応答を前述の速度で提供するには、単純なサーバー側のWeb言語で十分です。ここでは、パフォーマンス特性は無関係である可能性があります。

COMETメソッドは、HTTP接続を長期間開いたままにする場合です。これは主に、データの「サーバープッシュ」のためにあります。しかし、通常はこれは必要ありません。通常、繰り返し要求を行い、応答を個別に処理する方がはるかに簡単です。

于 2009-10-14T09:19:08.867 に答える
0

ターゲット プラットフォームがモバイル デバイスである (およびそれに伴う帯域幅が限られている) 場合、HTTP は、箱から取り出した最初のツールではありません。

于 2009-10-14T04:28:51.793 に答える