资源描述
策划需要理解网游数据构造(一)
抽象网络游戏架构
网络游戏之因此叫做mmog,是由于mmog必要得达到如下几种条件才可以进行游戏:
1. 玩家们电脑必要得接通Internet;
2. 必要有网络服务端;
以上两个条件缺一不可。因而,网络游戏架构从概念上就分为了服务端和客户端。客户端指就是玩家们电脑上安装游戏程序;而服务端则是游戏服务商所提供数据同步、共享服务器;
网络游戏抽象构造:由一种服务端和若干个客户端所构成。
服务端从抽象来说,咱们可以理解为它只有一种,它所做服务就是给这无数客户端进行数据同步、共享。
l 客户端:客户端往往是将诸多游戏资源储存起来软件。这个软件具备象手机那样接受、发出数据信息功能,可以说,客户端就是一种编译器,将网络数据编译成游戏中可以看见图像并将玩家操作编译给服务端,让服务端进行解决。
编辑器
配备数据和资源
引擎
客户端抽象构造
注:咱们常说开发套件——各式编辑器,就是对这些配备数据和资源进行编辑工具软件。
l 服务端:服务端则是一种大型智能化数据库,同步有着游戏之中大某些逻辑解决程序在内。服务端就像是龙与地下城城主,给客户端解说着游戏该怎么玩,该遵循什么样规则。
服务端抽象构造
注:以上是服务端一种十分抽象、整体化构造,在程序进行服务端架构时,会将这个系统分割为若干块,由不同物理服务器来各司其责进行管理。甚至有比较先进动态服务器负载式管理,例如咱们耳闻能详BigWorld服务端系统。
上面网络游戏构造,和咱们往常所玩单机游戏有很大不同,由于服务端和众多客户端之间多了诸多关系,这种联系媒介就是有网络通信网线以及拟定这根网线粗细带宽。由于网络之间通信毫无疑问会浮现各种延迟现象,因而,在游戏之中,你所看到诸多内容和所做诸多行为都需要数据同步。
网络游戏数据同步
网络游戏数据同步是非常底层一块内容。似乎这一方面诸多策划会觉得游戏策划不必去理解,由于人们觉得也许这一块架构和咱们游戏逻辑没有任何关系。我则觉得不应当如此。无论如何,先让咱们先来看看网络游戏数据同步过程和办法,再来考虑它与否对咱们设计有所影响。
游戏里一切参照以服务端为主
一方面咱们要明确一种基本概念,就是游戏中所有参照数据,应当以服务端数据作为参照。由于咱们懂得,客户端参照数据绝对是错误,重要是由于有网络延迟状况浮现。
例如玩家确切位置在哪里?咱们不能以客户端所见来鉴定,而是必要以服务单位置作为鉴定参照:
如上图。释放一种技能,该技能释放最大射程是20米,这个时候,在释放这个技能时,先以客户端自己和目的距离作为参照,看与否可以释放技能,如果可以,那么服务端仍旧需要验证一次袭击目的和自己在服务端距离与否可以满足该技能最大射程。这是一种满足客户端玩家战斗手感一种方式,也是一种满足人们平衡一种方式。普通,客户端在体现这种状况时,会让你开始释放技能(做念咒)动作,等服务端验证信息返回之后,就会告诉你距离不够或者是满足射程,如果距离不够,则打断法术释放,如果满足则释放成功。如果网络延时,你会始终在念咒动作中停止,相信咱们在玩《魔兽世界》时候就有这种体验。因而,咱们可以发现,网络游戏数据同步过程对游戏操作手感、战斗合理性和流畅性影响有多大了。
因而,服务端会拥有诸多暂时数据需要同步,这些需要同步数据大某些是针对单个玩家作为对象进行同步。
需要同步数据
需要同步数据有诸多诸多,例如玩家周边其她玩家/NPC位置,自己行为信息(战斗行为、其她行为),其她玩家HP、MP信息,其她玩家行为信息(例如周边玩家在战斗等),服务端触发器Action等;
区域同步
区域同步重要是让各个玩家对象,看见她身边所发生事情。普通这个同步过程是以玩家作为中心点,来进行同步解决。
但是普通玩家周边一大片区域之中,有些数据玩家会更为在乎,而有些数据呢,玩家并不会在乎。例如我更关怀是我周边目的位置与否精确,而并不紧张远处目的位置精确限度,由于她们对我影响并不大。
咱们可以用屏数或其她各式为单位来分割需要同步给玩家数据,如下图:
0.1s
0.5s
1s
上图每个格子就是屏单位大小,中心1屏是玩家所处位置。
中心1屏状况应当是玩家最需要理解到,因而,这某些数据需要服务端以至少数据同步间隔来发送给玩家。即每隔0.1s同步一次数据;
而颜色稍浅外围8屏状况,则对玩家影响会有所下降,因而,咱们可以每隔0.5s同步一次数据;
而颜色最浅最外围,则对玩家影响几乎微乎其微,因而同步间隔会更长,甚至1s同步一次。
组织同步
除了区域同步有权重以外,玩家尚有某些权重比较高数据需要同步,例如属于同一队伍队友数据,咱们也需要更精确理解她们状况。
此外尚有游戏里其她组织,例如师徒、夫妻、公会等。
事件同步
例如玩家进行某些操作,查看对方身上装备,需要获取对方装备数据。这些也许是即时数据同步,并且普通需要同步过程也尽量需要是即时。这种数据同步特性是:
数据同步队列(信息发送器)
由于同步方式有诸多,我前面罗列出来方式只是常用两种,因而数据同步也许需要队列产生。咱们可以以同步数据间隔时间来划分这些队列:
0.1s同步队列;0.5s同步队列;1s同步队列。
由于队列同步间隔时间各有不同,因而队列可以过度饱和导致一次同步数据也常有浮现,因而咱们也许需要限制这些队列数据量大小。
但是这样一来,则会有某些数据被排除在外,并且数据信息设立是对玩家至关重要,咱们该怎么办呢?
咱们可以给每条数据信息设立权重,除了权重之外,尚有先来后到权重。这样尽管会漏掉一某些信息,好在这些信息对玩家来说并不是至关重要,因而,玩家应当不会十分在乎这种小问题。
网络同步对游戏性影响
由于之前咱们已经提到,游戏里一切参照必要以服务端为准,而玩家看到都是过去式(由于网络延迟),因而,咱们需要考虑是,哪些是玩家需要更快懂得过去式,哪些是玩家可以晚些懂得过去式。这些过去式得罗列出一种权重,由于咱们不能让所有数据都是更快懂得过去式,那样做话会对服务端带宽导致影响,使得服务端可以同步承载玩家数量大幅度减少,这一点是运营商不但愿看到,也是咱们不乐意看到。因而关于数据同步规划在服务端架构前期是一件十分重要事情。
展开阅读全文