Laan's steps..

Feed Rss

uno游戏的数据优化

02.14.2009, flash, by .

个礼拜一开始就准备将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。期待更稳定的版本。

uno游戏的数据优化 有1条回应

  1. uno能放出来了么…

    回复

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>