51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3000|回复: 3
打印 上一主题 下一主题

网游同步处理的重要性(第一章)

[复制链接]
  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2011-4-26 14:35:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    转自我自己的blog,希望能一起探索这部分问题
    简单讲下游戏的结构,分为2部分:

    客户端:玩家自主安装的游戏端,保存游戏资源的软件。这个软件具备接收和发出数据信息的功能。

    同时也可以理解成是一个前端,将网络数据编译成游戏中可看见的图像给玩家,而把操作编译给服务端,让服务端进行处理。

    在游戏公司里常说的开发套件,就是对于配置数据和资源进行编辑的工具软件。

    服务端是1个大型加密的数据库,同时处理大部分逻辑事物。

    客户端将遵守服务端的规则,并且帮助服务端处理部分信息缓存和次要信息。

    服务端和客户端的关系是 好朋友~ 一对多关系也是多对多关系。

    服务端群组 和 客户端 的主要关系是 服务端组 负责 客户端 的表现。

    负责不同事务的服务端 需要各司其职 来保证客户端的运作。

    想要保证一定的执行效率和效果,就需要准确的各司其职。

    详细通信这里就不介绍了,网上也有介绍。

    而就是因为这种网络中的行为,无疑会出现各种延迟的情况出现。因此在游戏内,将看到很多行为 需要数据同步。

    例举一些搞笑场景:

    玩家A投票购买了一批限量的道具,显示剩余数量为30件。

    时隔10分钟后,玩家B也去购买了一批限量的道具,显示剩余数量为35件。

    然而,且好这2名玩家是都认识的…好了穿帮了,不知内情的玩家觉得游戏公司是在忽悠他们买道具。



    XXX挥泪大拍卖一样,结果今天是挥泪大拍卖,明天是跳楼价3天。好吧,不要让玩家的行为让系统去被动刷新,而不建立一个比较完善的机制。

    关于多少时间去主动刷新一次,这里暂时不讨论,做法各有不同。

    而因为进度忙,需求变更多而让系统被动去刷新的机制忌讳一刀切,比如界面用确认保存等终结来刷新1次本地数据,切换lab ,打开/关闭UI。



    紧接着运营的一个活动,本来是特惠活动,当玩家购买一个礼包,礼包已购买数量+1。当购买数量到达1个数值时,全服获取一种新的礼物或者新的优惠政策。如果因为同步数据问题,将导致游戏公司一些诚信问题。实际上都是冤枉的。



    那么玩家行为呢

    玩家A在外场景看到好友玩家B,因为计算确切位置的延迟而导致,B远离了,而A的客户端没及时反映,这时候A去找B交易。客户端通过服务端发出验证信息,结果信息返回时,告诉你距离不够,或者无法满足。A崩溃了,B这时候进入了内景。

    A的界面看到玩家B突然在他面前消失了,这时候玩家B出了内景切换到外景,A发现B凭空瞬移了,表现力有可能是平滑的,也有可能是瞬间出现的。

    好吧,A崩溃了,觉得游戏有问题了。

    诸如这类问题,会影响组队,技能释放判断,坐骑显示,甚至影响到美术模型下陷等。

    这类问题影响可想而知,解决办法也不复杂。

    产生问题原因网络有延迟,通信闪断等等。

    关键在前期地图切割,算法,二端通信方面的优化。

    ※网络游戏数据同步问题

    上描述的问题如何解决呢,我们首先要明确一个基本概念,就是游戏中所有参照数据,应该以服务端的数据为参照。

    以上可知,客户端的参照数据是不准确的,客户端处理的是部分资源信息。客户端是用来反馈图形的,和主动去请求服务端。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2011-5-18 15:41:35 | 只看该作者
    回复 2# cncnily

    嗯说的很对,这个要大家一起来补充的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2011-5-18 13:35:35 | 只看该作者
    不错哦,受益了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2011-4-27 14:48:00 | 只看该作者
    写的非常好。同步不单纯是以上方面,很多方面都需要同步。
    比如截取一个玩家A攻击玩家B的包后,就可以在这张地图玩家B看不到玩家A的地方攻击玩家B,这就是服务器和客户端坐标可能不一致,所以服务器端设置的攻击距离比较大。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 12:19 , Processed in 0.069872 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表