前言
最近腾讯游戏学院发布了一些游戏行业内大佬们的分享视频,观看这些视频,我们可以了解到行业内最新的一些技术知识等,以便提升自己的水平。之前也看到天刀手游是基于Unity制作的,同时自己也作为一名天刀游戏的玩家,碰见看见有关天刀手游的技术分享,因此必然要学习学习,了解大佬们的核心先进技术。
链接:https://www.bilibili.com/video/BV1EZ4y137db?p=6
本文目前基本仅仅只是对视频的内容的抄录,因为视频大部分提到的知识都没有接触过(唉!),无法跟进一步的拓展来说。以后有时间一定好好研究一番,同时若后续项目需要,也可以以此作为一个研究方向的参考。
手游研发的三要素
画质,帧率,功耗(pc可以不考虑),三者协调。例如当我们的帧率达到一个预估值后,我们可以再努力提升画质。当画质提升后,必然会造成帧率的下降以及功耗的提升,因此我们需要再优化帧率以及功耗。通过这种方式来达到三者平衡以及不断的拔高。
利用各种技术栈来优化
在游戏开发中,我们往往需要各种优化来提升性能,这点是非常非常重要的。视频中的大部分内容介绍的也就是如果通过各种技术栈,来获得更好的优化效果。
天刀手游主要用到了如下几个技术点来进行优化:
- 对多线程渲染引擎,进行优化,把大部分可以并行的工作,比如动画、布料,放到其他的线程去运行。
- 使用ISPC,来自动生成NeonSIMD的代码,这部分代码可以更好地提升CPU的执行效率。
- 在GPU和CPU的遮挡剔除中,使用不同粒度的遮挡剔除算法,首先启用了Vulkan API,通过它来对GPU的内存进行更好的粒度上的管理。
- 实现了GPU Driven的渲染管线,用compute来辅助优化各项其他的渲染技术。
- 在画面上使用了PBR的材质,使用了真实的物理单位的lighting,获得更好的HDR的画面效果。
在开发过程中,经历了多线程的优化,发现了在做手机平台上的一个优化甜区。即手机的多核要比我们在端游时代开发的时候更早的进入了多核时代。现在很多安卓手机都是4+4的多核架构(像更早时候在主机平台上看到的,如xbox360,ps3),在这些架构下,都是以能让开发者更多的使用这些辅助的计算单元,来提升计算效率。因此有两个大方向:
- 尽可能剥离主线程上的计算,通过dispatch到小核上,dispatch到其他线程上,来提升它的计算效率。
- 把计算转入GPU Compute。
做优化时,团队要有一个非常好的基础,这个基础来源于我们在于从多线程开始,意识到整个计算体系,应该不同的去往compute方向,或者往其他线程方向去使用。通过减少主线程的开销成本,来去提升整个游戏的性能效率。
多线程的框架改动
对Unity进行了多线程的框架改动,把渲染线程和提交线程从主线程中剥离出来。因为在手游的开发环境里,一个主线程的持续工作会带来手机芯片的功率提升,这会带来更多的发热。
Vulkan API
官网:https://www.khronos.org/vulkan/
相关文献:
https://geek-docs.com/vulkan/vulkan-tutorial/vulkan-tutorial-index.html