腾讯游戏腾讯游戏 > 第八届网博会 > 正文

冰川网络CTO高锋:大型网游研发技术

2010年10月23日14:56腾讯游戏我要评论(0)
字号:T|T

冰川网络高锋:大型网游研发技术冰川网络高锋:大型网游研发技术

腾讯游戏23日讯 在在下午举行的客户端论坛上,深圳冰川网络CTO高锋介绍了大型网络游戏研发技术。

以下是演讲全文:

大家下午好!我主要是讲客户端技术,可能太偏技术了一点。我简单介绍一下我自己,我是2001年加入深圳网域,在那边干了六七年,从华夏序列开始,从开始就参与进去了,长达七年的开发,在那边长了很多经验。2008年来到深圳冰川,进行《远征Online》的开发。我们公司深圳冰川是一家年轻而富有活力的一家公司,2008年创建,目前可能也有一些不足,但是发展的还不错。远征Online是真热血PK网游,2.5D=2D场景和物件+3D人物。

这个就是远征Online在国战时候的场景,这种感觉是不可言语的。其实这个会场叫客户端会场,我想了想只有我这个跟这个搭界了,开玩笑。我这边讲客户端相关的知识,可能有一些同仁会听的明白,我尽量浅显一点的说。

客户端基本主要组成部分就包括登陆器和客户端。我们的登陆器我们可以制作不同版本的分支,一个客户端可以制作多个版本的分布,每一个分支有不同的内容,并存自动下载,支持P2P、局域网络化,节约带宽。

客户端方面,除了登陆器,主要就是客户端本身,客户端本身的话,它的基本框架由基础库,渲染系统,UI系统,MVC系统构建。这里讲到MVC,主要是讲我们游戏的逻辑模型,我们游戏逻辑模型是基于消息机制与服务器通讯。这里的逻辑模型涉及到两个模块,这里列出了很多,都是我们游戏本身所具有的模块,像竞拍、元效果、Buff,聊天等等,因为游戏已经做到目前,该有的内容基本都有了,没有的内容正在感受,这里面跨服很重要,它解决了一个很大的难题,在一个服务器里面,通过跨服可以很好的解决各种问题。

MVC中的V是指我们地图上看到的一些实体显示方面的东西。C就是指各种操作,UI操作,地图内鼠标键盘操作,其他系统比如音频、天气系统。客户端的原则是无“逻辑”,这个逻辑为什么要打引号?就是我客户端无服务器逻辑,但是可能有客户端自身的逻辑。

我们基础库涉及到很多内容,这些内容都是与游戏开发相关联的,包括内存管理,有效的组织内存的分配,然后加密揭秘,压缩和解压缩,然后有虚拟文件系统,基本上所有的游戏基本都有一个虚拟的文件系统,就是包含目录态、包态、搜索顺序等等。

冰川网络CTO高锋:大型网游研发技术

基础库中间的网络层我们是采用ACE的精简版,去掉了我们不关心的东西,保留了我们关心的东西。网络层里面分了异步文件读取,还包含数据包的加解密,HTTP请求等等。

基础库中间还有一个是线程池,也是为后台加载获得一些辅助任务提供帮助的一种优化措施。

基础库中的后台加载,当游戏在滚屏的时候,存在大量的资源加载和释放,他们后台加载都是必然的,它可以降低CPU的占用率。

在基础库中间有一个很大的是LUA虚拟机,它的应用是很广泛的,目前游戏都在使用这种。

基础库中的事件系统,游戏里面发生各种各样的事件特别多,而且特别杂,那么这事件系统就要构建一个良好的接口,上载使用方便。

同样基础库中间我们构建一个性能评测,像我们客户端,或者服务器起动之后,我们前提都是做了性能评测的,评测时间到底花在哪里去了,为什么有的地方很卡等等,都通过类似的性能评测进行检查。

然后我们基础库中间有一个配制文件的读写,游戏里面我们一般是用XML,或者CSV文件,或者INI文件进行读取数据。

基础库中间业提供Crash报告,我们通过在后台把Crash报告发到后台去,然后定时来检查这些错误,然后修正这些错误。

基础库中间还涉及到好多东西,像时间轴、像正则表达式,字符串的辅助以及Log输出,Log输出是指多入输出的。

然后地图系统里面有远景,好多地图远景能看到天空,这个远景就挂在地图上,它能增加它的地理感,空间感。然后地表采用是多层地表,使地表更加细腻。地图系统除了这些地表、还有物件、光小和逻辑实体。

然后地图系统我们有寻路,有动态视野管理。还讲了一些占位块,小地图,地图的存取以及滚屏。地图系统如果把这些东西做好,那么一个2.5的地图系统就成型了。

下面进一下数据驱动。我这里举一个例子,就像技能,我们以前写技能的话,每个职业会有十几种技能,甚至包括外围好多技能,那么这样的技能有很多很多,以前有一种比较笨的办法,一个技能一个写法,但是那种写法带来很多的困难,那么像技能体系会存在几个状态,我们的技能是客户端先行,跟其他的网页可能有点不一样,我们当发现网页卡的时候,我们会有反应的。

下面是一个配制文件的一个示例,像这个技能图里面,各种的配制都是写在这个表里面。我们客户端渲染引擎,我们渲染引擎是一个小引擎,都不需要做的很大,除了字体、模型,其他的都是小的渲染引擎。

我讲一下我们界面库,我们界面库是采用的CEGUI,是老版本,做了一些改进,属性集的改进,我们增加了像动画控件,各种文字效果,聊天空间,针对它的界面库我们做了一些渲染改造,这个渲染改造主要是一种叫精确更新和窗口私有渲染。

我们都只是动态刷新,不管是LUA文件还是数据文件,我们数据文件是存在独立的数据区,它的刷新是不影响逻辑的,所以可以进行动态刷新。

简单讲一下客户端的性能优化,第一个是内存池的优化,采用TLS的方式,让内存释放很快。我们头顶称号进行优化,当很多头顶称号很多的时候,我们不进行排序。由于时间关系,我讲一下国战模式优化,我们内部叫娃娃模式,当你的显卡很差的时候,那么你就会统一到外观,然后FPS拆分和跳祯来处理。

我这里讲一下关注细节,我们从2009年进行内测以后,到目前已经一年多了,各种细节在改来改去,我举了一些少量的细节,比如说像后备技能,你的技能按了一下之后,如果不能使用,我会记录在那里,到前面技能用完了以后,再使用后面的技能。然后像输入法能够智能切换,我们智能导航,我们的导航是完全可以跨地图,我们的任务系统做的特别好,玩家感觉反映好。

冰川崇尚:“乐于分享,乐于成长,关注细节。”由于时间关系,谢谢大家。

[责任编辑:echoguo]
登录 (请登录发言,并遵守相关规定) 分享至: 腾讯微博
如果你对游戏频道有任何意见或建议,请到交流平台反馈。到微博反馈

企业服务

推广信息