こんにちは私はnode.jsとsocket.ioを使用してリアルタイムマルチプレイヤーゲームを構築しようとしています。
さて、コーディングの観点からそれ自体を実装することはそれほど問題にはなりませんが、従来のhttp要求/応答Webプログラミングモデルから来ているので、トラフィックとサーバーの負荷の観点からこれがどれほど高価になるかわかりません。基本的に、ゲーム中、プレーヤーのブラウザはリアルタイムのマウス入力イベントを追跡し、同じゲーム内の他のすべてのプレーヤーにそれらをブロードキャストし続ける必要があります。
これが例です。たとえば、アバターが画面上のマウスポインターの周りをたどり、画面上の残りのプレーヤーにリアルタイムでブロードキャストする必要があるとします。私は次のようなことをします:
// client side
$(document).on("mousemove", function(event){
io.emit("coordinate", {x: event.pageX, y: event.pageY});
});
およびサーバー上:
// server side
io.sockets.on("connection", function(socket){
...
socket.on("coordinate", function(coordinate){
socket.get("username", function(err, username){
socket.broadcast.emit("move", {username: username, coordinate:coordinate});
});
});
...
});
これは機能するはずですが、これにはブラウザが1秒あたり数回のイベントをサーバーに送信する必要があり、その後、同じゲーム内の残りのプレーヤーにそれらをブロードキャストする必要があります。これが意味することを心配しています。ただし、送信されるデータの各フラグメントのサイズはそれほど大きくありません(基本的にはx座標とy座標です)。これが高すぎると、このゲームがどんなに素晴らしいものであっても、私はそれを出荷できないと思います。誰かが私を教えてもらえますか?ありがとうございました。
[編集]明確にするために、私はこのアーキテクチャをより効率的にする方法について質問していません。このタイプのシステムがシステム負荷(およびメンテナンスコスト)の観点から十分に現実的かどうかを知りたいだけです。通常のWebサービスの場合、ページビュー数を見るだけでコストを見積もることができますが、WebSocketはまったく新しい分野です。の、だから私は聞きたかった。