分享自己的经验,希望国内可以重视测试 主页:http://blog.sina.com.cn/chendamao1983 微博:http://weibo.com/tvchenziang

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

上一篇 / 下一篇  2011-06-19 09:14:25 / 天气: 晴朗 / 心情: 平静 / 精华(1) / 置顶(1)

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

] o$h4y%_#yO051Testing软件测试网|W rk(~l(?*}z|

客户端:玩家自主安装的游戏端,保存游戏资源的软件。这个软件具备接收和发出数据信息的功能。51Testing软件测试网d}1}m*M4GNq [0e

0k/EU(^&Uv0同时也可以理解成是一个前端,将网络数据编译成游戏中可看见的图像给玩家,而把操作编译给服务端,让服务端进行处理。51Testing软件测试网w_4}@4a.X6y!c{,k

51Testing软件测试网f3J+HYa,n7[Nh"c

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

51Testing软件测试网*z:R u(bw7i

 51Testing软件测试网$l!ZI[;f9S*k\s

51Testing软件测试网 x2S4L5b~/Vl}

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

Y:n A(T9s3B(VC051Testing软件测试网8Na F,U}Ic

客户端将遵守服务端的规则,并且帮助服务端处理部分信息缓存和次要信息。51Testing软件测试网x1t,A%A$i!^B3U

51Testing软件测试网z3y `j5f zU x!uK

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

unX[2V;d'R0

9k!?&V!{WgY0服务端群组客户端的主要关系是服务端组负责客户端的表现。51Testing软件测试网t&zMZ q/s)acK

p4hl_ N0负责不同事务的服务端需要各司其职来保证客户端的运作。51Testing软件测试网wysWEV!T

$rGN3Me4`0想要保证一定的执行效率和效果,就需要准确的各司其职。51Testing软件测试网?7tYM.Ac]l?s

51Testing软件测试网@1la%G^7` Z

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

qBm9QB)T0

b*{(h]Z*?6bL/Q)A"AX0而就是因为这种网络中的行为,无疑会出现各种延迟的情况出现。因此在游戏内,将看到很多行为需要数据同步。51Testing软件测试网 cx!b.Q b\`

/@-O#e @eQ0例举一些搞笑场景:51Testing软件测试网p1]X.lTP)_J4C-t

;K4H| }Q\_ m0玩家A投票购买了一批限量的道具,显示剩余数量为30件。51Testing软件测试网1Yy,fC9g+}|

8q+JF-pI2r? D0时隔10分钟后,玩家B也去购买了一批限量的道具,显示剩余数量为35件。51Testing软件测试网xyY-pl?

TJ5CU(}?0然而,且好这2名玩家是都认识的好了穿帮了,不知内情的玩家觉得游戏公司是在忽悠他们买道具。51Testing软件测试网p6Ld5?aZ!T&f+T-~

"}8ihv+nn\,S x0 

k0L lRb,Hp3gI3ky&w051Testing软件测试网1@"a-m7VBV F:Hw J1y0^

XXX挥泪大拍卖一样,结果今天是挥泪大拍卖,明天是跳楼价3天。好吧,不要让玩家的行为让系统去被动刷新,而不建立一个比较完善的机制。51Testing软件测试网c%iX#_!`5Mq

51Testing软件测试网7c(^ZTA_

关于多少时间去主动刷新一次,这里暂时不讨论,做法各有不同。51Testing软件测试网rIHy/q2M(_Zkd

\c`&r*Z7U+z0而因为进度忙,需求变更多而让系统被动去刷新的机制忌讳一刀切,比如界面用确认保存等终结来刷新1次本地数据,切换lab ,打开/关闭UI51Testing软件测试网h~ p ];X&iXO{

"sA-|5bc;Z g0 

+kD@|h6qS^1P051Testing软件测试网}IrR8tn,H

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

d S bST n?4v0

g-\.Qs;W3O9}:q0 51Testing软件测试网,PP6?3R+Ie"F

51Testing软件测试网 t(yj ur1fTIr

那么玩家行为呢

-|v7Vtr4v p _0

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

MXQ@Q+cE6qI0A的界面看到玩家B突然在他面前消失了,这时候玩家B出了内景切换到外景,A发现B凭空瞬移了,表现力有可能是平滑的,也有可能是瞬间出现的。51Testing软件测试网Z6h w,|7IA]

6_7Sl7mdQ i]0好吧,A崩溃了,觉得游戏有问题了。

H9@^9KI'S$v#zKk-g0

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

}6E&{8d$t%M0

6sG!kbqF^0这类问题影响可想而知,解决办法也不复杂。51Testing软件测试网1l o#?;|U3NZ'n0k,kl

1a'yd0C?0产生问题原因网络有延迟,通信闪断等等。51Testing软件测试网mG$dIj7[9[

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

G4P M3B;G F+d0

s-x W!H w0※网络游戏数据同步问题

{q}|#o6h5E7W0

?] WH eZDnb0上描述的问题如何解决呢,我们首先要明确一个基本概念,就是游戏中所有参照数据,应该以服务端的数据为参照。51Testing软件测试网__Gz0AP.v

"b7cNf.L'E*A,k3Z0以上可知,客户端的参照数据是不准确的,客户端处理的是部分资源信息。客户端是用来反馈图形的,和主动去请求服务端。51Testing软件测试网pj;x7\0zc$E


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3114
  • 日志数: 6
  • 建立时间: 2011-04-14
  • 更新时间: 2011-11-17

RSS订阅

Open Toolbar