“言论自由,莫谈国事!游戏研发中立论坛...”  (10-10)  “论坛主旨:激发你游戏制作的潜能”  (08-12)    

首页  列表  注册  登陆  搜索  用户  排行  帮助
欢迎光临何苦做游戏-游戏开发论坛,请登陆注册
会员总数:18026 新进会员:2333
用户   自动登录
密码    
主题总数:16092 回复总数:24457
今日主题:1 今日回复:2
访问峰值:723 发生时间:2005年06月01日
论坛首页--程序技术专区--自己开发、搭建mmo rpg游戏平台攻略
帖子主题:自己开发、搭建mmo rpg游戏平台攻略
    expl
 
  
 注册:2006/11/15         

 状态:普通会员            
 经验:5

 帖子:1

楼主[2006/11/15 10:25:33]      

自己开发、搭建mmo rpg游戏平台攻略

 mmorpg和休闲游戏可以说是现在最赚钱的游戏了。经过多年的发展,开发大型mmo rpg软件已由大公司才能完成的任务变为单个小团队或者个人就力所能及的任务。本文以盛大公司英雄年代和传奇世界的原始设计方案为实现为蓝本,说明一般mmo rpg的实现,避免大家设计搭建mmo rpg游戏平台时犯不必要的错误。本文所述均有实际成功的例证。经过对盛大服务器端和客户端源代码修改并重新编译后,我在自己家里的pentiumII 500计算机上试验成功,搭建了传世和英雄年代的服务器,并用另一台celeron 533计算机做客户端连接成功。

 服务器端恐怕是大家最关心的部分了,因为它关系到整个系统的安全性稳定性,最大客户端数量,这涉及到运营商的运营成本。
服务器的主要设计要求为:
1.极大的稳定性,无论收到何包裹都不会引起整个系统的瘫痪。
2.极高的安全性,要求游戏重要档案、客户资料,游戏数据不能被非法获取。
3.极强的带负载能力,现在的上线客户在成千上万是常有的,魔兽世界甚至突破了60万。
 以下为盛大公司的原始设计方案。
 要满足以上设计方案这就要把整个系统设计为分布式计算的结构,一部分计算机负责同客户端通信,每台计算机只负责一小部分计算,这样解决单台计算机计算资源严重不足。并把负责游戏计算的计算机同负责通信的计算机分开。负责游戏内逻辑计算的服务器没有外网接口、与外界隔开,这样保证游戏数据的安全性。甚至将游戏数据放在专门的数据服务器上,而数据服务器没有外网接口避免了数据被非法获取。
 负责登录的服务器收到的各种包裹是最多的了,其中包括验证用户名和密码的以及其他恶意的数据包裹。因为只要检查客户端就不难找到负责处理登录的服务的ip地址及端口号。为了确保安全性、使攻击包裹对整个系统的影响减低到最低程度,系统必须将登录服务器与其他负责计算的服务器以及处理客户端在游戏中收发包裹的服务器分开。在传世和英雄年代中负责处理登录的服务器称为BSIPServer。BSIPServer的ip地址固定,端口号固定。客户端启动时连接BSIPServer,BSIPServer确认用户名和密码,只有当用户名和密码确认通过后BSIPServer才向客户端发送另外一个服务器的ip地址及端口号,这个服务器用于处理游戏中的包裹,他被称为GatewayServer,一个服务器系统中可能会有多个GatewayServer。由于一些好事者最喜欢的就是向游戏服务器胡乱发送包裹。将处理登录功能的BSIPServer独立设计最大的好处在于屏蔽了后面的服务器收到攻击包裹,增加了系统的安全性。另一个好处在于BSIPServer在向客户端发送GatewayServer的端口号和ip地址的时候总是选择负载最小的GatewayServer这样的话可以做到各个GatewayServer的负载大致均衡。GatewayServer负责处理游戏中收发的包裹,并将收到的数据包交给其他负责逻辑计算的服务器去处理,这样做的好处是进一步分隔了负责通信的服务器,减少了整个系统受攻击的可能。在整个系统中,只有BSIPServer和GatewayServer有外网接口负责通信因此这两个服务器设计时必须对收到的通信包裹内容进行仔细检查,以确保数据包裹的合法性,一旦发现非法数据包裹,立刻断开连接。
 所有用户注册信息都放在BSCenterServer上,在BSIPServer收到用户名和密码后都要访问BSCenterServer验证用户名和密码的正确性。而BSCenterServer没有外网接口。这样就确保了注册信息和外网的隔绝,提高了安全性。所有游戏本身的数据包括地图,npc的设定,魔法技能的设定都放在专门的服务器上而这些服务器没有自己的外网接口,需要通过BSIPServer和GatewayServer访问这样就确保了数据的安全性。
 另一个关系到安全性的问题就是用户名和密码的加密。加密算法的强度不能太大所以公钥密码系统并不推荐。目前传世,英雄年代采用的对称钥的3des,为避免弱密钥,还对密文进行了idea加密,这样就把密码被攻破的可能性降低了。
 怎样分配在游戏中的计算,将巨量的计算交给不同的服务器,以便减少单个服务器的计算量和内存需求,并通过合理的计算划分方案将服务器间的通信减少到最低是提高网游带负载的关键。服务器的计算分割要做到,每台服务器尽可能独立的完成计算,处理过程中服务器间传递的数据要尽可能少。传世,英雄年代大致可以做到仅在服务器启动时才存在大量数据传递,其他时间传递的数据极少。传世、英雄年代的做法是将整个系统划分为多个服务器组,每个组中有多个服务器,一个组中的服务器共同处理多张地图。有些服务器是多个服务器组共有的,这些服务器命名的时候以BS开头,如上面的BSIPServer,BSCenterServer。因为有些数据十多个组共享的,比如说用户的注册信息,处理这种信息的服务器只能是多个组共有的。对于游戏内部的逻辑计算由于消耗内存量极大,计算量极大必须分组,否则服务器无法承受。目前的划分方案为按地图划分,将几张地图放在单个服务器上处理,处理地图上npc,玩家逻辑的服务器称为MapScreenServer.MapScreenServer处理多个完整的地图,有些地图相当庞大如天风大陆地图,原来担心可能会出现单个服务器无法处理一张地图的情况出现,而一张地图划分给多个服务器处理会出现服务器间的频繁数据传递,这是因为客户端在属于一张地图上走动时经常会出现在多个MapScreenServer所处理的地图部分间走动,有时候客户端在一个MapScreenServer上走动而他攻击的npc在另外一个MapScreenServer上,这样会出现巨量的网络通信,不仅设计麻烦,而且效果也不好。为了减小MapScreenServer的处理量,将攻击计算放到一个特别的服务器上处理,这个服务器被称为AttackServer,这样仅在客户端攻击npc或者npc攻击客户端时MapScreenServer和AttackServer才出现服务器间的数据传递。为了进一步减少MapScreenServer的处理量,将客户端进入到房间后的逻辑放到一个特定的服务器叫SceneServer。MapScreenServer仅在客户端进入房间和推出房间时和Scene存在通信。经过反复试验发现经过这样设计后按现有系统的处理能力,完全可以处理多张地图,因此原先计划做一个地图负载平衡将一张地图分给多个服务器处理,后来就不必做了。
 在以上设计准则的指导下,一个服务器的框架就完成了。
 客户端设计与传统的单机游戏相比似乎没有什么特别之处。客户端可以划分为以下几个模块:地图及npc的逻辑模块、界面模块,动画渲染模块,魔法效果模块。
 在传世和英雄年代中,客户端对于玩家的操作都时预执行的,即玩家对角色操作后客户端立刻响应在画面上表现,然后将玩家的操作发给服务器,服务器执行完毕后会将执行结果发给客户端客户端对照服务器的数据包并对结果做出相应的修正。
 npc动画是事先用3d软件渲染成2d序列帧,照相机镜面与地面成60度角。每个npc,玩家角色共有8个方向。
 在界面设计中恐怕最令人感兴趣的就是中文字的实现。传世,英雄年代系列用的是字体库模式。即将字体制作在一个文件中Graphics\font.bmp在要绘制中文字符串时根据字符的GB2312编码找到图片上对应的点,并将要渲染的整个句子绘制到纹理上。计算出整个句子的crc32码,建立哈希表,以后在渲染这话时查找哈西表,如果哈西表存在就从哈西表中将存放句子的纹理掉出来渲染到屏幕上。因此可以实现中文的快速渲染。
 客户端的魔法效果用的是2d的粒子系统,即在屏幕上绘制大量的粒子实现魔法。
 服务器端程序对内存和cpu的要求很高。我自己在家里仅有256Mb内存的pentium 2上搭了传奇世界和英雄年代的服务器,由于原先的系统要求在至少5-6台具有1G内存的服务器上运行,我修改了服务器源代码和数据文件,并重新编译,使他们可以在一台计算机上运行。当然由于内存容量有限,我只装载了天风大陆地图,并把地图上的npc数量减小了一半,就这样,我家里的老奔还开了200多兆虚拟内存。另外,我还更改了客户端的源代码,使它仅装入必要的图形文件并连接我家里的服务器。
 我的hotmail为expl_2006@hotmail.com,欢迎大家与我一起讨论。
 顺便发一下:寻求资金及策划、程序、美术、音乐开发mmo rpg游戏。


学而不思则罔,思而不学则殆,欢迎大家踊跃发言!

     bbsman

    
 经验:7277    

 帖子:710      
  状态:普通会员

  注册:2004/7/20

第1楼[2006/11/15 19:14:22]     

自己开发、搭建mmo rpg游戏平台攻略
不同游戏有些差别把 现在都是副本游戏了。。。
     cat

    
 经验:5844    

 帖子:332      
  状态:普通会员

  注册:2004/7/21

第2楼[2006/11/15 20:47:26]     

自己开发、搭建mmo rpg游戏平台攻略
写的 不错 顶一下  :)
     wss

    
 经验:132    

 帖子:0      
  状态:普通会员

  注册:2006/8/16

第3楼[2006/11/15 22:28:24]     

自己开发、搭建mmo rpg游戏平台攻略
顶一下。
     design_king

    
 经验:1098    

 帖子:93      
  状态:普通会员

  注册:2006/2/23

第4楼[2006/11/16 22:48:24]     

自己开发、搭建mmo rpg游戏平台攻略
不过 做私服没啥好下场哦。。。。 请楼主自重 呵呵
该主题帖子共[ 1 ]页 页码:第 1

论坛图例
开放帖 热门帖 被锁帖 总固顶 类固顶 固顶帖 精华帖
© 1998-2018 Npc6.Com 版权所有. ALL RIGHTS RESERVEDD
沪ICP备16050065号-3