3

Counter Sstrike、WoWなどのゲームが使用する方法のように考えています。CSでは、多くの場合50 pingが発生しますが、その速度でオンラインMySQLデータベースに情報を送信する方法はありますか?

現在、プログラムが要求するオンラインPHPスクリプトを使用していますが、プログラムは最初にヘッダーと投稿情報を送信してから、通常のWebページとして結果を取得する必要があるため、これは非常に低速です。

これを行うためのより簡単で高速な方法が本当に必要ですか?TCP / IPについて聞いたことがありますが、これはここで使用する必要がありますか?PHPスクリプトを介して間接的にデータベースに接続するよりも高速な方法でデータベースに接続することは可能ですか?

4

3 に答える 3

3

TCP / IPは、次の3つのプロトコルで構成されています。

  1. TCP
  2. UDP
  3. ICMP

ICMPは、ネットワーク上の別のコンピューターにpingを実行するときに使用しているものです。

CounterStrikeのようなゲームは、以前に何をしたかを気にしません。したがって、あなたがしたことを再構築できるようにするために、完全性の要件はありません(これが、競合他社が彼らがしていることをテープで留めなければならない理由です)。これがUDPの使用目的です。データが配信または受信される保証はありません。ラグがそのような問題になる可能性があるのはそのためです-あなたはすでに死んでいて、あなたはそれを知らなかっただけです。

TCPは、データの送受信を保証します。UDPより遅い。

高速接続を実現するために注意すべき点はたくさんあります。ホップ数が少ないなどです。

于 2010-02-26T03:57:46.127 に答える
3

レイテンシーが重要なもののクライアントからサーバーへ?ノンブロッキングUDPを使用します。

少し遅くなる可能性のある信頼できるものについては、TCPを使用する場合は、非ブロッキング方式(select()、非ブロッキング送信など)で行うようにしてください。

UDPを使用する主な理由は、時間に敏感なデータがある場合です。生き物の位置が削除された場合は、最後のパケットを再送信するよりも、それを無視して次の位置のパケットを送信する方がよいでしょう。

そして、高性能ゲームでは、すべての呼び出しがデータベースへの呼び出しに解決されるとは思いません。(データベースが使用されている場合でも)データを時折、または重要なイベントで永続化するのがより一般的です。

httpの上にCounterstrikeなどを実装するつもりはありません。

于 2010-02-26T04:13:33.093 に答える
2

あなたが引用するようなほとんどのゲームは、これにUDPを使用します(プロトコルのTCP / IPスイートの1つ)。UDPは軽量でパフォーマンスが向上し、TCPの信頼性機能が必要ないため、このアプリケーションではTCPよりもUDPが選択されます。

ただし、これらのゲームには、通常CまたはC++で記述されたスタンドアロンのクライアントとサーバーがあることに注意してください。アプリケーションがブラウザベースであり、HTTPを介してこれを実行しようとしている場合は、長期間有効な接続を使用し、Cookieを含むヘッダーを可能な限り削除します。トルネードフレームワークはそこであなたにとって興味深いかもしれません。HTML5 WebSocketを調べたいと思うかもしれませんが、広範囲にわたるサポートはまだ公正な方法です。

Flash、Java、SilverLightなどのブラウザベースのプラグインをターゲットにしている場合は、UDPを使用できる可能性がありますが、これらのプラットフォームについて確認するのに十分な知識がありません。

編集:

また、言及する価値があります。ネットワークコードとプロトコルが十分に最適化された後でも、pingが高いプレーヤーのエクスペリエンスを向上させるためにできることがあります。

于 2010-02-26T04:08:10.987 に答える