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

来源:互联网 发布:农业大数据的应用 编辑:程序博客网 时间:2024/04/28 01:20

简单讲下游戏的结构,分为2部分:

 

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

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

    服务端是1个大型加密的数据库,同时处理大部分逻辑事物和部分表数据。需要一门高效的语言,例如C++Lua

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

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

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

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

    通信这里就不介绍了。

    这种网络中通信的行为,无疑会出现各种延迟的情况出现。我门在游戏内,将看到很多行为需要数据同步。

 

    例举一些搞笑场景:

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

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

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

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

    关于多少时间去主动刷新一次,这里暂时不讨论,留有一个话题。(?)

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

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

玩家:Gm搞毛啊,实际上Gm和游戏,都是冤枉的。

 

那么玩家行为呢

 

    玩家A男在室外场景,看到好友玩家B女,在第六根电线杆下,于是决定去送花。因为发送移动到确切位置的时间,B已经远离了第六根电线杆下,服务端还没告诉A的客户端,当轮巡一次时,A发现B跑的好远了,B莫非有奇门遁甲?

    A再次追上去,终于发起了送花的请求,客户端通过服务端发出验证信息,结果信息返回时,告诉你距离不够,或者无法满足。B这时候进入了内景,A在墙角画圈圈。

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

    好吧,A崩溃后觉悟了,觉得是游戏有问题了,Gm在下XXX,搞毛啊。

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

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

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

关键在前期地图xxxxxx通信方面的优化。(有兴趣的可以填空)

 

※网络游戏数据同步问题

 

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

    以上可知,客户端的参照数据不是既时的,为了减少延迟,会把部分信息放在客户端里或者第三方处理。客户端主要是用来反馈图形的,和主动去请求服务端。

写的比较早的文章,改了一版,实际来说看是哪端往哪端发,很多工具都是可以做到的。
原创粉丝点击