游戏引擎的主要功能包括图形模块、AI模块、物理模块、寻路模块、输入模块、网络模块、UI模块、渲染模块、声音模块、编辑器模块等。Unity和UnReal两款开发引擎的功能和性能对比如表所示。
功能性能 |
Unity |
UnReal |
优劣 |
---|---|---|---|
多线程渲染 |
支持但是一些Android设备不稳定有概率崩溃,多线释不彻底多核利用率低 |
更完善 |
Unreal |
渲染管线 |
正向、延迟、可定制 |
正向、延迟、可定制 |
相似 |
Shader |
以UberShader的方式提供shader变种管理,也可以通过插件实现ShaderTree |
使用蓝图完成shader的编译,也可自己实现,一般会项目自己优化 |
各有优劣 |
各种渲染效果例如:后处理体积零,体积光阴影等 |
支持基本的,可以自己或通过插件实现 |
官方支持更多,但性能还不稳定 |
Unreal容易实现但需要优化 |
面部表情,换装 |
需要自己实现 |
需要自己实现 |
Unreal更容易实现 |
PBR、GI |
官方支持 |
官方支持,但性能还不稳定 |
相似 |
SSS材质、次表面散射 |
插件或自己实现 |
官方支持,但性能还不稳定 |
Unreal更容易实现 |
动画:混合动画,骨骼动画,IK、布娃娃等 |
官方支持,使用简单旧性能不高扩展较难 |
官方支持,但相对复杂性能不确定 |
Unreal更容易深度优化和扩展 |
大规模地图世界分层管理 |
支持较弱,需要自己实现 |
强大的大世界支持和LOD管理 |
Unreal |
地形 |
支持但功能很弱优化也弱 |
强大 |
Unreal |
天气 |
需要自己实现 |
需要自己实现但更容易 |
Unreal更容易实现 |
特效 |
Shuriken简单易用 |
功能更强大,支持GPU粒子 |
Unreal |
植被 |
第三方插件 |
强大的官方支持 |
Unreal |
CG制作及相机动画 |
Timeline |
Matinee,蓝图 |
相似 |
UI |
UGUI上手简单,优化比较难 |
编辑器比较难用 |
Unity |
性能 |
多线程部分性能较弱,因为架构以及C#语言和C++通信,C#语言本身,GC等问题,整体性能有一定折扣。 |
引擎本身非常庞大,拥有非常多的组件不进行深度优化的话性能也不强。但是优化好的情况DC比Unity可以提升一倍左右适合多人同屏(Android目前还有较大的化)问题,比IOS差一个量级) |
Unreal(需要深度优化) |
物理 |
集成Physx3.3但只包含核心功能,布料模拟、射线投射、物理粒子、复杂碰撞,物理步长等都支持。但是 APEX可破坏物,Flex流体,载具不支持(只有 WheelCollider)较难扩展。 |
集成Physx3.4,支持更好更全面,更容易扩展,提供 PhAT的物理资源编辑器 |
Unreal |
声音 |
生成FMOD,但一般开发都会选择FMODStudio或者 wwise |
生成FMOD,但一般开发都会选择FMODStudio或者 wwise |
相似,一般会选用第三方组件 |
Al |
引擎本身很弱但是有丰富的AI插件,可以根据项目自己定制 |
引擎自身集成BehaviorTree |
相似,一般 MMO会定制 |
寻路 |
NavMesb |
NavMeshBoundsVolume |
相似,一般 MMO会定制 |
网络 |
提供UNet但一般很少人用 |
提供强大的网络解决方案,但是更适台FPS,一般 MMO不会使用 |
相似,一般 MMO会定制 |
跨平台和适配性 |
非常强大简便的跨平台和适配性 |
移动平台兼容性更差,显示效果差异和问题较多。目前Android版本适配和优化较差还在开发中 |
Unity |
热更脚本系统 |
第三方集成xlua等 |
UE4去掉了uScript,蓝图性能可能有问题,不合适复杂逻辑。一般也需要集成lua |
相似,一般会项目组定制 |
编辑器 |
编错器非常精简但是使用简单属于扩展,并且有现成资源和积累 |
编辑器更复杂功能强大,但学习门槛会高一些,开发 MMO需要定制 |
Unity |
场景管理 |
容易实现但动态加载支持较差,容易卡顿 |
天然支持,成熟完善,比Unity强大很多 |
Unreal |
插件 |
在移动端更占优势,插件更全面 |
Unity |
|
开发效率 |
C#开发效率高,不容易崩溃 |
C++需要编译,开发难度高 |
Unity |
学习和时间成本 |
学习成本低,资料比较完善 |
上手较难,开发C++逻辑要求更高,对美术和策划要求更高 |
Unity |
人员招聘 |
容易 |
难 |
Unity |
在高端渲染效果和渲染技术上Unreal更有优势,性能更佳,画面效果完全达到3A游戏水准,光照和物理渲染即便在缩水的状况下也足以秒杀Unity,但是相对低端设备的兼容性会略差,特别是Android设备。Unity要实现相同的效果需要项目开发团队自己做很多开发工作。
Unity更容易上手,前期开发更快速,更容易做出适配更广的游戏,但一些次时代技术需要自己实现。而Unreal学习成本较高,开发效率较低,但是更容易做出顶尖效果的游戏,更适合开放世界,大型项目。
如果开发超高画质超高品质、开放世界的3A级游戏,在项目周期和成本比较宽裕的情况下,如果图形技术积累较弱,建议采用Unreal引擎;开发周期较短,或者有着深厚的图形技术积累和技术支持,建议使用Unity引擎。