Websocket游戏 - 批量或以恒定流方式发送数据

时间:2017-02-07 05:21:58

标签: java websocket spring-websocket

我正在尝试使用Spring Websockets开发一个小型网页游戏。我不确定向客户端发送游戏数据更新的最佳方法是什么。

在每次游戏更新结束时发送批量更新中的所有数据是否更好在游戏中的每个对象更新时,是否更好地不断发送单个数据包?

1 个答案:

答案 0 :(得分:1)

我在一周或两周前问了这个问题并没有得到任何回复所以我继续创建了一个测试游戏并制作了3个项目分支进行测试。

简短回答:使用Spring Websockets时,批量更新速度要快得多。

我创建的第一个分支是" Packet Spread"科。它向游戏世界中的每个对象发送数据,因为它循环通过它们并在游戏时更新其属性。

我创建的第二个分支是" Packet Blob"科。它收集了在游戏时间点更新的所有数据,并在游戏结束时以1次批量更新发送。

我还创建了一个名为" Packet Spread Threaded"它与原始Packet Spread分支的工作原理相同,只是它在发送之前将所有游戏数据传递给一个单独的线程。

然后,我在3个玩家的基础上测试了每个分支,创建并更新了大量的对象。

数据包传播平均每次更新约40-70毫秒。

Packet Blob 平均每场比赛更新8-16毫秒

数据包传播线程平均每场比赛更新20-40毫秒。

我认为通过Spring Websocket发送数据会产生大量开销,因此最终发送大型单个数据包而不是多个小数据包会更有效。