第三章 通用的游戏引擎

3D游戏引擎的通用模块:


image

参考上图,不论是U3D还是UE4,又或者cocos2d-x的3D模块都会提供以上的几个功能,不过,U3D和UE4提供可视化工具,即"所见即所得"的方式来开发。cocos2d-x需要通过代码自行调用模块。

一般定义的游戏模块有以下几点:

  1. 渲染引擎
  2. 物理引擎
  3. 碰撞检测
  4. 脚本引擎
  5. 网络引擎
  6. 场景管理
  7. 音频UI

通用的引擎框架模块,也就是说,只要深入的学习过一款引擎,那么会很快的上手其他引擎。

学习一款引擎从哪里下手?

通常的做法是看到引擎代码后,先看看其说明文档,它能做哪些事情,比如这款引擎核心功能是什么?它擅长做哪些事情?

以Unity引擎为例,它首先解决的问题跨平台的问题,制作的产品可以一键导出Android和ios以及其他平台的工程。帮助开发者解决了大部分问题,因为它满足了当前产品需求。其次是它提供了脚本编程,因为C++对于开发者来说难度比较大,不容易掌握,而C#就解决了这个问题,只要有编程语言功底的都可以使用该脚本。再次,它提供了一个功能比较完善的编辑器,开发者通过这个编辑器可以很容易进行场景的搭建和逻辑的编写。最后,Unity的学习对于初学者上手非常快,另外它的架构保证了引擎的扩展性非常好。大部分功能都可以通过插件的方式进行完善。

留一个问题,可以考虑一下,如果学习cocos2d-x引擎,如何下手?支持的编程语言有哪些?它的优缺点是什么?游戏框架如何组织的?

以下分析一下通用3D引擎的各个模块:

底层算法模块:这个模块是处于核心的模块,包含图形学算法,向量和矩阵变换等等。如果想要在游戏领域更加深入,那么,这个模块是必须要深入学习,一般情况下, 了解一下就行。

渲染模块:渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。

碰撞检测模块:碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。

脚本引擎:提供脚本接口,让开发者,通过脚本设计游戏,使游戏的开发更加灵活。

网络引擎:数据交换的模块,在开发多人在线游戏时使用。

物理引擎:模拟物理世界,开发出类似物理世界的效果。

音频UI:提供音频特效,以及游戏的UI部分,让游戏与用户进行交互。

一般来说,各个游戏引擎的各个模块的名字可能不一样,但是效果实际上是一样的,比如说:在U3D中,材质,贴图等术语,在cocos2d-x中,有精灵,贴图,场景等术语,在libgdx中,有演员,舞台,贴图等术语。虽然各有不同,但实际上都具有一样的效果,只是每个引擎的内存管理,组织结构不太一样。

U3D的入门与进阶的路径知识:

大体的知识结构网络图:

[图片上传失败...(image-f8aff6-1533862127439)]

阶段划分:

初级阶段:学会简单的使用U3D框架,了解和熟悉U3D的基本模块,跟着视频做一些小项目

中级阶段:学会使用中间件,中间件不必全学,推荐几个Asset:Behavior Designer(AI), DoTween(Tween动画), PlayMaker(可视化编程),Shader Forge(可视化的Shader编写)和Elementals(粒子特效),此阶段,能够独立做简单的一些小游戏。

高级阶段:要对Unity的各种细节问题,优化,底层原理和新的技术方案都要进行思考和学习。

PS:推荐几个社区,Unity社区,Unity Answers,Unity Wiki和知乎的Unity板块,在以上几个模块中,知乎的Unity板块尤其值得关注,干货满满而且都是中文,建议通读

以及U3D模块分析图:

image

你可能感兴趣的:(第三章 通用的游戏引擎)