2017-12-18 12 views
3

私はUnityを使用してマルチプレイヤーRPGゲームをプログラミングしています。戦闘シーンでは、プレイヤーがどの攻撃を使用しているかを判断する必要があります。プレイヤーが攻撃ボタンを押すと、プレイヤーはポストリクエストをサーバに送信し、ポストリクエストが合法であるかどうかをチェックし、リクエストが合法であれば、サーバはデータベース値を「オン」にするか、それは例えば "attack_determined"と呼ばれる "0"から "1"になる。データベースの値を5秒間にチェックするのは、10000以上のようなユーザー数が多いと高価ですか?

問題は、この値をチェックするためにhttpリクエストを再度行う必要があることです。バトルに最大6文字あり、すべての人がattack_determinedが0か1かをチェックしたい場合、攻撃要求ごとに6つのリクエストを行います。ユーザー数が10000に増えたと思っていません。私が使っているVPSサーバーに対するこれらの要求を処理することはとても難しいでしょう。リクエスト数を減らす方法はありますか?私はソケットを使いたくない、私はセッションやmemcacheを使うことを考えていた。私は、サーバー側にはPHP、Unityクライアント側にはC#を使用しています。

+3

これはちょうどインタラクティブなものを設計するための本当に悪い方法のようです。 –

+0

@DavidSchwartzに同意します。あなたのアーキテクチャを再考する必要があります。 – Eimsas

+3

Webソケットは、ブラウザ内のUIであったり、専用のソケットプロトコルではなくhttpを使用するクライアントアプリケーションである場合があります。これは、あなたがやろうとしていることに対して非常によく釣り合っています(そして、Webソケットサーバは現在450kのオープンな接続を持っています)。数秒ごとにHTTPのポーリング:私たちを即座に殺すだろう。他のすべてのトラフィックを同じWebソケットに結合すると、さらに優れたものになります。 –

答えて

6

私はソケット

使用WebSocketを

を使用する必要はありません。

スタンドアロンライブラリwebsocketを使用するか、UnityのネットワークAPIを使用してwebsocketを有効にすることができます。 Unity Network APIを使用する場合は、NetworkServer.useWebSocketstrueに設定するだけで有効になります。

有効になると、Unityはsocketからwebsocketに切り替わります。 WebGLアプリケーションで作業している場合は、assetstoreのwebsocketプラグインをご覧ください。

関連する問題