2017-02-07 5 views
0

私はSpring Websocketを使用して小さなWebゲームを開発しようとしています。私はクライアントにゲームデータの更新を送信する最良の方法が何であるかは不明です。Websocket Game - データをバルクまたは一定のストリームで送信する

各ゲーム更新の最後に一括更新のデータをすべて送信する方がよいでしょうか?またはゲーム内の各オブジェクトが更新されるたびに、個々のデータパケットを絶えず送信する方が良いでしょうか?

答えて

0

私はこの質問を1週間か2日前にしていたので、私は先に進みテストゲームを作成し、これをテストするプロジェクトの3つの枝を作りました。

短答:Spring Websocketを使用すると、バルクの更新がはるかに高速になります。

私が作成した最初のブランチは、 "Packet Spread"ブランチでした。それは、ゲーム世界の各オブジェクトについてクライアントにデータを送信し、それがループして、ゲームティック中にその属性を更新した。

私が作成した2番目のブランチは、 "パケットブロブ"ブランチでした。ゲームチックで更新されたすべてのデータを収集し、ゲームチックの最後に1回のバルク更新で送信しました。

また、元のパケットスプレッドブランチと同じように動作する「パケットスプレッドスレッド」という3番目のブランチを作成しました。ただし、送信前にすべてのゲームデータを別のスレッドに渡しました。

私は大量のオブジェクトを作成し更新したベンチマークで3人のプレイヤーで各ブランチをテストしました。

パケットの広がりはゲーム更新ごとに平均約40-70msです。

パケットブロブゲーム更新ごとに8-16msについて平均をネジ

パケットスプレッドは、ゲームのアップデートごとに20-40msを平均しました。

私は、Spring Websocketを介してデータを送信するときにオーバーヘッドが多いので、複数の小さなパケットの代わりに大きな単一のパケットを送信するほうが効率的になると思います。

関連する問題