1 / 9
文档名称:

剑三同步策略.doc

格式:doc   大小:70KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

剑三同步策略.doc

上传人:zxwziyou8 2022/1/7 文件大小:70 KB

下载得到文件列表

剑三同步策略.doc

相关文档

文档介绍

文档介绍:剑三同步策略
概述
什么是同步策略
同步策略是指将玩家所需要的数据,从服务器端传送给客户端的方法。
最简单、最原始的同步策略是将服务端上的所有信息都传送给客户端、每次服务端上的数据发生变化,都立刻通知所有客户端。显然,这种方法是不行的,带宽和计算量都承受不起。那么,就需要减少同步的数据种类,并且不需要每次数据变化都立刻通知客户端。
因为玩家位置的变化频率高、对游戏感受影响最大,所以抽取出来单独讨论。
位置同步
由于带宽和计算量的限制,每个客户端仅同步周围的9个Region,这样可以极大的减少了同步数据量。但是因此跨越Region需要做一系列特殊处理。
某玩家A,原先在第6号Region,现在移动到了第11号Region中。那么他的同步范围就从1、2、3、5、6、7、9、10、11,变成了6、7、8、10、11、12、14、15、16。
需要做的处理有:
通知玩家A,删除无需同步的Region中的场景物体(包括玩家、Npc、Doodad、子弹,下同)。对于玩家A来说,需要删除的是1、2、3、5、9这5个Region。
通知1、2、3、5、9这5个Regoin中的玩家,玩家A已经移出了他们的同步范围。
通知玩家A,8、12、14、15、16这5个新Region中已存在的场景物体。
通知8、12、14、15、16这5个Region中的玩家,玩家A进入了他们的同步范围。
处理1中的操作可以全部在客户端完成。当玩家A在客户端从第6号Region跨入第11号Region时,会更新自己的同步范围,自动删除无需同步的Region中的场景物体,无需服务端通知。
处理2中的操作可以由广播的移动指令代替。当1、2、3、5、9这5个Region中的玩家收到玩家A的移动指令时,玩家A会最终走出他们的同步范围,走到第11号Region中,客户端可以在这时自动删除掉玩家A,无需服务端通知。
现在需要考虑的是如何减少处理3和处理4中传输的数据量。对此,剑网一和剑网三,有不同的策略,详细分析见后。
其他信息的同步
可能会以较高频率变化、并且玩家关心的数据还有生命值和人物状态,可以考虑特别处理。剩余的其他数据,都可以靠指令方式同步,即客户端需要时向服务端请求,或者服务端发生变化时通知客户端。
本文档讨论的要点
明确同步策略的设计目标、运行环境参数、优劣的判断标准
描述曾经提出过的若干种方案
对比各种方案的优缺点,从而得出结论
设计目标
解决大规模群战时的延时问题
当玩家持续朝一个固定方向移动时,Region中的所有的新NPC和玩家都必须在他跨入该Region之前完成同步。对于9Region同步来说,这个时间间隔就是玩家跨越一个Region所需要的时间。
由此得到公式:Interval = RegionWidth / PlayerVelocity。
其中RegionWidth为恒定值16m,
PlayerVelocity为[0,16]m/s,
因此Interval为[1,+∞]s。
如上所述,设计目标为最长在2秒内,同步完所有新Region(3-5个)中的NPC和玩家。如果可以优先同步移动方向上的Region,可能效果可以更好。
为了实现这个设计目标,**1m(