总结我所了解的网络游戏知识2

quanwuling 2008-05-09 03:45:28
第一篇 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。 因为多进程维持一个世界能给玩家带来更好的游戏体验,现在是越来越流行,新的游戏几乎都是这种方式。

...全文
156 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbzr 2008-05-24
  • 打赏
  • 举报
回复
感谢 分享。。。。
zxbstrong 2008-05-14
  • 打赏
  • 举报
回复
谢谢!
coldant 2008-05-13
  • 打赏
  • 举报
回复
感谢楼主分享经验,再顶
sherry_zhu 2008-05-09
  • 打赏
  • 举报
回复
感谢楼主分享经验,WOW他也只是做到不同的副本用不同进程,同步问题其实并不复杂,我们现在的服务器就采用类似的架构。对楼主谈到服务器内部模块的组件构建模式很感兴趣,有机会交流下。QQ:29266992,继续拜读中。。。

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧