my space:http://www.laaan.cn

uno游戏的数据优化

个礼拜一开始就准备将uno放到外网去测试。这里可以尝试使用》》》 可是接连好几天都是出现了问题。知道前天才真正在外网连上了。晚上在家测试了一番。发现游戏的数据传输特别慢。在公司测试的时候是在局域网内测试的,速度超快。可是一旦到外网中,才发现原来这个游戏的数据传输设计有多么的笨重。 于是昨天一天都在做优化数据的工作。下面这张图是游戏控制台的一张数据统计的截图: 第一段数据是使用AMF序列化数据传送,第二段数据是使用JSON序列化数据后传送。图上显示的结果是是AMF更省网络带宽。但是比起纯字符串传递(JSON序列化后),也少不了很多——为总的数据量10%左右。为什么差别如此之小? 其实想一想原理,也就明白了。uno游戏使用的后台是FMS。即便是使用JSON欲序列化数据,在提交过程中,总又被AMF序列化。而增加数据量,估计就是因为JSON过程中添加了好多引号(“)数据。 再看看第三段数据,明显比前两段数据量小很多。因为我这次测试时,没有携带游戏服务器端数据。在uno游戏的架构中,服务器即客户端!于是得保证在服务器关闭时,别的客户端中的一个立马建立一个新的服务器——而且得保证新建的服务器与原有的服务器即时数据一致。于是游戏的服务器端的数据就被无情地笨重地传递了。 这样看来,制约uno游戏数据传输速率的主要是服务器数据的传送了。那就开始优化吧。 下面的统计图是优化传输数据结构后: =============================================== 然后今天又重新组织了程序的架构。把游戏服务器数据的传递从分发改为存取。这样就大大减少了数据的传送。数据统计图如下: 放到linux服务器上,哈哈,竟然又小了很多: 然后更改了下编码ObjectEncoding.AMF3为ObjectEncoding.AMF0,然后更改String传递为object传递(肯定会减少数据传输量)。竟然还是会增加数据流量: 看来ObjectEncoding.AMF3比ObjectEncoding.AMF0进步很多了啊。但是会出现深数据无法传递的bug。期待更稳定的版本。
posted @ 2009-02-14 07:36  laan  阅读(173)  评论(0编辑  收藏  举报
my space:http://www.laaan.cn