简单讲下游戏的结构,分为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,搞毛啊。
诸如这类问题,会影响组队,技能释放判断,坐骑显示,甚至影响到美术模型下陷等。
这类问题影响可想而知,解决办法也不复杂。
产生问题原因网络有延迟,通信闪断等等。
关键在前期地图xx,xx,xx通信方面的优化。(有兴趣的可以填空)
※网络游戏数据同步问题
上描述的问题如何解决呢,我们首先要明确一个基本概念,就是游戏中基本所有参照数据,应该以服务端的数据为参照,根据游戏类型来定义差异性。
以上可知,客户端的参照数据不是既时的,为了减少延迟,会把部分信息放在客户端里或者第三方处理。客户端主要是用来反馈图形的,和主动去请求服务端。
写的比较早的文章,改了一版,实际来说看是哪端往哪端发,很多工具都是可以做到的。
本文来源csdn:http://blog.csdn.net/jiazurongyu
分享到:
相关推荐
相对于单机游戏,网络游戏涉及到更多的技术问题,比如网络底层通讯模型,游戏逻辑的同步策略、服务器群集技术等,其中游戏同步机制在网络游戏中有着至关重要的作用。 网络中的延迟是不可避免的,延迟的存在引发了...
定时的重要性 使用控件 获取信息 T3D游戏控制程序 总结 第二部分 DirectX和2D基础 第五章 DirectX基础和令人生畏的COM DirectX基础 COM:这是Microsoft的工作,还是魔鬼的? 应用DirectXCOM...
网络:介绍网络游戏开发中的网络通信机制,包括同步、延迟处理等。 UI设计:指导如何设计直观、易用的用户界面,提升玩家体验。 性能优化:分享提升游戏性能的策略,包括内存管理、渲染优化等。 图形与Shader:讲解...
游戏数字产业在数字经济发展中扮演着重要的角色,目前对于单机游戏的设计与开发比较多,多人在线3D网络游戏涉及的相对较少.本文结合网络通信原理,以Unity3D为基础,采用MVC架构,设计并实现了多人在线动作角色扮演...
一、网络文化产业发展现状及问题分析 在城市文化软实力建设中,网络文化不只是城市文化建设与管理的目标和对象,更重要还在于它对网络时代城市文化发展模式的提升。因此,城市文化软实力建设要充分适应网络文化的...
目录 MMO游戏的常用架构 服务器系统及应用健康监控体系 游戏内常用的效率分析及对应的优化手段 与其他互联网产品的互通性思考 Q&A 环节 服务器监控及性能优化全文共27页,当前为第2页。 MMO游戏的常用架构 架构和...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
第1章介绍一维、二维的非线性混沌映射,第2章介绍时间序列分析,第3章介绍平面自治系统,第4章介绍非线性哈密顿系统,第5章介绍非线性耗散系统,第6章介绍非线性动力学系统,第7章介绍混沌控制,第8章介绍混沌同步性...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...
PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...