上海 Unite 2019 总结

2019-05-20 12:00:00

第一天

  • 运用 Substance 打造 Unity 次世代材质纹理

    介绍了 PBR 的基础概念,利用 Substance 制作 PRB 贴图的流程,以及一些注意事项。
    例如在 sRGB 的 Albedo 贴图中,最暗的不应该全黑(低于30-50),最亮的不应该全白(大于240)。
    然后演示了一下 Substance Designer 把一张真实照片转换成可以在引擎中使用的一套 PBR 贴图的过程。

  • Unity 科幻巨作《异教徒》影视级技术大起底

    没有全程听。主要是看了 Unity 官方使用 HDRP 做出来的影视级效果的一个 Demo。具体的实现细节也没有介绍。

  • Unity Tiny Mode 概述

    Unity 官方介绍了 Tiny Mode 的 Roadmap。
    了解到一些信息,比如当前版本的 Tiny Mode 只能用 TypeScript 编写脚本逻辑,未来会支持 C#。
    Tiny Mode 依赖 ECS 和 Job System,未来使用 Tiny Mode 进行开发的话,会与现在的开发模式大大不同。
    (会后看了一下B站 Unity 官方介绍如何使用 Tiny Mode 开发 H5 游戏的教程,感觉 Tiny Mode 算是寄居在 Unity 内的一种完全不一样的开发方式吧,场景、GameObject、Inspector 的使用都完全不一样。)
    Tiny Mode 模块化设计,根据需要添加模块,包体更加可控。Core 52kb,Physics2d 37kb 等等。
    Tiny Mode 的性能也是可伸缩的。

  • Marvelous Designer 动画创作工作流在 Unity HDRP 的实现

    Marvelous Designer 是一个服装设计软件,可以模拟真实的布料效果,并且应用到骨骼动画上。
    原本以为是游戏中的布料效果实现,其实跟游戏没什么关系。

  • 二次元向高品质着色器解决方案:Unity-Chan Toon Shader 2.0 介绍

    https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project
    介绍 UTS2 在之前版本的基础上有哪些新的亮点(日式英语太难听懂了,有点没 follow 上)。
    新版的 UTS2 支持 Point Light,Spot Light 这类光源。

  • 《不可思议之梦蝶》从 PC 版移植到 Nintendo Switch 经验分享

    独立游戏开发者介绍把 Unity 项目发布到 Switch 平台的经验。
    首先是接入 Switch 平台要做的一些事情,比如 I/O 需要接入 Switch 的接口,需要注意 https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project 的几种不同使用方式等等。
    还有一些注意事项,比如使用 wwise 等一些第三方库的时候,需要通过邮件和任天堂获取许可;第三方插件的一些设置,比如 wwise 的音频格式会导致发布到 switch 之后运行崩溃。
    然后是项目在开发中的一些提高效率的方法,使用 Cache Server 减少加载时间,使用 Git 分支来做多版本的切换。
    最后是他们做的一些游戏优化,比如包体优化,把不需要生成 mipmaps 的纹理的导入设置修改一下。加载优化,使用 Switch 平台支持硬解的音频格式,减少解压时间。

  • Unity 次世代地形工具介绍

    比较失望的一场,大部分时间是在介绍新的工具怎么使用,比如增加了很多 Brush。没有介绍具体的技术细节。

  • 《网络奇兵 3》运用 HDRP 统一光照模型解析

    演讲逻辑很好,但是内容有点水。总结起来就是他们在用 HDRP 的过程中遇到了一个问题,是一个封闭场景,他们会需要替换地板的材质,一种是全黑的地板,一种是中等灰度的地板,一种是全白的地板。
    然后这三种地板会让一个有同样光源的场景反射出不同的亮度(真实环境下也的确会这样),他们觉得最终效果暗的太暗,亮的太亮,想要解决这个问题。
    然后就是讲他们解决问题的尝试。
    第一种尝试是改光源的 intensity,太亮的场景减到 1/2,太暗的场景加到 2 倍,的确能让场景的亮度达到想要的效果,但是场景中如果有半透明体的物体的话,反射和折射出来的光会不一样。 Pass。
    第二种尝试是加减光源,太亮的地方就减一个光源,太暗的就多放一个光源。其实和改光源的 intensity 没差别,反而性能上去了。Pass。
    第三种尝试是加后处理,他们用了 Eye Adaptation 来控制曝光,能让原本欠曝的场景亮一点,过曝的场景暗一点,但是确点也很明显,就是如果暗的场景只占了一半,另一半是亮度正常的场景的话,正常的部分就会过曝,亮的场景同理,一些部分会欠曝。Pass。
    最后是怎么解决的呢?反正我最后听到这有点无语。讲课的人说他们后来发现 HDRP 有一个 Debug 工具,可以检查场景里的材质贴图是不是有问题,打开这个工具,可以看到红色部分是贴图(颜色)太亮的,蓝色部分是贴图(颜色)太暗的,找到有问题的材质,改一下颜色或者贴图就好了。(其实就是第一场 Substance 的人讲的,Albedo 贴图的颜色范围)

  • Unity 影视级工具链指南

    介绍了很多影视相关的工具,但也只是一句话带过,没有演示,没有细节。

第二天

  • 《使命召唤手游》引擎技术升级与演化

    去年开始使用 PBR 流程重做美术资源。PBR shader 分5级。
    高端机用 HDR RT,低端机在 Tonemapping 之前恢复信息。
    地形包括植被用的 Houdini 生成。
    LightProbe 脚本生成。Lightmap GPU 烘焙。
    Texture Atlas、Texture Streaming 减少内存和带宽使用

  • Unity C# Job System 的功能使用

    Unity 的技术支持工程师介绍他是怎么理解和使用 C# Job System 的。
    他有简单提到一些技术细节,比如每个 Job 执行的时候,会把需要使用的数据拷贝一份,Job 执行完成会再拷贝赋值回去,一些常用的引用类型,Unity 都写了一个对应的值类型来做访问,比如 Transform 对应 TrasformAccess。需要用到 NativeArray,意味着会有 unsafe 代码,会有指针操作,对逻辑程序员要求又高了。
    个人觉得 Job System 是在多线程操作上的一个包装,把一些繁琐的细节包装了起来,但实际上还是需要逻辑开发人员清楚的知道哪里会产生性能消耗,如何把逻辑解耦才可以提升性能。不然一味的套用 Job System 可能不会带来太大的性能提升,反而增加了功耗。

  • 游戏架构和云服务的耦合前瞻 —— 匹配对战和连续大世界

    大致介绍了一些在几种情景下的多人联机的优化。比如类似 Moba 的有匹配机制的实时竞技类游戏,可以通过分组的方式,保证每个玩家到服务器的延迟比较平均,而不是每个玩家找离他最近的服务器节点进行游戏。
    另外可以使用动态节点的创建来减少服务器成本。前提是节点的启动时间控制在秒级。
    对于大型的 MMO 项目,如何利用动态平衡来实现无缝大世界。

  • ARM 手游技术亮点荟萃:64 位运算,Vulkan 最佳实践,及 Arm Mobile Studio

    相对来说比较有干货的一场。首先介绍了很多场景来说明升级到 64 位的必要性,比如 ARM 在硬件层做了安全检查,更有效的防止游戏被外挂修改。
    然后是介绍了 ARM 的一个开源的 Vulkan 示范项目。和一些使用 Vulkan 的注意事项。
    比如推荐使用 FIFO 而非 Mailbox 的显示切换方式。使用 Triple buffering 而非 double buffering。Pre-rotate 减少性能消耗。Load 和 Store 的时候可以考虑使用 DONT_CARE 的方式优化性能。

  • Unity + Houdini 程序化工作流程

    使用 Houdini 以及 Houdini 的 Unity 插件,做了一个关卡,先是在 Unity 里面大概搭建一个场景,然后程式化生成地形和植被还有道路等等,最后美术调整和细化。跟传统的全部美术制作的方式比起来很高效,然后又可以做到程序化生成和人工制作相结合。

  • Unity 的 Asset 管理和序列化

    介绍了 Unity 在把一个资源放到 Assets 目录下之后做了哪些事情,并且大致的讲解了一些文件的内容和意义。
    一个优化点就是,把 shader 中不需要的 pass 删掉,否则即使不消耗性能,也会在运行时内存中产生很多 ShaderLab 的 Pass 对象。

  • 如何使用英特尔图形性能分析器提高游戏性能

    讲的是在 PC 平台下怎么使用 GPA 做性能分析。

  • 适用于开放世界的遮挡剔除流式加载

    介绍了新的 OC 系统的新功能和优化点。
    首先本质上 Unity 的 OC 系统还是使用的 Umbra 的方案。可以进行流式加载,减少内存占用,适合大世界的制作。renderer 和 shadow caster 的分开 culling,解决影子问题。