当前位置:   article > 正文

2023年Unity游戏方向技术路线图发布

unity客户端开发技术路线
作为全球领先的游戏开发引擎之一,Unity致力于通过定期迭代新功能、响应开发者需求赋予用户在游戏开发领域的持续竞争力,为玩家提供更高质量的游戏体验。在广东省游戏产业协会与Unity中国联合主办的IGDC国际游戏开发者大会中,Unity 中国高级技术经理刘伟贤先生介绍了 2023年Unity在游戏方向的Roadmap ,包括面向数据的技术堆栈 (DOTS)、图形、美术工具、多人游戏等方面的内容。
大家下午好!
我是来自Unity中国的刘伟贤。今天我给大家带来的是2023年Unity针对游戏方向的路线图,包括Unity在2023年里有哪些新的特性,以及我们在今年会在技术路线上有怎样的规划。
Unity的目标和使命非常简单, 我们希望能够帮助各位开发者创造出非同反响的游戏,并轻松触达到世界各地各类的玩家。 开发者的反馈对于我们来说是至关重要的,并且会直接影响到我们工作的优先级。正是因为有了你们的反馈,我们才能携手并进。
这里是我今天要介绍的路线图。首先,我们希望提供一个稳定的、快速的、统一的平台以及内核;其次,我们会致力于让渲染能力具备更强大的可扩展性;最后,让引擎实现深度profiling及性能优化。
以这三点为基础,大家就可以使用Unity引擎构建一个更庞大的游戏世界,与更多用户产生连接,并且能够触达更多目标平台,也可以通过我们的各种云服务跟全球更多开发者合作与连接。
我们的版本分为两种,一种叫LTS版本,即长期维护版本,官方会对其提供持续两年的支持,适合新手以及商业项目使用;另一种叫Tech Stream技术版,Tech Stream 版可让用户亲身体验早期功能、提出功能反馈,适合科技发烧友。
下面我们正式进入整个路线图的细节讲解:
首先来看第一部分。

构建稳定、快速且统一的内核

Unity引擎基础设施以及引擎内核对于每一位Unity开发者和玩家来说是非常重要的。今年我们将带来以下内容更新:内容生成管线(Content Pipeline)、包管理器(Package Manger)、输入系统(Input System)、.NET 和 IL2CPP,以及UI Toolkit。
先来讲讲内容生产管线的提升。
首先是:Shader Variant prefiltering,这个功能能够极大减少Shader的编译时间,会在2023.1的版本中发布,并连接到2022的版本。
以往,Shader是放在打包的后段才会去处理的;并且在原来引擎的机制里面,Shader匹配的机制并不准确。在引入Shader Variant prefiltering后,我们把Shader提前了,在Editor的使用阶段就把这些变体确定下来,并且排除无效的变体。通过这个功能,我们也会给Shader的变体做更加严格的匹配。
如果有在打包资源里不存在的变体,Unity引擎就会直接用一个粉红的Shader表达出来,而不会像选择一个跟它接近的Shader来代为呈现(现在的做法)。在我们的测试数据中,该功能可以极大提高整个Shader的处理及构建流程,提高的效率高达90%左右。
另外,为了实现更快的迭代速度及内容生产速度,我们新推出了一个功能,叫Prefab replacement。它可以很方便地替换原来的Prefab,并选择是否保留或去掉原有的修改。这能够让我们日常场景的搭建或Prefab的变体方面,获得更加丰富的体验。
最后,在Addressables上,我们也提供了一个新的可视化工具,该工具可以显示用户正在使用Addressables去构建资源的信息报告,让大家更加清晰地了解到其结果,并通过这个报告,验证打包结果是否与预期一致。在AssetBundle的构建方面,Unity 2023.1也会提供一些试验性的特性,如利用多核的机器资源进行导入处理和打包处理。
在文件格式方面,我们也会引入USD的格式支持,因为USD格式正在慢慢成为未来的标准。除此之外,在2023.1版本中,用户还可以在ECS项目里解锁新的文件格式。这种文件格式能实现更快速的加载、更好的内存扩展,达到我们在Mega City这个Demo中的惊人效果。
Package Manager是每一位开发者在日常的工作中都离不开的,它能够帮助用户快速引入或移除某些插件或功能。今年,我们的目标是让它更具可扩展性,而且更加透明。
首先,我们在缓存位置方面进行了改进,方便大家自定义Package存放的位置。其次,我们也扩展了一个多选功能,方便大家对多个Package进行操作和修改。最后,我们正在研发针对Package的签名功能,让大家能清晰得知道当前这个Package的版本状态以及它的修改状态。
在Unity编辑器中,我们的Input System使用起来是比较复杂的,对于新来的开发者而言并不友好,所以我们希望把它变得更加简单一点。
我们会提供一套High-level的API方便用户使用,并且提供一个action map让大家有统一的地方配置全部输入及响应事件的处理。
.NET and IL2CPP对于我们来说是非常重要的部分。针对这方面,我们首先对Async/Await进行了改进。在Unity里面有很多不同的Async的API实现,这些API都有不一样的运行模型或交互模式,它们混在一起使用是非常困难且复杂的。所以我们想把它们统一到一起,提供一个现代化的、功能相似的Unity异步接口,并且支持Async/Await这样原生的关键字,这些都会在2023.1的版本中实现。
对于Burst,我们有三个提升:第一是关于编译时间,我们增加了增量构建的方式,能减缓构建时间;其次,是关于调试体验。从2022.2开始,用户就可以Debug经过Burst编译出来的代码,并且对于call stack还有一些exception的现实都能正常提供,当然也包括debug时候的代码跳转;最后,在Burst 1.8中,我们会提供一个新的inspector,用户可以更好地复查和探索代码。
同时,我们还有一个非常重大的计划,就是去拥抱.NET的技术生态,包括CoreCLR,支持最新的API,以及将编译流程迁移到MSBuild和NuGet上。这将是一个长期的计划,会让Unity的开发流程变得更加通用及稳定。
在UI Toolkit方面,我们的目标是提供一个强大、完整、独立的解决方案给用户去生产UI,并且让开发者和设计师能在Editor工具运行时同步展开交互式工作。
今年,我们会主要提供UI widgets以及更多Editor的自定义形状扩展。我们提供了一些新的控件,比如TreeView、Multi-column等等;也提供了更加底层的API,比如Vector drawing APIs。对于一些想要用UI Toolkit来做游戏UI的同学,我们还发布了一个完整的sample工程供大家学习。UI Toolkit将成为我们最推荐的UI解决方案。
Profiling和Performance是游戏开发者逃不开的话题,针对这一部分我们带来两方面提升。第一是关于Profiling,第二是关于优化。
在2022.2的版本中,我们推出了Memory Profiler1.0.0,其提供了更好的UI、UX体验,更加清晰的数据整理集成线,以及更好的数据分类方式等等,我们希望开发者通过这个工具能够快速定位出性能的问题,并且提前修复。
Unity Editor以及runtime的性能也是我们非常关注的模块,在2022年的版本里面,我们针对大场景数据及动画数据的存储、读写都做了提升;在2023.1的版本中,我们也会有更多关于Editor的性能改进。
接下来我们来看看美术关心的渲染、数字人和植被。

打造更精美的画面,SRP、Ziva和SpeedTree

渲染方面的改进,涉及三个部分——第一是SRP的核心基础包,以及从这个核心基础包衍生出来的URP和HDRP。
在2022之后的版本中,我们会继续聚焦于给URP和HDRP带来更多提升,与此同时,我们也在回顾SRP的code。对这个基础的核心包,我们提供了众多新特性:包括Material Variants,方便快速对用户的材质进行扩展和修改;Full-screen master node,让用户在Shader Graph里更好实现自定义的屏幕后处理效果;VFX Graph的增强以及Adaptive Probe Volumes——关于GI,这些都是大家非常期待和需要的功能。最后,URP跟HDRP的完美整合简化了跨平台内容创作的复杂度。
在2022.1的版本中,我们引用了Material Variants,用户可以基于一个常规材质去制作材质的变体,而这个材质的变体能够与模版材质共享一些通用的属性,也可以根据需要去修改部分属性。当用户对模版材质进行修改的时候,相关修改也会被应用到材质变体里面。另外,用户也可以锁定部分模块材质的特殊属性,以避免材质变体的这部分属性被修改。这个功能听起来跟我们的Prefab Variant有点类似,但是它更加强大,再配合上我们之前提到的Shader Variant prefiltering功能,就能实现效果丰富且资源可控。
Shader Graph在2022.2的版本中引入了Full-screen master node,可以实时看到自己编写的后处理效果,方便用户在Shader Graph中进行改进和调整。对于Full-screen master node,用户可以通过全屏后处理节点扩展出自定义的后处理,比如像左边夜视效果,也可以利用这个节点扩展出各种自定义的passes,比如说做边缘检测、物体高光等功能。
除此以外,用户也可以渲染一些程序化生成的贴图,比如说HDR的夜景、星空图、雨滴动画等等,而Full-screen master node也被应用在一些局部体积物的实现上面。可见这个节点的加入,极大丰富了Shader Graph的功能。
VFX Graph能够让用户通过节点编程的方式创造出来更强、更丰富的粒子效果。在2022的版本中,我们也针对VFX Graph做了很多提升。
首先是Instancing,帮助用户在一个VFX的Graph里面渲染更多的粒子。另一个功能叫做Boolean ports,让用户拥有更多灵活性,可以控制效果的配置,也可以关掉部分的VFX Graph,从而实现一些酷炫的效果。
在烟雾效果的模拟上,我们提供了一个新的特性——基于六面光照图的烟雾效果实现( 点击查看案例 )。在2022.2的版本里面,我们引入了一个完整的端对端,也就是从ECC工具到Unity的工作流,允许用户真实地渲染、烘焙模拟这种效果。这项技术基于一组烘焙的光照贴图,这些光照贴图带有6个方向的光照信息,通过这些烘焙的光照贴图,我们能够实现复杂的灯光交互,提升视觉效果的同时也兼顾了性能和显存的消耗。
最后,Adaptive Probe Volumes还引入了Timeline的支持,我们可以通过Timeline实现一些交互效果,也可以让VFX更好地融入不同系统以及不同动画效果。
Adaptive Probe Volumes简称APV,是我们在2022.2版本引入的一个新特性,它能够实现更好的场景GI效果。除此以外,APV也提供了全自动的Light probe排布工具,相比之前手动排布的方式更加方便,减少迭代时间。APV也提供了更好的间接光效果,对于光照的计算从之前per object的方式变成了per scene的计算。在2022的版本中,我们会继续打磨这个APV模块,并且在HDRP里面作为预览功能。在2023的版本中,我们将把它扩展到URP,同时持续提高它的功能、质量,比如对于静态物体的防止漏光、针对不同场景的光照需求进行混合以及大场景等等。除此以外,我们也会额外对GI做一些提升,比如说SSGI、光线追踪等等。最后我们也会开放一些API,方便大家去做Light baking。
下一步是非常重要的,URP和HDRP的快速切换。为了达成这个目标,我们有两个非常重要的事情要做。第一,我们需要让URP和HDRP放在同一个项目里,不同的pipeline去设置不同的配置,让引擎能够根据不同的渲染管线工作。第二个特性是Block shaders。这个特性专门针对切换Shader,它提供了一个创新的工作流,以简化、模块化的方式去创作Shader中的一些block。Block shaders 的使用方式就像搭积木一样,基于Block shaders的template,用户可以去定义中间的block,Block shaders就会根据用户定义的block串连起来,根据不同的管线去走统一的流程。
接下来是URP。URP是目前可覆盖平台最广泛的,可以提供渲染质量以及性能最佳的管线。后续我们也会继续增进它的特性,并且在工作流以及平台扩展上也会有一定的增强。
在2022.2版本里,我们给URP添加了Forward+,这个特性能让URP摆脱灯光的限制,让它们实现更高、更好的实时光表现。在Forward+管线中,对于per-Object没有灯光限制;对于per-Camera有一些灯光限制,PC跟主机平台目前限制是256盏灯,而在移动平台限制是32盏灯。这个灯光在目前的Forward+版本里面是通过ECS(Unity Entity Component System)实现的。另外我们也对LOD的过渡有一些改进,让LOD的过渡和混合更加自然。
贴花的部分,现在用户可以通过设置去过滤或配置需要接受贴花的物件,从而一定程度提升性能。由于该功能不支持SRP Batcher,因此使用的时候一定要配合GPU Instancing功能。TAA也会在2023的版本上出现,这样URP基本涵盖了所有AA的主流算法——TAA、MSAA、FXAA、SMAA。
在HDRP上,我们会专注打磨整个生产工具,继续提升HDRP的性能和质量,同时保持它的可扩展性,帮助大家更顺利制作3A级作品。我们主要投入在两个方面,第一是基于物理正确的环境,第二是数列相关的。
在2022.2版本中,我们改进了基于物理正确的天空,让Cloud Layer的动态光跟Volumetric Clouds设置进行更好的混合,能够支持随着时间,光照以及风、天气变化改变渲染效果。同样,我们做海洋、湖泊的水系统也支持深度模拟和采样,使得它能对时间跟环境的变化做出反应。
在2022.2以及2023.1的版本上,我们都提升了半透明相关的渲染效果,通过更加简单易用的Diffusion Profile实现在皮肤材质上更好的折射效果。
对于高保真数字人,我们提供了一整套完整的头发模拟和头发渲染方案。这是一个基于引导线的毛发系统实现,能实时生成并且渲染海量的毛发,并且能做出各种真实的物理碰撞以及摆动模拟。这套头发方案已经打通了数据格式,完全可以投入到实际的生产环境当中。目前关于头发的demo,大家也可以去下载学习和使用。在2022.2的HDRP的版本里面,头发Shader也提供了一个基于物理正确的选项供大家使用。
接下来我们看看美术生产工具,在2023的版本里面,我们针对角色和环境、植被等,都进行了改进。
首先是Ziva,Ziva是去年加入Unity大家庭的,我们正在努力把它的技术和工作流放到Unity中。这里涉及三个部分—— Ziva VFX、Ziva Real-time以及Ziva Facetrainer。对于大家来说,Ziva Facetrainer是大家目前可以马上拿来用的功能,它支持ARKit以及无标记头戴摄像头的捕捉,能够提供精确、可扩展的实时人脸捕捉和回放技术。
今年,我们将会为Unity用户免费推出Ziva Real-time的播放器,可以让面部训练出来的动画无缝简单地放到Unity中使用。
植被相关的制作工具早在2015年就已经部分出现在Unity里,比如SpeedTree,它能够帮助大家制作植被相关内容,但是之前的整个工作流不是特别丝滑。自收购了SpeedTree起,我们一直跟SpeedTree的工程师共同努力改进其在Unity里面的工作流,所有的工作流提升、表现效果提升以及性能提升都将会在2023的版本中得到体现。
SpeedTree在9.3版本中提供了更多更强大的功能,比如通过照片建模的方式程序化生成树木,利用徒手雕刻的方式实现风格化造型的模型。在SpeedTree + Unity方面,我们改进了SpeedTree和HDRP、URP的集成,新的风场技术也减少了开销。SpeedTree的资产库还更新了上百款来自于世界各地的模型,新增了很多真实环境扫描出来的照片及材质。
下一部分我们会讲Unity作为服务器或者说作为网络部分的相关内容,这也是很多中小客户翘首以盼的特色。

构建多人游戏+扩大游戏承载+平台可达性

我们正在打造一个多人游戏构建的基础设施,第一是Netcode,它是一个网络库,第二是网络工具及服务,最后是Multiplayer工作流。
Netcode for GameObjects是Unity构建的一个High Level网络库,它用于抽象网络逻辑,能快速帮用户通过网络同步许多Unity数据,并且支持跨平台。使用Netcode,用户可以专注于构建游戏,而不是去处理各种low level的网络协议及网络框架。目前Netcode for GameObjects在2020、2021、2022的版本中都已开箱即用。
这些Network tools and server都是Netcode for GameObjects的核心工具,主要帮助大家定位网络性能的问题。第一个可以脱离Editor的状态追踪实时网络状态及流量状况,第二个是监控整个网络状况及流量信息,最后UTP 1.0提供了跨平台的抽象层作为网络通讯的抽象层。
在Multiplayer Services上,我们提供了几个大的模块。比如Relay,它是一个Peer-to-Peer的网络链接服务。Lobby是一个可以让用户同时连接更多玩家的服务。Matchmaker能够在这个服务里面快速匹配到玩家。最后Game Server Hosting可以高效部署大家的游戏。
在Multiplayer workflows里面,我们提供了更多针对多人开发的支持,以增加测试迭代的速度,这个PPT里面的功能都是我们目前正在开发中的。比如 Multiplayer Play mode,在一个Editor模式下能够快速拉起多人游戏测试。第二个Network Simulation,可以在Editor里面模拟各种网络状况,包括连接断掉、延时较高以及丢包等情况。UTP 2.0,它会扩展支持到WebGL及其他游戏服务的嵌入上面。最后,Server Content Selection可以帮助用户从Unity Editor当中构建出项目特定的轻量化服务器版本。
最后,我们希望未来的整个网络场景都是可视化的,我们的网络操作是可以记录并回放的,让大家的作品在虚拟世界里面有更加稳定的呈现。
下面一部分是关于如何扩大我们的游戏承载。
首先,扩大游戏承载离不开DOTS技术栈。从这张图可以看到,我们DOTS是由三个部分组成的,一个是ECS的包,一个是C# Job System以及Burst compiler。目前C# Job System以及Burst compiler都是已经非常成熟、可使用的功能,可供大家提前体验这方面的技术。
ECS目前已经可以投入到生产环境。在2020的版本中,我们就已经发布了这个ECS0.50,而在2022.2的版本上面,ECS的包即将迎来1.0的发布。目前假如大家想使用ECS,推荐ECS 1.0的版本,选用Unity 2022.2编辑器。
ECS for Unity能够给用户带来难以置信的Game Play可能性,同时也会为制作带来额外的工作。因此,我们正在致力于提供更加强大的文档、模板以及最佳实践,但目前阶段,我们还是倾向于建议经验丰富的游戏创作开发者使用ECS。
我们希望提供一个流水线式的ECS工作流,完全兼容GameObjects转换成Entity。另外,ECS的架构能自然实现非常灵活的游戏架构,适应各种游戏类型,因为它耦合比较低,可以共用不同的系统。ECS的包目前也是作为源码开放出来的,用户可以去阅读、调试,甚至去修改。
ECS给用户提供了更多的可控性和决定性,用户可以根据游戏逻辑来决定是否需要进行一些修改和提升。最后,C# Job System和Burst配合ECS能够充分利用硬件资源,我们也会持续优化内存以及CPU用量和性能。
这里面是ECS templates的demo。第一个Megacity很好地表现了我们超大场景的技术,包括转换技术。第二,大家如果关注在ECS里面怎么实现这种网络游戏的话,可以参考ECS Racing的demo。最后是关于ECS教程的demo,里面包含很多教程、视频以及代码片段方便大家学习。
ECS的下一步是,提供一个贴近开发者真实生产环境的工作流。首先,我们希望在ECS里面实现一套完整的角色控制,更加贴近于大家的生产环境,另外我们也希望ECS的技术能够应用到多人网络游戏实践上面。最后,我们希望拉近跟大世界技术的距离,包括其中的LOD管理以及各种资源的伸缩能力等等。
这里面有两个部分。一个是关于Animation,是我们想要在ECS里面完全重写的部分。我们希望通过ECS的改造能够得到一个更好性能、更多同频在线人数的动画系统。当然,我们也会持续保证动作系统的稳定性以及性能。第二,我们还想在Worldbuilding上做更多扩展,包括提供基于样条曲线的编辑工具以及整个环境编辑的工作流等等。
下一个部分针对平台的可达性,包括移动端、Web端、主机和PC、XR等等。
移动端是大家非常关心的部分,也是国内开发者最多的部分。在移动端,我们会做一些提升。首先,我们希望提升大家的迭代时间、打包时间,让项目更快速地部署到安卓手机上面,如果有更新,就只把更新的部分同步到手机,而不需要每一次都重新构建、重新部署。第二,我们提供了一个叫安卓configuration manager的东西,可以让用户很快针对不同的安卓机器去做不同的配置项。我们也扩展了一些谷歌的API支持,支持GameActivity的API。最后,我们也会保证整个Toolchain的更新,不管是对于iOS还是安卓,都会不停更新SDK的版本去适配最新的设备及系统。
对于PC和主机,只有一个重点——DX12终于脱离preview的版本了。2022.2版本里面的DX12已经可以投入到正常的生产环境里面,但是2022.2的DX12版本性能理论上跟DX11区别不是太大。在2023的版本上面,我们会引入一个新的线程模型,更大拉开DX12与DX11的性能差距。
除了这一点外,还有一个是关于增量构建的,我们希望把增量部件扩展到各种PC平台以及主机平台等更多的平台上面去。
Web也是国内很多开发者关注的要点。我们今年会持续投入对Web浏览器的支持,把重点放在移动浏览器上面。除此之外,我们会支持一些触控,比如虚拟键盘的支持以及移动的压缩。最后,我们也会针对内存管理做更加直观的呈现,方便大家对当前内存的用量以及当前的情况做内存的追踪。同时,该版本有一个非常重要的特点,它支持多线程,这意味着我们的引擎经过编译以后,C++部分的代码可以获得多线程的能力。
今天关于Roadmap的分享就到这里,如果想要获取更多信息,可以到 unity.com/roadmap 了解详情。
谢谢大家!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/629223
推荐阅读
相关标签
  

闽ICP备14008679号