|
1游戏引擎
最早的游戏引擎开发起源于欧美一些国家,从20 世纪90年代初开始,欧美等发达国家就开始大力发展游戏引擎,日前在研发水平上居世界领先的著名游戏引擎例如Quake3、Unreal Torunament、LithTech、Source、Big World、Cry ENGINE2等均出自欧美的游戏公司。从1992年3D Realms公司开发的德军司令部开始,Wolfenstein 3D引擎成为瞩目的焦点。它开发的德军司令部是第一人称视角游戏,为以后的游戏开发提供了非常好的参考作用。同期id Software公司发布的Doom引擎,这是对一个被用于授权的引擎。此后,游戏引擎有了更加长足的发展,具体情况如表1-1所示:
表1-1游戏引擎发展过程
时间 | 典型游戏引擎 | 特点 | 90年代早期 | Wolfenstein 3D | 2.5维的线框和纹理技术,属于2.5维游戏引擎 | 90年代中期 | XnGine Engine | 3D游戏引擎,硬件加速技术 | 90年代末期 | nreal engine | 2位色彩、GPU技术开始成为标准 | 2000年代早期 | Refractor | 增加细节,户外环境 | 2005- | Unity 3D | 光线、像素着色、物理特效,接近超现实主义 |
江峰归纳了对于南水北调施工现场人物漫游视角系统和碰撞检测的处理,对于游戏人物视角进行了很好的研究。翟娜对基于PC平台的Kinect体感游戏进行了深入探讨,对于游戏效率问题进行了很好的解决。况卫对于断块砂岩油藏进行模拟数值估计,对于基于Unity3D进行野外探究进行了很好的示例。
2 Unity3D 相关技术
Unity3D 是由 Unity Technologies 公司研发的一个可以轻松让开发者创建 3d 游戏、基本建筑、3d 动画模型等各种内容技术相结合并能同时发布到多平台的专业游戏引擎。Unity3D 既可以运行在 Windows 操作系统下也可以运行在 Mac OX X下,可以同时将游戏发布到各种主流平台比如:Windows、Mac、Wii、i Phone、Windows phone 8 和 Android。也可以直接使用 Unity 自带的插件将游戏直接发布为可以同时支持 Mac 和 Windows 支持的网页游戏。
2.1 Unity3D 引擎的框架组成
Unity3D 引擎主要是由以下的基本框架构架而成:基本几何:由于 Unity3D 是一款 3D 的游戏引擎,所以开发 3D 游戏首先就要基本对立体空间内各个点的几何进行计算,通过涉及到的数学知识可以精确的完成游戏中玩家和物体的移动位置的计算和分析。还需要对物体的物理引擎进行模拟,比如物体的重力,摩擦力等。通过基本几何的计算就能完成以上这些计算,节省了开发者大量的时间和工作。
资源导入:Unity3D 中的美术资源一般是由专业的创建模型的软件做出的,比如 maya,3dmax 等。这些外部的建模工具一般将做好的模型使用 Unity3D 定义的 fbx 格式进行导入。使用 fbx 格式的优点是如果该模型带有动画、声音,那么它会将动画和声音一并导入带 Unity3D,从而不需要做多余的操作。
脚本解析:如果在 Unity3D 引擎中需要对游戏的逻辑进行处理,则需要使用脚本来控制。同时使用游戏脚本将脚本绑定在物体上可以控制物体的移动和物体的触发条件等等。脚本解析也就是通过执行绑定在物体上的脚本,从而使物体获得脚本定义的属性并执行脚本定义的操作。
网络通信:由于在制作网络游戏时不可避免的要使用到网络,所以 Unity3D支持联网功能,支持数据通过基本的协议进行传输。大量的 Unity3D 引擎制作的网络游戏的出现,不仅证明了 Unity3D 的网络通信模块的成功也为以后的拓展提供了大量的参考。
辅助工具:Unity3D 也拥有大量第三方的插件。Unity3D 的 asset store 为开发者提供了大量的第三方插件和辅助开发工具。开发者根据自己的游戏需要从 assetstore 找寻适合自己的插件可以极大的减少开发的复杂性,大大的缩短开发周期,节约成本。
音乐音效:由于音效和音乐不仅仅是游戏中也是生活中重要的组成部分,所以 Unity3D 引擎为了游戏音效的处理提供了大量的接口。
核心处理模块:Unity3D 为以下几种的核心模块进行了特别的处理,这样可以大幅的提高了游戏的趣味性。
(1)对象处理模块:在 Unity3D 游戏引擎规定了最基本的游戏单元是对象,开发者根据设计不同的对象才能组成开发者自己想要的游戏场景。
(2) 事件处理模块:
Unity3D 通过事件处理模块来改变物体的属性,通过不同的脚本,Unity3D 就可以实时的处理物体的属性变化带来的后果。
(3) 摄像机模块:在 Unity3D 玩家可以看到的东西是通过摄像机采集到的部分。开发者可以设计多个摄像机,并通过不停的切换摄像机可以让玩家达到切换视角的目的。这样多视角的切换会让玩家有种身临其境的感觉。
(4) 渲染模块:一个游戏品质的好坏,除了游戏的玩法外很大程度上取决于游戏的画面。但是游戏的画面一般都是通过渲染模块进行复杂的运算出来的,这样会消耗巨大的资源。所以在开发游戏的时候,一般会将一些材质和光影隐藏起来,在需要的时候在通过渲染模块计算得出最终的画面。
2.2 Unity3D 引擎的开发结构
Unity3D 引擎主要是由应用层、游戏场景、游戏物体和游戏脚本这四个层次共同工作完成游戏的开发的。应用层:应用层是 Unity3D 将单独的应用程序整合到游戏引擎中的。每个单独的模块都负责 Unity3D 开发中的一部分,使用这些整合过后的模块可以节省大量开发者重新开发的时间。
Unity3D 游戏引擎将天空盒模块、发布游戏模块、物理引擎模块、渲染模块等多个单独的模块封装之后提供给开发者使用。开发者也可以根据自己游戏的需求将应用层重新封装成适合自己游戏的模块。
游戏场景:游戏的发生地点就在场景之中,开发者通过设计不同的场景和场景的改变来让玩家进行游戏的交互。设计和制作一个精致的场景可以显著的提高游戏的品质,让玩家在与游戏的交互中获得更多的真实感。在游戏开发的时候,开发者一般会先设计好游戏的场景,然后可以将制作精良的场景复用,这样既可以节省开发者开发场景的时间也可以使游戏的品质得到保证。
游戏物体(Game Object):游戏物体是 Unity3D 游戏引擎中最基本的组件,在 Unity3D 中所有的东西都是 Game Object,开发者通过对 Game Object 添加不同的材质和模型来创建玩家角色和场景中的树木、河流等。开发者对游戏逻辑的控制也是通过将控制逻辑的脚本挂载在相应的 Game Object 上来让游戏可以正常的运行。
所以开发者选择和设计一个合适的 Game Object 可以大大提升游戏的开发效率和提高游戏的流畅度。
游戏脚本:游戏脚本是控制游戏流程的重要组成部分。上面在介绍游戏物体时提到了游戏脚本组件需要挂载在游戏物体上。然后开发者通过编写游戏脚本来控制所挂载的游戏物体的属性。正是通过游戏脚本的控制,从而游戏物体的物理行为、状态的变化、按设计的进行运动等等效果才可以展示出来。开发者通过合理的使用以上四个模块来完成一款游戏的开发,既能节省了开发者大量的时间和精力,同时也简化了游戏开发的流程。
2.4 Unity3D 引擎的特点
Unity3D 有如下几个主要特点:
跨平台由于 Unity3D 支持大多数的主流游戏平台,拥有统一的编辑器,所以只要使用Unity3D 进行开发,便可以直接发布在你想要的平台上,不需要重复开放,大大减少了开发的复杂度。
高度优化的图形渲染管道Unity3D 使用 Direct X 和 Open GL 图形引擎,对 Direct X 和 Open GL 拥有高度优化的图形渲染管道。并整合了高质量的粒子系统,易用高效的着色器、镜头特效等功能。
内置物理引擎Unity3D 使用了 Phys X 的物理引擎,Physx 是目前使用最为广泛的物理引擎,被很多游戏大作所采用,开发者可以通过物理引擎高效、逼真地模拟刚体碰撞、车辆驾驶、布料、重力等物理效果,使游戏画面更加真实而生动。
兼容多种外部资源,Unity3D 可以支持多种文件格式的导入,可以支持绝大多数的主流建模软件。比如:3ds Max、maya 等主流建模软件导出的模型可以直接导入 Unity3D 中使用,而且使用 fbx 文件还可以将动画和声音一并导入。
支持多语言并且可以可视化操作Unity3D 不仅仅使用 C#、javascript、boo 三种语言作为脚本语言,而且可以进行可视化操作,这三种基本脚本语言十分大众,比较容易上手,并且 Unity3D 自带的编辑器 Mono 不仅仅可以实现平时的开发工作,还可以直接在编辑器内对游戏的源码进行调试,从而节省了大量的时间。Unity3D 还支持玩家使用自己熟悉的开发工具进行开发,比如 Visual Studio 等集成开发环境进行开发。
3.结语
我国的游戏引擎研究发展起步较晚,至今还没有足够的熟练度,能够独立自主进行游戏开发的游戏引擎公司也非常有限,只有完美时空,目标软件,涂鸦软件等几家,并且作为他们开发的产品也以自销为主。但是现在国内游戏行业对Unity引擎的关注度正日益加深,不断有采用Unity 开发的移动游戏、网贞游戏、甚至端游曝光游戏引擎具备丰富的网络连接、场景渲染、制图及脚本功能,游戏引擎的发展是密切围绕着三维计算机图形图像而发展的。所以无论如何要看到我国对于游戏引擎方面已经有了足够的重视,并取得了一系列的成果。作为目标软什和国家科委历经十几年的努力所研发的的Over Max SDK游戏引擎,开发环境包括配套工具、游戏引擎、项目管理、Mantis Bug跟踪系统、“Ageia PhysX SDK”系统等,另外国内的例如浙江大学,清华大学等高校已经将“网络游戏引擎研究示范产品开发”和“智能化人机交互网络示范”两个项目正式收入“863计划”,不久的将米相信我们自己的游戏开发引擎也会在世界范围内有立足之地。
参 考 文 献
[1]穆海明, 刘盼, 刘兴华. 基于Unity的游戏开发[J]. 通讯世界, 2016(8):288-289.
[2]唐捷. 基于UNITY3D的小游戏开发[J]. 电脑编程技巧与维护, 2016(23):89-90.
[3]陈雪梅. 基于Unity3D的手机游戏开发[J]. 电子技术与软件工程, 2016(23):71-72.
[4]赵海峰. 基于Unity3D的游戏开发与设计[D]. 山东科技大学, 2014.
[5]胡能发. 基于Unity3d游戏开发中地面及水下效果的渲染设计[J]. 电子世界, 2015(22):161-162.
[6]严宝平. 基于Unity3D的游戏开发及跨平台移植[D]. 南京大学, 2010.
[7]吴志达. 一个基于Unity3d游戏引擎的体感游戏研究与实现[D]. 中山大学, 2012.
[8]任建邦. 基于Unity3D的手机游戏客户端的设计与实现[D]. 北京交通大学, 2013. |
|