私はナイフを使ってパンにバターを塗っています.
しかし、その目的のためにナイフを使用する意味は本当にありますか? バターだけでできますか?
Node.js - 小さなコマンドライン ツールから始まり、LinkedIn Mobile、MySpace、ゲームなどの大きなアプリケーションまで、さまざまなユース ケースに対応するアプリケーション プラットフォームです。
このプラットフォームには多くの Web 関連のライブラリとツールがあるため、その場合、特に JavaScript でのコーディング (Web にとって何が良いでしょうか?) を使用するのは非常に便利です。
Socket.IO - Web ブラウザーとサーバー (この場合は node.js) の間で信頼性の高いリアルタイムの双方向通信レイヤーを確立するために、多くの Web トランスポートを利用する特定のライブラリです。
HTML5は、ブラウザー ベンダー (Chrome、Firefox、IE など) によって実装される一連のテクノロジです。キャンバス、webgl、オーディオ/ビデオ要素、websockes などのこのテクノロジは、多くのものに依存しています。WebSocket の場合、サーバーと通信する必要があります。そして、サーバーがなければ、それらは役に立ちません。
サーバー プラットフォームとして node.js を使用する場合、選択肢はほとんどありません。最も一般的なのは、socket.ioまたは純粋な websocketsを使用することです。
特に Web で最も一般的なマルチプレイヤー アーキテクチャはclient<>serverです。つまり、クライアントが通信する中央サーバーが少なくとも 1 つあるということです。この場合、サーバーはほとんどの意思決定とすべてのゲーム ロジックを実行し、レンダリングのために必要なデータのみをクライアントに送信します。
別のオプションがあります: p2p (Peer to Peer)で、WebRTCで可能です。しかし、ほとんどの一般的なブラウザーでの実装が不足しているため、商用利用の準備はまだ整っていません。この場合、すべてのクライアントは同じゲームの状態を制限し、ゲーム セッション内のすべての (ほとんどの) ピアに対して相互承認を得て、自分で決定を下す必要があります。
サーバー<>クライアントから開始することをお勧めします。これは、ほとんどの場合に適しているだけでなく、多くの点でより単純であるためです(逆も同様です:))。
PHP、.Net、Java、Ruby、Python、C/C++ などの他のサーバー側プラットフォームも使用できます。開発の途中で役立つ便利なライブラリへの快適さとアクセスの問題です。