私はウェブブラウザベースのマルチプレイヤーゲームを作っています。私は、リアルタイム性を考慮してWebSocketが通信を処理する最良の方法であると判断しました。クライアントはHTML5キャンバスを使用してゲームとWebソケットをホストと通信します。PHPゲームサーバー、複数のTCPクライアント?
私は、ホスティングプロバイダによって好まれるように、ゲームをホスティングするためにPHPを使用することに決めました。私は以前はPHPを使用していませんが、JavaのWebソケットと同様のことをしましたが、マルチスレッドに大きく依存しています。
私は、複数のクライアントを持つPHPソケットに関するチュートリアルをいくつか見てきました。それらのほとんどは、各クライアントの新しいプロセスをフォークするようなことを行います。私は絶えず走っているゲームループがあるので、これは適切ではないと私は思う。
私が達成しようとしているのは、接続時に新しいクライアントをリッスンし、クライアントの現在のリストとデータを交換し、ゲームループを一括して実行するときに、各クライアントにポートを割り当てる方法です。私は助けを必要と
場所は以下のとおりです。
- 見つけ、新しいクライアントにポートを割り当て、そのポートのクライアントに通知し、彼らは外したときに、それをクリーンアップする方法。
- ゲームのループをブロックすることなく、上記と他のすべてのソケットトランザクションを実行する方法。部分的なチャンクでクライアントからのメッセージを受け入れ、完全なメッセージにのみ応答することは容認できる。
これらの目標を達成するための技術的アドバイスはありますか? 私はこれがすべてPHPの質問に多すぎるとは思わないが、私が間違っている場合は私を修正する!
私が理想的にはサーバー側を達成したいと思っている疑似コード。どの機能もブロックする必要はありません。 アレイクライアント。
while(gamerunning)
{
CheckForNewClients();
GetStatusFromClients();
DoGameUpdate();
SendGameStateToClients();
}
[更新] 興味がある人々のために、私は、より多くの意味を作るように見えたとしてではなく、実際のWebサービスよりも(特にJava、および「TooTallNatesのWebソケットライブラリを使用して)ウェブソケットをサポートする専用のアプリケーションを作成しました偶然にも、ほとんどのWebブラウザはセキュリティ問題のためにビン内のWebソケットを盗んだようです。
Node.jsを実行できるVPSなどを入手できる場合は、ノードパスを使用することを強くお勧めします。 Node.jsのマルチプレイサーバーはケーキです。 –
node.jsはWebサイトのクライアント側のソリューションではありませんか? –
いいえ、nodejsは短くて高速で、イベントドリブンで、サーバーを書くためのサーバーサイドのjavascriptです。 –