- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
策划需要了解的网游数据结构docx
策划需要了解的网游数据结构(一)
抽象的网络游戏架构
网络游戏之所以叫做mmog,是因为mmog必须得达到以下几个条件才可以进行游戏:
玩家们的电脑必须得接通Internet;
必须有网络服务端;
以上两个条件缺一不可。因此,网络游戏的架构从概念上就分为了服务端和客户端。客户端指的就是玩家们电脑上安装的游戏程序;而服务端则是游戏服务商所提供的数据同步、共享的服务器;
网络游戏抽象结构:由一个服务端和若干个客户端所组成。
服务端从抽象来说,我们可以理解为它只有一个,它所做的服务就是给这无数客户端进行数据同步、共享。
客户端:客户端往往是将很多的游戏资源储存起来的软件。这个软件具有象手机那样的接收、发出数据信息的功能,可以说,客户端就是一个编译器,将网络数据编译成游戏中可以看见的图像并将玩家的操作编译给服务端,让服务端进行处理。
编辑器配置数据和资源引擎
编辑器
配置数据和资源
引擎
客户端抽象结构
注:我们常说的开发套件——各式编辑器,就是对这些配置数据和资源进行编辑的工具软件。
服务端:服务端则是一个大型的智能化数据库,同时有着游戏之中的大部分逻辑处理程序在内。服务端就像是龙与地下城的城主,给客户端讲解着游戏该怎么玩,该遵循什么样的规则。
服务端抽象结构
注:以上是服务端的一个十分抽象、整体化的结构,在程序进行服务端架构时,会将这个系统分割为若干块,由不同的物理服务器来各司其责的进行管理。甚至有比较先进的动态服务器负载式管理,例如我们耳闻能详的BigWorld的服务端系统。
上面的网络游戏结构,和我们往常所玩的单机游戏有很大的不同,因为服务端和众多客户端之间多了很多的关系,这种联系的媒介就是有网络通信的网线以及确定这根网线粗细的带宽。由于网络之间的通信毫无疑问会出现各种延迟现象,因此,在游戏之中,你所看到的很多内容和所做的很多行为都需要数据同步。
网络游戏数据同步
网络游戏数据同步是非常底层的一块内容。似乎这一方面很多策划会觉得游戏策划不必去了解,因为大家觉得可能这一块的架构和我们的游戏逻辑没有任何关系。我则觉得不应该如此。无论如何,先让我们先来看看网络游戏数据同步的过程和方法,再来考虑它是否对我们的设计有所影响。
游戏里的一切参照以服务端为主
首先我们要明确一个基本的概念,就是游戏中的所有参照数据,应该以服务端的数据作为参照。因为我们知道,客户端的参照数据绝对是错误的,主要是由于有网络延迟的状况出现。
例如玩家确切的位置在哪里?我们不能以客户端所见来判定,而是必须以服务单的位置作为判定参照:
如上图。释放一个技能,该技能释放的最大射程是20米,这个时候,在释放这个技能时,先以客户端的自己和目标的距离作为参照,看是否能够释放技能,如果可以,那么服务端依旧需要验证一次攻击目标和自己在服务端的距离是否能够满足该技能的最大射程。这是一种满足客户端玩家战斗手感的一种方式,也是一种满足大家平衡的一种方式。通常,客户端在表现这种情况时,会让你开始释放技能(做念咒)的动作,等服务端验证信息返回之后,就会告诉你距离不够或者是满足射程,如果距离不够,则打断法术释放,如果满足则释放成功。如果网络延时,你会一直在念咒动作中停止,相信我们在玩《魔兽世界》的时候就有这种体验。因此,我们可以发现,网络游戏数据同步的过程对游戏操作手感、战斗合理性和流畅性的影响有多大了。
因此,服务端会拥有很多的临时数据需要同步,这些需要同步的数据大部分是针对单个玩家作为对象进行同步的。
需要同步的数据
需要同步的数据有很多很多,例如玩家周围其他玩家/NPC的位置,自己的行为信息(战斗行为、其他行为),其他玩家的HP、MP信息,其他玩家的行为信息(例如周围的玩家在战斗等),服务端的触发器的Action等;
区域的同步
区域的同步主要是让各个玩家对象,看见他身边所发生的事情。通常这个同步的过程是以玩家作为中心点,来进行同步处理。
不过通常玩家周围的一大片区域之中,有些数据玩家会更为在意,而有些数据呢,玩家并不会在意。例如我更关心的是我周围目标的位置是否准确,而并不担心远处目标的位置的准确程度,因为他们对我的影响并不大。
我们可以用屏数或其他各式为单位来分割需要同步给玩家的数据,如下图:
0.1s
0.1s
0.5s
1s
上图每个格子就是屏单位大小,中心的1屏是玩家所处的位置。
中心1屏的情况应该是玩家最需要了解到的,因此,这部分数据需要服务端以最少的数据同步间隔来发送给玩家。即每隔0.1s同步一次数据;
而颜色稍浅的外围8屏的情况,则对玩家影响会有所下降,因此,我们可以每隔0.5s同步一次数据;
而颜色最浅的最外围,则对玩家影响几乎微乎其微,因此同步的间隔会更长,甚至1s同步一次。
组织的同步
除了区域的同步有权重以外,玩家还有一些权重比较高的数据需要同步,例如属于同一
原创力文档


文档评论(0)