大型网络游戏相对大型网站系统其差别是什么:
1) 虽然大型网络游戏产生的数据也很多,但与大型网站系统相比,差了几个数量级.
2) 网络游戏对数据的操作相对简单,基本上简单的select/update/delete就够了,基本不涉及复杂的查询和事物处理.
3) 网络游戏强调操作响应的实时性,你点击一个网页几百毫秒甚至一两秒内得到响应都是可以接受的,但对于很多网络
游戏而言超过2,300毫秒就会让人感觉玩得不顺畅.
那么网络游戏的压力主要在哪里,什么因素影响一组服务器的大承载人数.
依我多年的开发经验,网络游戏的主要压力体现在:
1) 和场景中其它的玩家,NPC的交互产生的压力
2) AI计算导致的压力
3) 很多大型的3D游戏在服务器端需要进行一些复杂的模拟运算,例如3D碰撞.
4) 复杂的战斗计算
5) 因为大量的玩家交互而产生的数据广播
要提高一个服务器组的承载能力,必须想办法把这些计算压力均衡的分布到不同的物理节点上.
一种分布方式是将可能产生交互的玩家分布到独立的节点上.这也是大多数网络游戏的处理方式,按单独的地图划分,如果玩家要跨越地图,则需要在服务器之间产生一次数据转移.这就是为什么回合制游戏和开房间副本类游戏承载人数比开放性大地图游戏的承载更高的原因.各副本之间的玩家都是相互独立的,不会产生频繁的交互.可以轻易的将单独副本分布到独立的节点上.
而像WOW这样的支持连续开放性大地图的游戏.比较多的方式是按功能的水平划分,例如将AI,服务端的一些模拟运算,服务端寻路等放在独立的节点上.但像战斗逻辑就不太好划分了,因为一个地图上任意两个对象都有可能在某个时间点发生交互.而交互的时候很多情况下都需要访问那个对象的数据(例如战斗,必须根据目标身上的属性,装备,buff等计算战斗伤害)
企鹅销售琳琳 : 613669589 :www . llidc . com