一种应用于游戏的3d引擎系统的制作方法

文档序号:9654676阅读:547来源:国知局
一种应用于游戏的3d引擎系统的制作方法
【技术领域】
[0001]本发明属于3D引擎系统,具体讲涉及一种应用于游戏的3D引擎系统。
【背景技术】
[0002]随着计算机硬件图形加速器,图形学,三维渲染技术的发展,三维立体视觉游戏已经逐步走入我们的生活。3D游戏可随意转换视角,具有梦幻般的场景,并且极强的视觉冲击力,正在被越来越多的人关注。党的十七届六中全会提出将加速推动文化产业成为国民经济支柱产业,而游戏业的核心作用日益明显。三维游戏目前仍然是市场开发的重点领域也是占整个游戏产业收入最大的一块。三维游戏引擎系统是3D游戏开发中最核心的技术,弓丨擎系统的好坏直接决定一款3D游戏的成败。
[0003]虽然目前市面上已经有很多成熟且优秀的3D游戏引擎系统,比如EPIC的虚幻引擎系统,Crytek的CryEngine,EA的Frostbite,Unity3D引擎系统等,但是采用这些引擎系统进行游戏开发不仅需要缴纳高昂的授权费用,而且由于对引擎系统底层实现的不熟悉,开发过程中可能会遇到瓶颈和后期性能优化的问题。

【发明内容】

[0004]为了解决现有技术存在的上述问题,本发明提供了一种应用于游戏的3D引擎系统,该系统具有良好的封装和组织架构,模块化设计,DLL插件式功能扩展,高效的场景管理和渲染模块。同时配套有完善的游戏开发必需的各种工具。
[0005]本发明游戏引擎系统主要包括游戏应用上层,中间引擎系统层,操作系统底层三部分。游戏应用通过调用引擎系统的渲染接口间接调用操作系统底层渲染接口实现高效的三维图形渲染。
[0006]本发明所采用的技术方案为:
[0007]一种应用于游戏的3D引擎系统,其改进之处在于:所述引擎系统包括游戏应用上层,中间引擎系统层,操作系统底层;
[0008]所述中间引擎系统层包括引擎系统核心模块、资源加载模块、资源管理模块、核心渲染模块、场景管理模块、多线程模块、事件系统模块、日志系统模块、声音模块、数学模块、渲染单元、地形模块、天空模块、特效模块、相机模块、动画模块、模型模块、shader模块、角色模块、后效模块和灯光模块;
[0009]所述游戏应用上层、中间引擎系统层、操作系统底层依次连接;
[0010]所述引擎系统通过资源加载模块并配合多线程模块对资源进行加载。
[0011]优选的,所述资源管理模块包括资源管理器,资源组管理器,磁盘10,用于对引擎系统进行统一管理,所述资源管理模块进行资源的查询,插入和删除机制,避免资源的重复加载和资源内存泄露。
[0012]进一步的,所述引擎系统向资源管理器请求资源,该资源在资源管理器中Cache命中,则直接返回该资源,否则资源管理器向资源组管理器发出请求,并将返回的资源指针Cache到资源管理器内部的一个Map容器中。
[0013]优选的,所述日志系统模块用于为引擎系统的其他模块提供服务和帮助,其包括资源加载模块记录各个资源的加载状态;资源管理模块的资源加入,删除操作和内存泄漏进行记录;渲染模块记录渲染设备的状态切换。
[0014]优选的,所述数学模块用于为引擎系统提供向量,矩阵,四元数类和各种高效数学算法;数学模块还用于对使用频率高的算法混合使用汇编语言和SSE进行编写。
[0015]优选的,所述声音模块采用开源中间件FM0D,可支持wav,mp3,acc大多数格式音乐音效的播放;所述场景管理模块将每一帧需渲染的单元挑选出来提供给渲染模块,由渲染模块完成最终的图像输出。
[0016]优选的,所述渲染模块将渲染单元最终渲染到电脑屏幕上变成可视的画面;所述渲染模块提供高度抽象的上层渲染接口,将渲染接口与平台渲染相关API进行分离,便于跨平台支持和扩展。
[0017]优选的,所述渲染模块每帧按照各个渲染队列的优先级从各个渲染队列依次取出各个渲染单元进行渲染;渲染模块采取资源预加载,渲染状态切换最小化,按照材质进行分批次渲染,渲染批次最小化一系列渲染技巧。
[0018]优选的,所述引擎系统渲染应用方法为
[0019](1)每帧渲染需更新场景图,更新各个相机,设置shader参数,分别渲染静态阴影和动态阴影;
[0020](2)场景管理器根据当前场景主摄像机,视距,主角坐标参数对场景对象进行裁剪;
[0021](3)对帧时间更新完成后的场景对象,提取其包含的渲染对象并给渲染对象设置顶点着色器参数,片段着色器参数,渲染状态,变换矩阵,灯光,材质参数一系列参数;
[0022](4)提交至渲染队列;
[0023](5)将每个渲染队列的数据交由渲染模块进行渲染处理。
[0024]进一步的,所述步骤(5)包括
[0025](5.1)渲染模块设置该队列的渲染状态,遍历渲染队列中的各个渲染对象;
[0026](5.2)渲染模块设置渲染对象的渲染状态,顶点数据,索引数据,顶点声明;
[0027](5.3)渲染模块调用DriectX底层API完成对每个渲染队列中的各个渲染对象的渲染。
[0028]本发明的有益效果为:
[0029]本发明简单易用的面向对象接口设计,不仅更容易的实现渲染,进行扩展也非常方便;
[0030]本发明高效且高度可配置的资源管理系统,支持多种格式的文件加载,并支持多线程加载引擎系统渲染需要的各种资源;
[0031]本发明支持读取MPQ格式的资源包进行渲染,不仅实现了资源压缩,加密,还提高了加载速度;
[0032]本发明优秀的场景管理系统通过将渲染实体附属到场景结点的方式进行组织场景,实现了渲染实体与场景树的分离,具有高度的灵活性;
[0033]本发明充分利用GPU编程技术进行各种渲染,支持汇编,Cg,HLSL,GLSL等语言编写的shader,不仅提高了渲染效率而且可以实现各种绚烂多彩的效果;
[0034]本发明支持多种动画,包括数字动画,结点动画,姿态动画,骨骼蒙皮动画及多个动画混合技术;
[0035]本发明支持静态阴影技术和实时动态阴影技术;
[0036]本发明高效的材质管理系统将渲染状态切换最小化,提高了渲染效率;
[0037]本发明支持无限大地形渲染,按照地形块进行渲染,支持多线程地形加载和地形L0D技术;
[0038]本发明全面支持渲染到纹理技术和投影贴花技术;
[0039]本发明丰富高效的粒子系统可以实现各种绚丽夺目的特效;
[0040]本发明全面支持各种天空渲染技术,例如天空盒,天空面,穹顶;
[0041]本发明优化的二进制模型文件格式,加载效率非常高;
[0042]本发明支持多种图片格式,包括jpg,png, dds,tga等,同时支持特殊格式纹理包括一维纹理,volume texture, cube texture 等;
[0043]本发明支持游戏中的各种绚丽的过场动画,增强了玩家代入感,丰富了游戏体验;
[0044]本发明全面高效的日志系统和内存泄露检测系统,便于游戏引擎系统出现问题后进行问题的排查。
[0045]本发明灵活高效的摄像机系统,可以实现各种视角。
【附图说明】
[0046]图1为本发明提供的一种应用于游戏的3D引擎系统结构示意图;
[0047]图2为本发明提供的一种应用于游戏的3D引擎系统中间引擎系统层结构示意图;
[0048]图3为本发明提供的一种应用于游戏的3D引擎系统资源加载流程示意图;
[0049]图4为本发明提供的一种应用于游戏的3D引擎系统渲染模块渲染流程示意图。
【具体实施方式】
[0050]如图1所示,本发明提供了一种应用于游戏的3D引擎系统。本发明的游戏引擎系统将引擎系统的所有核心功能导出到DLL动态链接库插件中,并提供C++头文件供游戏逻辑开发人员使用,具有极强的灵活性和扩展性。
[0051]美术人员将做好的美术资源(场景,模型,特效等)通过引擎系统提供的各种工具转换成引擎系统专用的数据格式提供给游戏引擎系统。引擎系统通过资源加载模块并配合多线程模块对各种资源进行加载,在这个多核普及的年代,多线程资源加载具有很高的加载效率。
[0052]本发明引擎系统的资源加载过程如图3所示,加载到游戏中的资源由资源管理模块进行统一管理,资源管理模块不仅为资源提供高效的查询,插入,删除机制,还能避免资源的重复加载和资源内存泄露。按照资源类型引擎系统定义了多个资源管理器,例如TextureManager,SkeletonManager,MeshManager,EffectManager 等。
[0053]本发明引擎系统资源加载模块具体应用流程为:
[0054]引擎系统请求某资源时直接向相应的资源管理器请求,若该资源在资源管理器中Cache命中,则直接返回该资源,否则资源管理器再去向ResourceGroupManager (资源组管理器)发出请求,并将返回的资源指针Cache到资源管理器内部的一个Map容器中去。引擎系统将资源按照类型分成几个group进行管理,并写入一个.cfg文件中。引擎系统启动时解析.cfg文件,对所有的资源路径解析并cache生成多个以group为单位的资源组,这些资源组又由ResourceGroup
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1