Node.jsで Web マルチプレイヤー ゲームを作成することを考えています。これは、バックエンドとフロントエンドで同じ言語を使用することを意味します。それはリアルタイムで、各「部屋」に最大約20人になるので、いくつかの考えがあります:
すべてのユーザーが同じ時間に同じものを見ることができるように、すべてのユーザー間の遅延をどのように補正しますか? 私は、各プレイヤーの平均 ping 時間を追跡し、最も遅いプレイヤーを見つけ、他のクライアントにそれぞれの遅延時間 (ミリ秒単位) を通知して、全員が可能な限り同期されるようにすることを考えています。
バックエンドだけでなくフロントエンドでもゲーム コードを実行することを考えています (両方のエンドで JavaScript を使用しているため)。そうすれば、ゲームはフロントエンドでスムーズに実行され、同期が発生したときにわずかな不具合しか発生しません。また、不正行為者がバックエンド ゲームに同期されるため、フロントエンドの JavaScript ハッキングが最小限に抑えられます。
Should I receive player actions through the socket (keypresses), inform all other clients of the other players' actions and in the mean time 'playing' the game in the backend and send synchronisation information to everyone of the entire game state every once in a while to synchronise them?
What do you think? Are there more stuff I should consider or pay attention to?
Please post any thoughts or links to documentation or articles regarding multiplayer gaming.
EDIT: These are useful:
- Gaffer on Games - Very good articles by Glenn Fiedler on multiplayer game networking and physics
- The Quake3 Networking Model