游戏引擎的主要功能包括图形模块、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引擎。