• 3D游戏引擎的原理和架构

    随着 IT 产业的蓬勃发展,越来越多的幵源 3D 引擎、商业 3D 引擎都涌现出来了,其中最具代表性的有用于移动端开发的 Unity3D、用于 PC 端开发的虚幻4(Unreal Engine 4,UE4)以及幵源图形学引擎 OGRE。

    Unity 引擎在市面上比较流行,相信大多数 IT 开发者都使用过,先以 Unity3D 引擎为例介绍引擎的原理,Unity3D 引擎提供了一个功能非常强大的编辑器供用户开发使用。

    支撑编辑器运行的是许多己经封装好的 DLL 文件,读者可通过其安装目录查看许多 DLL 动态库文件,这些封装的 DLL 动态库就是 Unity3D 引擎底层封装提供的。

    游戏开发者在使用其开发游戏写具体逻辑时,也需要利用 C# 脚本调用动态库 DLL 封装的函数接口,从而能够执行引擎底层的代码,实现想要的效果。接口的使用可通过查看 Unity 帮助文档获取,它的底层代码的实现对用户来说是不可见的,但这不妨碍使用者开发项目,因为使用者只要知道函数的功能就可以了。

    3D 引擎本身也是一种 3D 软件,主要负责处理游戏虚拟世界的渲染,3D 引擎架构设计其实非常复杂,用到的知识点非常多,比如设计模式、多线程编程、算法、GPU 编程等,但是不管多么复杂,其最基本架构思想还是模块化开发,就比如打篮球一样,不论采用哪种战术跑位,最基本的还是挡拆战术。

    继续模块思想的讨论,以模块化思想设计的 3D 引擎便于扩展,可以有效地减少模块之间的耦合性。

    开发3D游戏引擎时,切记面面倶到;换句话说,3D 游戏引擎的主要功能是渲染。在这方面做得比较好的是开源的 Ogre 图形学引擎及商业引擎 UE4,它们核心功能只是负责 3D 渲染,做 3D 引擎该做的事情。

    对于 Unity3D 引擎,它在 3D 引擎渲染的基础上还增加了网络库等功能,对于引擎来说显得过于臃肿;当然这里不是说 Unity3D 引擎不好,只是其功能太多,对开发者来说并不一定是好事情。

    这种做法对引擎自身来说也不一定是好事情,因为这样引擎的功能失去了重点,所以一提到 Unity3D 引擎,大家的第一印象是其跨平台功能,与引擎核心功能渲染不搭边,而对于 UE4 引擎,大家的第一印象是渲染,UE4 在渲染这方面做得非常专一,结果就是 UE4 引擎渲染功能比 Unity3D 引擎更强大。

    当然 Unity3D 引擎的优点也是非常多的,比如引擎的架构设计使用了组件的理念,使用脚本写逻辑,可以跨多个平台等,而且对于初学者上手非常快,这也是它能快速普及的一个主要原因。

    如果要开发一款引擎具体如何做?引擎由哪些主要模块组成?

    游戏引擎涵盖的模块非常多,它是一个处理游戏所有逻辑的系统。引擎渲染功能是否强大,决定了游戏渲染品质的高低,以及游戏渲染运行的流畅度。

    下面简单介绍一下通用的 3D 游戏引擎架构,如图1所示。

    通用的游戏引擎架构
    图1:通用的游戏引擎架构

更多...

加载中...