51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3883|回复: 2
打印 上一主题 下一主题

《功夫世界》3D引擎开发总结

[复制链接]
  • TA的每日心情
    慵懒
    2015-1-8 08:46
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2008-1-9 11:25:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    《功夫online》也公测一段时间了,早就想抽时间写点关于功夫开发的东西,可一直无法静下心,现在终于可以松一口气了。功夫的开发始于2004年6月,至今将近3年啦。功夫是我全程参与的第二个大型游戏项目了,抛开运营、市场等外在因素,单就游戏本身来说,我认为这个产品是成功的。
    在前几年,完成第一个项目的时候,我就认为一个项目的成功必须包含几个方面:1产生出高质量的产品;2在技术上有一定的积累;3团队有所成长。就这三个角度来讲,我对功夫项目都还比较满意。功夫这个项目最大的问题就是道路走的太曲折了。功夫的游戏系统先后历经数次大的修改,在最后半年时间更是几乎推翻重来!就是在这半年里,大家表现出了很高的热情,游戏得以今天的面貌,这半年的辛苦是可想而知的!感谢这些与我一起战斗的兄弟们啊。
    游戏、项目的话题如果摊开了说,那范围太广了,只谈谈功夫的3D引擎的吧。功夫的3D引擎是在公司成立之初完全从头开始写的。在这之前,有一段时间在家赋闲的时候,已经写了两个原型,都不满意。功夫项目大部分时间都在赶工游戏系统,真正给3D引擎的开发时间只有半年,在项目后期又化了一些时间优化。这套3D引擎开发代号为F3D,它吸收了我之前使用过的3D引擎的优点,并参考了开源引擎OGRE。

    F3D的核心系统包括:

    1.    一套简洁的RTTI系统,并支持对象序列化;
    2.    虚拟文件系统;
    3.    对外提供SceneGraph接口,内部使用QuadTree管理大型室外场景;
    4.    单独的后台线程,整个场景都可以异步调入;
    5.    SceneGraph与渲染系统分离,可以实现多渲染系统;
    6.    面向美术的材质系统,在运行时将材质定义编译为面向3D API的数据;
    7.    Terrain,支持texture splatting;
    8.    动画系统支持顶点动画、骨骼动画,后者支持简单的动作混合;
    9.    支持LOD;
    10.    Sky Dome,Sky Box,Sun lens flare,并支持昼夜平滑变化和天气变化;
    11.    资源管理系统,支持引用计数、资源池管理方式;
    12.    2D渲染接口,主要用来渲染界面;
    13.    插件管理,编辑器接口;
    14.    特效系统,支持除粒子系统之外的十余种特效元素,可以组合成丰富的特效;
    15.    PostProcess

    在工具方面:
    1.    支持Max导出,包括静态模型,顶点动画,骨骼动画,蒙皮,对Max的材质进行了尽可能的支持;
    2.    编辑器框架使用插件结构,可以将所有编辑器整合为一个完整的游戏内容开发工具,每个编辑器是一个独立的工程,很好的封装了复杂度;
    3.    地形编辑器;
    4.    特效编辑器
    5.    地图编辑器;

    下面是我认为比较成功的方面:
    1.    设计思路清楚,尽量使用直接、简单的思路,结果是引擎代码只有十万行出头!
    2.    RTTI结合序列化的概念,使得复杂对象的存盘读盘代码都极为简单;
    3.    代码进行了良好的文档化注释,并可以使用Doxygen来生成文档;
    4.    动画系统技术比较成熟,特别是3DS Max导出插件出现的bug很少,文件格式几乎没有改动过;
    5.    Terrain系统,采用了texture splatting的技术,证明是正确的选择。最终实现的效果非常精细,贴图容量占用也很小,填充率占用略大;
    6.    特效系统表现力很强,无论是场景元素,还是功夫招式都可以给美术足够的发挥空间,最终的画面效果我很满意,很多特效我的都想像不出是怎么做出来的;
    7.    资源管理系统的池机制,使得第二次地图可能很快(竟然有人说这是BUG,说是内存泄漏,还有人问为什么第一次进入这么慢,唉。。。);
    8.    编辑器很重要,地形编辑器和特效编辑器写的很认真,效果也不错;
    9.    对配置要求低!在经过优化之后,我测试了一下Geforce2 MX 400,游戏还是比较流畅的!

    下面是一些不足的地方:
    1.    引擎提供的接口,对于C++来说还算可以,如果想提供给一种脚本语言,就显得不够干净了;
    2.    代码书写整洁,风格统一;
    3.    在异步资源调入方面,出现几个严重的线程同步问题,显示出这块设计的不足;
    4.    有兄弟质疑序列化的效率,比直接读取整块数据要慢,这是个需要考虑的问题;
    5.    特效的管理上还不够完善,未能象普通动画那样应用fly weight模式;
    6.    2D画图接口在最初实现时对效率考虑不够,后来发现,游戏有上千个控件,不得不再进行优化;
    7.    一开始制作的地形的精度,贴图精度都太高了,后来降低了精度发现效果也不错,而视野可以成倍的增加,这个教训要吸取;
    8.    没有考虑室内渲染技术,如果有机会的话,还是很想做一个室内/室外无缝连接的引擎啊;
    9.    地图编辑器写的不好,使用不方便。

    原来设想的很好,一直没时间完成的一些东西:
    1.    多渲染系统――本来计划实现一套Fixed function用于低配置显卡,对于支持Shader Model 2.0的卡单独实现一套渲染系统,结果只做了前者;
    2.    遮挡剪裁如果做了,效率还能再提高;
    3.    计划在基于shader的渲染系统中实现一种室外场景光照模型;
    4.    C#接口,这样游戏层可以用C#写,希望开发效率能提高。

    做为第一个完全由自己设计的3D引擎,成功的完成了一个大型MMORPG项目,还是略有成就感的。不过,不知道是不是游戏程序员都有重写一切的欲望,如果再有机会,我还是希望能从头设计、实现一个3D引擎。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2008-4-11 17:14:12 | 只看该作者
    原帖由 51testing 于 2008-1-9 11:25 发表
    不知道是不是游戏程序员都有重写一切的欲望

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2009-5-7 11:20:20 | 只看该作者

    你是这游戏的研发成员么??还是转载??

    你是这游戏的研发成员么??还是转载??
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-7 15:27 , Processed in 0.070682 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表