总结我所了解的网络游戏知识2
第一篇 Mmorpg服务器架构 《快乐西游》http://joyxy.the9.com 的服务器框架 Client <--> GameServer <--> GroupServer <--> Database (可惜这里不能贴图,只能简单的文字说明,但愿不要引起误解) 客户经过验证直接连线到游戏服务器(一个游戏服务器称为一线),5-10个GameServer形成一组,受一个GroupServer管理,加上一个 帐号服务器,形成一个区。一个完整的区包含10(GameServer)+1(GroupServer)+1(AccountServer) +1(DB)共13台机器,能负载5000-10000人同时在线。 这种框架的典型特点是区与区之间帐号不通用,线与线之间世界是独立的世界,即你在一线的武器铺,我在二线的武器铺我们是看不到对方的,我们处于一个完全 相同的世界副本中。 九城几年前代理的游戏《奇迹》也是这种架构,只是它更多一个层次,叫做服务器组。 从程序的角度来看就是 一个游戏世界由一个进程来维持。 《魔兽世界》http://wowchina.com 的服务器框架 Client <-->GateServer <--> GameServer <--> Database 客户经过验证之后连线到GateServer,GateServer再连接GameServer,一个游戏世界由多个GameServer支撑,可能这个GameServer管几个地图,那个GameServer管另外几个地图, 另外一个GameServer则负责副本地图等等,这就是为什么有时候铁炉堡的人集体掉线但是达纳苏斯的都没事,或者MC的集体掉线而在燃烧平原做任务的一点影响都没有,那都是因为负责那块地图的GameServer崩溃了。当然崩溃有时候也会引起错误漫延,导致不得不全服(所有GameServer)重启。 从程序的角度来看就是 一个游戏世界由多个进程来维持。 (注:本人没有真正接触到wow的服务器,仅凭借自己看到的现象来推测服务器的框架,快乐西游服务器是我负责设计的,所以能说的很明确。) 一个世界由单一进程来维持,做起来相对简单,玩家切换世界跟下线之后重新登录基本没有区别,无需处理很多边界问题。问题就在于一个世界容纳的人数有限, 这种即时战斗的rpg,一个进程能支持到1000人算很好了(普通2G的志强CPU的服务器)。 多进程支撑一个世界的好处是游戏世界可以做的很大,容纳很多人一起游戏,提供的交互性更好,但是游戏程序的复杂性也会大很多。玩家角色在两个服务器负责 的边界区域来回游走或者交易时,同步问题比较复杂。曾有过游戏(忘记了是什么游戏了)就在这个同步上出了问题导致大量物品复制。当然也不只是地图的管理 在不同的进程,有的游戏还把不同的逻辑运算分散到不同的进程,比如游走处理放在一个进程,任务处理放在另外一个进程等,这样同样是存在公用数据的同步问 题。Wow可能就用了这种,因为在wow中曾碰到过一个任务交了以后领到任务物品,服务器重启后再上来任务可以再交一次领到同样的任务物品,当然也可能 只是任务和数据存储方面的bug。 因为多进程维持一个世界能给玩家带来更好的游戏体验,现在是越来越流行,新的游戏几乎都是这种方式。