一、引擎的介绍

随着游戏开发的不断进步,游戏开发越来越庞大复杂,因此游戏引擎已经成为游戏开发必不可少的工具。引擎对基本的功能封装,对工具链的提供等都可以大幅降低游戏引擎的开发难度,提高开发速度和质量。

对于目前市场,3D手游的引擎选择主要分四部分:

  • Unity:在移动端更有优势占据手游市场70%的占有率,各种品类游戏都有;
  • Unreal:两款正版吃鸡手游都是使用Unreal引擎,但手游MMO目前国内还没有上线产品,国内端游MMO成功的也很少;
  • 自研引擎:例如楚留香的Messiah,太极熊猫的Flexi等,优点在于非常熟悉可以提供深度定制和优化;
  • 其他引擎:应用较少不进行考虑。

这里其实选择的余地比较小,对于大部分没有自研引擎的公司来说,还是选择Unity居多,但是随着硬件的不断发展以及Epic公司自己的不断优化和持续更新,Unreal在手机上也有越来越多的公司和项目选择使用了。

部分已知手游项目:

(一个重要的选择原因:如果一款引擎在同类型项目中有成功项目,则我们可以很大程度相信这款引擎。)

二、选择引擎的基本原则

按照软件工程的开发流程,我们首先应该明确需求。以下是一些常见的需求点:

  • 游戏类型?
  • 目标用户,目标平台,目标机型是什么?
  • 项目周期,成本和团队实力?
  • 更倾向画质品质还是适配性?
  • 是否有特殊的技术需求?是否大世界?是否支持物理?是否写实风格
  • 何种同步技术?
  • 等等

然后我们需要考察引擎的特性是否和我们的需求相符。

1、必须满足的特性,如果不支持则不能选用该引擎:

  • 是否有成功的同类型产品?
  • 引擎是否支持想要发布的平台,兼容性如何?
  • 引擎的性能如何?包括CPU,GPU,内存等等,例如早期的Unreal如果开发商不做优化无法在低配手机上流畅稳定的运行。
  • 引擎的成本如何,和团队的技术栈是否契合,开发效率如何?
  • 引擎是否支持想要的技术?

2、最好支持的特性,但如果不支持可以第三方库或自主开发解决:

  • 如果是多人在线游戏,引擎是否已经封装了成熟的同步机制?
  • 是否支持更多的DC和更完善的优化?
  • 如果是开发大世界游戏,引擎是否支持成熟的大世界系统(包括地形,植被,LOD,遮挡,优化等等)?
  • 如果需要高级AI,引擎是否能高效完善支持?
  • 如果需要物理碰撞,引擎是否能高效完善支持?
  • 负责逻辑是否支持脚本,是否支持脚本可视化编辑器?
  • 是否支持热更?
  • 引擎是否自带编辑器(动画,场景,特效,UI,粒子等),以及编辑器是否适合,是否支持扩展?
  • 第三方插件和库的支持如何?
  • 引擎是否有良好的文档,是否有开发商官方的技术支持?
  • 引擎是否完善的开发工具?如性能分析,打包等等。

三、引擎的功能划分和对比

有一句话说的好:

美术资源决定了游戏世界的外观,脚本资源决定了游戏世界的内容,而引擎部分决定了游戏世界的规则。

一款引擎往往包含,图形模块,AI模块,物理模块,寻路模块,输入模块,网络模块,UI模块,渲染模块,声音模块,编辑器模块等等,如果要全面评估我们应该针对二手手游账号各个模块进行详细的评估和对比。

但说道引擎,往往大家的第一印象都是引擎的图形渲染能力,可见图形对于引擎来说是至关重要的,因此我们会分为两部分,图形模块和其他模块,然后进行详细的比较。

图形模块

图形是游戏引擎的重中之中,主要功能就是提供封装底层的渲染接口(D3D,OpenGL,Metal,Vulkan等),渲染管线的定制(前向渲染,延迟渲染,多线程等),适配(PC,IOS,Android),以及一些基本渲染功能的提供例如后处理(抗锯齿,景深,屏幕矫色,扭曲,描边,SSAO等等),阴影,地形,捏脸,动画,天气等等。

由此可见在高端渲染技术上Unreal更有优势有强大的官方支持,性能也极佳,但是相对的低端设备的兼容性会略差特别是Android版本。Unity也可以实现相同的效果但是很多工作都需要自己开发。

其他

经过对比可知Unity更容易上手前期开发更快速,更容易做出适配更广(内存和稳定性)的游戏,但一些次时代技术需要自己实现。而Unreal学习成本较高开发效率较低,但是更容易做出顶尖效果的游戏,更适合开放世界,大型项目。

四、总结

如果是项目周期和成本比较宽裕,希望开发超高画质超高品质,开放世界的游戏,同时图形向技术积累较弱推荐使用Unreal,特别是FPS射击类游戏;如果希望开发周期更短,或者有着深厚技术积累和技术支持推荐使用Unity。此外引擎的选择也受美术和策划的影响,特别是美术同学,对编辑器和引擎的熟悉成度对进度,效果和性能也有着非常大的影响。

其实对于大部分的游戏,两款引擎都可以满足需求,主要的差异还是在品质,时间,成本的项目管理三角形的取舍上。适合自己的才是最好的。

Unity VS Unreal,游戏开发该如何选择引擎?相关推荐

  1. Unity 4.x游戏开发技巧集锦(内部资料)

    2019独角兽企业重金招聘Python工程师标准>>> Unity 4.x游戏开发技巧集锦(内部资料) 淘宝书店地址:http://item.taobao.com/item.htm? ...

  2. 《Unity 3.x游戏开发实例》一1.5 欢迎来到Unity 3D

    本节书摘来异步社区<Unity 3.x游戏开发实例>一书中的第1章,第1.5节,作者: [加]Ryan Henson Creighton 译者: 师蓉 责编: 陈冀康,更多章节内容可以访问 ...

  3. Unity简单2D游戏开发

    Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...

  4. 《Unity 3.x游戏开发实例》一第2章 让我们从天空开始

    本节书摘来异步社区<Unity 3.x游戏开发实例>一书中的第2章,第2.1节,作者: [加]Ryan Henson Creighton 译者: 师蓉 责编: 陈冀康,更多章节内容可以访问 ...

  5. 《Unity 3.x游戏开发实例》——1.5节欢迎来到Unity 3D

    本节书摘来自异步社区<Unity 3.x游戏开发实例>一书中的第1章,第1.5节欢迎来到Unity 3D,作者邓文渊,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. C#和Unity编码和游戏开发学习教程

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:110节课(26小时25分钟)|大小解压后:18.6 ...

  7. Unity 4.x游戏开发技巧集锦第2章摄像机的应用

    Unity 4.x游戏开发技巧集锦第2章摄像机的应用 作为游戏开发者,千万不要忽略了摄像机(Camera)的重要性.毕竟玩家是通过摄像机,才看到了游戏的视图.本章将介绍一些摄像机的常见应用.本文选自& ...

  8. 《Unity 3.x游戏开发实例》——2.10节注意

    本节书摘来自异步社区<Unity 3.x游戏开发实例>一书中的第2章,第2.10节注意,作者 [加]Ryan Henson Creighton,更多章节内容可以访问云栖社区"异步 ...

  9. Unity 5.x 游戏开发指南 HD版 final.pdf

    下载地址:网盘下载 <Unity 5.x游戏开发指南>详细介绍了Unity3D 5.0的各个主要系统,包括地形系统.脚本系统.动画系统.界面系统.音频系统.网络通讯系统和2D系统,并通过大 ...

最新文章

  1. 云栖大会看技术人成长之路
  2. 深入分析几种PHP获取客户端IP的情况
  3. 送福利:ROKID 语音开发板免费送,开启你的物联网之旅
  4. mysql gui 分区_一文彻底搞懂MySQL分区
  5. go语言 os.Rename() cannot move the file to a different disk drive 怎么办
  6. 监视和排错客户端性能和连接性
  7. ajax post请求发送数组后台接收
  8. SQL语句详解(五)——SQL字段修饰符
  9. Java开发笔记(一百三十一)Swing的列表框
  10. C# 创建基于TCP、HTTP协议的JsonRpc 2.0(可跨平台、跨语言)
  11. JNI入门与进阶,JNI调用外部非标准程序SO【一】
  12. 如何给PDF加水印?PDF加水印教程
  13. 51单片机系列--led点阵屏显示汉字
  14. c语言一本书的页码从自然数1开始顺序编码,C++_关于统计数字问题的算法,一本书的页码从自然数1开始顺 - phpStudy...
  15. 【福利】小程序开发资源干货汇总
  16. L1-079 天梯赛的善良 - java
  17. Android 4.0 平台特性
  18. 服务器端安装conda | 配置conda环境
  19. 程序员需要具备的五个基本条件
  20. JS基础学习(十):字符串的大小写转换、trim()方法、JS字符串截取和模版字符串

热门文章

  1. python画图中grid等于true_Python3.0科学计算学习之绘图(二)
  2. gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署
  3. 云服务器共享文件如何访问权限,怎么设置共享文件夹访问权限?
  4. ajax点评wnv冠军,对话wNv高层探知焦点 剑指世界冠军铸就王者路
  5. linux 键盘记录,学习笔记 kali linux 关于MS17-101漏洞攻击与键盘记录
  6. linux stdin shell,关于shell:如何在Alpine Linux中修复“因为stdin不是终端而不会分配伪终端”?...
  7. 【C++】运算符重载 Operator Overload
  8. CodeForces 1204 (#581 div 2)
  9. 我的博客园第一个博客.
  10. SDN中的Heavy-Hitter测量文献阅读