UWA学堂 | 高级课程汇总

UWA学堂 | 高级课程汇总

本栏目汇总了UWA学堂上所有高级课程并按类区分,会持续根据上新课程不断更新!
初级课程传送门中级课程传送门

逻辑代码类

《Lua与C#高效共享大量数据的一种方法》
众所周知,Lua与C#跨语言交互很容易成为性能瓶颈,大量被浪费的CPU时间仅仅为了做一件事——从Lua传递信息到C#。为了减少交互次数,我们不得不仔细设计,尽可能减少Lua和C#的耦合,但一些对数据依赖性很高的逻辑,比如战斗逻辑中的AI逻辑或者技能逻辑就很难同时用两个语言开发,我们不得不在全lua(性能差)或者全C#(无法热更)中二选一,难以根据需求混合使用双语言以同时兼顾性能和热更。

因此,我们提供了一种高性能方法,在Lua和C#之间,直接共享读写大量数据,避开跨语言交互,从根本上移除跨语言传递数据的性能消耗。新方案可以让Lua和C#各自以接近语言原生的性能效率读写共享的数据,相比通过Lua调用C#进行传递的方式,可以提升5~10倍的效率,跨语言共享数据将不再是性能瓶颈。

《逻辑代码的性能瓶颈定位与优化方法》
针对Unity引擎中的逻辑代码(C#脚本)自身及其在与Lua交互的过程中常见的性能问题进行针对性的分析,并通过示例介绍如何通过UWA GOT等工具对相关问题进行快速地定位和优化,内容主要包括:

  • 堆内存峰值过高
  • 堆内存泄漏
  • GC调用频繁
  • CPU耗时瓶颈定位等

《DOTS深度研究之应用实践篇》
《DOTS深度研究之原理分析篇》中,雨松MOMO详细介绍了DOTS的原理,展示了其对游戏性能的巨大提升效果,相信读过此文的开发者一定心向往之,那么在具体项目中该如何落实?本文来给你答案!

本课程详细剖析了DOTS使用过程中的各类问题和解决方案,附带了12个例子工程和Demo源码。不论你的项目是刚刚立项,还是在进行中,亦或是遇到美术对DOTS新流程的抵制,都能在本篇中找到对应的解决思路和切入点。本文还对两个世纪难题“烘焙贴图的应用”和“DOTS动画系统的应用”给出了可行的实现方案。DOTS技术已经是大势所趋,感兴趣的朋友们快来武装自己吧。

《DOTS在Unity引擎不同模块中的应用》
在最新的Unity引擎中,DOTS功能可以使开发者更方便地应用面向数据编程模式以及利用引擎的并行特性。在本次报告中,我们将通过大量测试案例与性能数据,探索DOTS对于游戏不同模块的性能影响,以使大家能够根据项目需要,合理地全局或局部对游戏模块进行DOTS化。

《Unreal引擎中Lua代码的性能瓶颈定位与优化》
目前,随着大家项目对于热更新的需求越来越高,Lua脚本与Unreal引擎的结合逐步成为了大型项目开发的热门选择。但是,随着Lua脚本在项目中的重度使用,其和引擎结合后的性能问题就不断地凸显出来。因此,我们针对Unreal引擎开发中看到的Lua性能问题进行分析和总结,并通过示例讲解如何对Lua代码使用过程中的性能问题进行快速地定位和优化。

这些问题主要包括:CPU耗时性能瓶颈、堆内存分配的性能瓶颈和GC调用频繁等。希望通过本课程,可以让开发者掌握如何在Unreal引擎中更高效地使用Lua脚本,从而带来性能更佳的游戏体验。


UI类

《如何绕过Unity打造自己的HUD UI系统》
对于MMORPG来说,游戏中特别是挂机刷怪时,经常会出现大量的头顶信息和伤害数字等UI物件。用传统的UI渲染,不仅开销较大,处理不好还很容易造成严重卡顿问题。

为了有效地解决上述问题,本文将从图文混排的UI原理讲起,为大家讲解如何绕过NGUI或UGUI等复杂的UI系统,自己定制一个UI系统渲染器,并实现HUD的高效渲染,从而解决战斗过程中大量头顶血条和伤害数字效果造成的卡顿问题。

本文的最终效果让大家可以掌握如何实现一个无GameObject对象、无GC的高效HUD渲染技术。同时,为了方便读者掌握该技术方案,并可以快速移植到自身项目中,文章最后提供了Demo项目和工程源码,大家可以直接查看学习。

《UGUI深度研究之优化技巧》
UI界面常常面临的性能问题是界面打开慢,在一些低端机上打开复杂UI时,可能会需要5秒以上。本篇专栏通过讲解纹理格式、纹理通道分离、纹理尺寸设置等方面,找到移动端UI纹理资源兼具效果和性能的合理格式,以此减少纹理资源加载耗时,从而减少UI的打开耗时。此外,还包括了UI制作上的常见UI制作优化思路,帮助开发者找到UI的“正确打开方式”。为了更好地在研发后期找到瓶颈UI,这里还提供了一个UI界面的静态分析工具,可以帮助开发者更直观地分析定位“问题UI”。

随着UI迭代和研发流程的变化,在UI资源上也会遇到一些不可避免的麻烦问题,本篇专栏也对这些问题进行了举例并给出了可参考的解决方案。通过该课程的学习,开发者可以更好地对移动端UI制作进行有条理的性能把控,提升UI界面的运行效率。

《详解UGUI DrawCall计算和Rebuild操作优化》
本文主要分为以下内容,帮助大家深度了解UGUI的重要原理和优化方法。

  • 讲解UGUI DrawCall的工作原理,并结合大量实例讲解Unity引擎如何计算DrawCall以及如何通过合批来降低DrawCall。
  • 描述用于ScrollView的Mask和RectMask2D的具体原理以及它们是如何对DrawCall产生影响。
  • 重点讲述我们在优化UGUI时经常被忽略的问题:Canvas Rebuild和动静分离、粒子系统与UI界面结合、UI系统的Raycast Target以及界面OverDraw的相关优化点。

管理类

《创业团队的技术管理》
技术和管理原本属于两种完全不同的岗位。程序员多是理工科,垂直地把写代码这个事情做好就可以,但做管理者需要考虑的事情相对就复杂许多,包括整体架构的布局设计、事情的前后因果关系、可能会遇到的突发状况,这是一个需要提前布局和更费心思的事情,和程序员闷头来码代码还是有一些差别的。

很多开发者都想成为管理者,因为管理者看起来地位高、工作轻松,薪水也更高。可是腻友是否真的了解技术管理呢?在对此没有一个清晰认识之前,我们可能会填过不少坑:不少新晋成为技术管理者之后,发现时间不够用了,自己的活儿没时间干,下属驱动不了,老板嫌你管理不力……各种问题层出不穷,你殚精竭虑,结果绩效却不如原来做开发了…如果你也拥有类似这样的烦恼,那么这篇文章能给你不少解答。

《Connecting The Dots:基于团队的持续优化之道》
最终展现给玩家的游戏往往只是浮在水面上的冰山一角,为了这一角可以更稳定更流畅地展现给玩家,在水面之下,除了大量的玩法实现和迭代工作之外,还有整个团队所做的优化工作。讲师从团队这个切面入手,结合《赢天下》项目的开发经历,讲述了在不断产出新的游戏玩法、美术资源的同时,如何让整个团队持续高效地进行优化,并让优化的结果可以一直保持下去。

《创意游戏的质量管理》
创新玩法的游戏在目前中国市场尚不多见,游戏产品从一个点子、一张概念图甚至一句话开始萌芽,到最终成为商业化产品投向市场,中间经历的每个版本和过程都要精心设计和实施,稍有差池,就会面临产品的彻底失败。泰尼游戏在三年时间里,从组织架构到资源调配,从工具推广到管理实践都进行了大量的思考和尝试,正在逐步形成具有自身特色的创意游戏质量管理方法论,当然更多的是在这个过程中,汗水、教训、希望、失败等等交织在一起,成为了团队成长的重要经历。

本课程主要讲解了嘉宾讲师所在团队的创意游戏的生命历程和游戏质量管理的方方面面,并通过具体实例来讲解在质量管理方面的工具和方法论。希望可以让更多的人能够思考在中小团队如何高效的实施创意验证、快速迭代、质量管控、团队协作等方面,以期共同成长。


制作类

《重度、全3D无缝大世界手游开发经验分享》
手游在追求全3D及逼真效果的同时,对场景的大小也有了越来越高的要求。一个无缝的超大场景会给玩家带来更加真实的游戏体验,本报告旨在描述如何使用Unity引擎创建超大无缝大世界。大世界不仅是地图变大,它所带来的各方面考验以及研发工作流都将发生重大改变。同时,报告还将结合讲师在Unreal引擎方面的开发经验,阐述Unreal引擎在超大地图制作上相较于Unity引擎有哪些优缺点。

《如何根据UWA制定技术选型》
在为上千款项目优化的过程中,发现很多团队由于前期的技术方案选择不合理,后期只能选择“治标不治本”的优化方案,前期的技术选型成为很多团队的一大痛点。因此,作为UWA性能保障体系中的第一环,UWA将根据不同的游戏类型推荐恰当、优秀的使用工具和解决方案,以期助力研发团队找到最适合的技术方案。


资源管理类

《深度剖析PersistentManager.Remapper内存占用》
游戏的内存占用一直是困扰大家很久的问题。大部分原因是资源过多过大、资源格式使用不当等问题导致,这个改起来效果也是能够立竿见影的,然而有些游戏则是相当重度:海量资源、各种玩法…仅仅靠捡漏资源格式来判断是否压缩、尺寸过大等方面还不足以达到理想的效果,我们需要权衡各个方面来优化内存。

本文将会描述一个完善的AssetBundle模块规划,从而降低内存占用。通过对本文的阅读,你将学习到降低内存占用的新方法。

《Unity引擎加载模块和内存管理的量化分析及优化方法》
Unity引擎的资源加载和内存管理一直是项目开发的重中之重。对此,本课程从定性和定量两方面来分析各种资源的加载耗时及其对于内存的影响。通过对课程的学习,希望通过研发团队可以对加载模块和内存使用达到一个全面的、数字化的认识,从而达到高效定位和优化相关的性能问题。

《自动化规范Unity资源的实践》
在项目开发过程中,制定合理的资源规范,力求在不牺牲画面表现的同时,有更小的包体、内存占用和更好的性能,是不少项目都会遇到的痛点。在制定了规范之后,又该如何保证规范不是一纸文档,而是被真正地落地?

本文重点介绍了作者在开发中积累的一种实践方案,采用导入器和日报工具的方式来自动化的确保规范被执行。此外还阐述了形成这些规范的过程中的一些思路。

《Unity的GC优化原理及实践》
堆内存管理是一个让人头疼的问题,贯穿游戏开发和功能迭代过程的始终。本文围绕堆内存的内存优化,将这个问题进行细分,包括内存结构、容器、对象池、不安全代码,由浅入深地讲解内存优化的原理和技巧,并提供了Protobuf优化和字符串操作优化等案例。使用结构代替类、缓存对象和使用非托管堆等重要技巧,是本文的重点,非常适合大家提升内存优化方面的工作技能,对GC感兴趣的同学们不要错过。


渲染类

《Reflection Probe实现伪室内和伪反射效果的改进方案》
使用Unity的ReflectionProbe可以实现伪室内效果,但由于其制作上有一定的限制,遇到复杂场景时制作并不方便。对于这一问题,作者提供了一个改进方案。本文中,首先会讲解Reflection Probe的原理,然后参考这些实现过程制作了一个Fake Reflection的工具,可以自行实现出类似的效果。同时,读者也可以通过增加法线、粗糙度等参数,来模拟更丰富的玻璃折射效果。另外,该功能还可以用来实现室内透射、水面反射等近似效果,从而可以大幅减少真实渲染效果的计算压力。

通过本文的学习和提供的Demo工程,可以实现一个更加定制化、且容易修改的Relection Probe功能,从而实现低开销的透视和反射模拟效果。

《移动游戏的GPU性能优化》
随着精品移动游戏的大量涌现,移动设备GPU端的性能压力越来越大。对此,讲师从Bandwidth、Fillrate和Shader等几方面出发,结合大量优化过程中的实际案例让大家了解和掌握如何快速定位和分析游戏在GPU端的性能瓶颈,以及游戏开发过程中需要注意的性能点,以求有效降低移动游戏的GPU压力,避免不必要的性能开销。

《次世代卡通渲染技术》
通过对《琪亚娜·极乐净土》的制作过程讲解,揭示了如何在Unity中实现高品质的卡通渲染效果。其中包括:次世代卡通角色渲染,场景全局光照及高级反射材质,卡通渲染后处理技术,动画及表情系统,头发布料物理模拟以及灯光特效等各个方面,并对今后卡通渲染技术的发展进行展望。

《Unity 2019 SRP实战》
本课程介绍了手游行业渲染技术发展的历史背景,从2018年Q3开始回顾上一代和这一代爆款手游所使用的渲染技术,分析行业的发展趋势。对手游行业渲染技术未来发展的展望,从主机、PC游戏看手游行业渲染技术的未来。如何进行前瞻性的技术选型,是UE4还是Unity?轻量还是高清?自主研发还是抱大腿?以及技术预研成果的一些展示。

最后着重介绍了高清管线的技术细节:包含HDRP光照模型相对于URP和Builtin的区别,HDRP移动端设备适配时候所做的取舍,以及为适配移动端对ComputeShader所做的修改。


综合类

《深度剖析大型MMO移动游戏的性能优化》
针对大型MMO移动游戏来说,复杂场景、百人同屏、逼近端游的画质表现已经成为了MMO游戏发展的硬核趋势。同时,这些需求对于移动设备来说,其性能压力也是一个非常巨大的挑战。因此,该课程将从性能和画面表现两方面入手,分享欢乐互娱引擎中心在《龙之谷手游》和《仙境传说RO:爱如初见》项目开发过程中的制作方法和优化技巧,主要包括:

  • Shader中的性能优化
  • 高效的图像后处理框架
  • 多人同屏时的Imposter使用
  • 结合顶视图的场景制作策略

《Unity引擎渲染、UI、逻辑代码模块的量化分析和优化方法》
Unity引擎的渲染、UI和逻辑脚本耗时是大多数项目的Top 3耗时模块。对此,我们对这三个模块进行量化地统计和分析,介绍准确定位性能瓶颈的方法。同时,从常见的性能问题入手,分析和对比各种可行的性能优化方案,以求显著地提升这些模块的效率。内容包括:

  • 渲染模块的重要参数分析以及优化方法
  • UI模块瓶颈的精确定位和优化
  • C#/Lua瓶颈函数的优化方法

《重度MOBA的优化之路》
针对《小米超神》这款重度MOBA项目,嘉宾将分享开发过程中遇到的各种各样的技术问题以及解决方案,内容主要包括:

  • 对于英雄头像和技能图片等UI元素,如何通过渲染到纹理的方法来降低其Draw Call
  • 对于频繁移动的HUD和小地图上的UI部分,如何自行构建UI Mesh来进行管理
  • 如何优化UI界面中的粒子特效
  • 如何解决因角色过多而导致的GameObject状态更新和组件Update开销过大的问题

《Unity引擎移动游戏性能优化全解析》
目前,UWA已经为超过70款移动游戏项目进行了深度优化。在针对这些项目的性能进行深度剖析时,遇到了大量的“疑难杂症”。本课程将这些问题进行总结和归纳,通过大量实际案例,让大家能够了解和掌握如何对Unity引擎各个模块、资源和内存管理方面的性能问题进行快速的定位和精准的分析,内容主要包括:

  • 渲染、UI、加载、物理等Unity引擎各个主流模块的“疑难杂症”分析
  • 纹理、网格等主流资源的资源加载和内存管理

《深入理解移动 GPU 和性能优化》
优化是游戏程序员经常面对的问题。在手游画质越来越逼近主机的今天,渲染往往会成为影响游戏性能的“罪魁祸首”,而缺乏对移动端GPU这个“黑盒子”的深入了解往往使得许多图形优化变成了毫无目的的尝试和玄学。

本教程分为四个部分:第一部分(包含第1节和第2节)从经典的图形渲染管线出发,介绍了GPU硬件常见的并行优化设计及其原理;第二部分概述了移动端GPU和桌面端GPU的异同及发展趋势,详细介绍了TBR架构;在此基础上,第三部分以Mali GPU为例,深入探讨了移动GPU内部硬件架构,并重点介绍了移动端GPU针对功耗的优化方案;第四部分结合一些常见的性能优化实践,分析优化手段背后的逻辑,旨在帮助读者更加清晰地理解移动端渲染的性能优化。

《Unity移动游戏项目优化案例分析(上)》
《Unity移动游戏项目优化案例分析(下)》
UWA为大量项目进行深度优化服务时会提供全面深入的性能分析和有针对性的解决方案。本次报告将总结UWA四年来深度优化过程中所遇到的各类实战性能问题。通过具体的案例,分析各类性能问题的相关机制原理,介绍如何借助UWA分析工具快速、精准地定位性能瓶颈,以及可操作、行之有效的解决方案。

第一场主要内容包含渲染、UI等模块的性能问题总结、分析和解决方案。
第二场主要内容包含的是逻辑代码(包括Lua)以及其他引擎模块的性能问题总结、分析和解决方案。

视频的第8小节动画部分提到的 Animator.keepAnimatorCOntrollerStateOnDisable 选项在部分Unity版本中存在BUG(不起效),因此使用时仍需要注意。