|
|
近来重做了一次MMO服务器,没什么特别的感受,先重写一次框架,新框架主要考虑分布式负载,操作系统移植,以及重新定义游戏逻辑框架的生命力。
新服务器所有的一切,没什么炫眼的地方,都是为将来做开发更省事一点。网络系统层依然保留双信道机制,还是独立系统,在这系统中做分布式框架挺麻烦,因为通讯协议没现成检,除此之外还得考虑框架的易用性,移植性。网络系统框架我们独立出来开发,win32用iocp,linux用epoll。因为服务器种类众多,数据库,文件,地图,虚拟规则,汇总,Gate,一大堆服务器,所以我们先做了网络系统的通用框架,每个服务器内部又设置了和别的服务器通讯的客户端,而客户端有的要2信道,有的又是单信道,如果将来implement框架的复杂性可想而知!所以挺麻烦,关键处划分了无数颗逻辑树。
重做MMO服务器的另一点是规则和地图。原先最早的构思是规则和地图都在一起,因为在虚拟的服务器上负载了成百上千的玩家,地图上的触发事件一多,不说流量负载,光是逻辑处理都吃不消。最后几经周旋才把游戏规则和地图划分成了两块,因为完整的GAme world由许多地图组成,地图再由这两模块平行处理。对规则框架概念的更新了不少的东西,将最古老的房间,定义成了Field,将房间中的角色,定义成了Bio。记得我在刚刚提出Bio,Field的概念时,有个同事开玩笑说,BioZone!然后我问他是不是在开堂口收保护费,最后搞得大家都在捧腹。然后就是在虚拟服务器的内部,实现了几个不错的构思,首先是服务器可以虚拟单机游戏的角色动画播放及虚拟运行过程,这对于delta时间换算简直是革命性的,它意味着客户端上可以使用任何3D图形引擎,并且和服务器在同步中实现接近单机游戏的delta时间及物理流程。因为虚拟过程很讲究算法,过去我也只是停在单纯的构思中,最大的不成熟因素是服务器性能问题,而现在成功解决虚拟规则上的性能,这真算一次小小进步和突破。
人到深夜往往话多。好啦好啦。回头再来更新。
by,z
|
|