Notifications
Article
《茶杯头》:面向任天堂Switch平台优化游戏的技巧
Published a month ago
142
1
D手绘风格的独立游戏《茶杯头》最近登陆任天堂Switch平台,本文将分享《茶杯头》开发团队如何为任天堂Switch平台优化游戏。

Studio MDHR的工程师Adam Winkels表示:将《茶杯头》移植到任天堂Switch平台的过程非常顺利,大部分游戏内容可以直接使用,从而让我们专注于确保游戏体验和性能达到期待的标准。

移植任天堂Switch平台的计划

Studio MDHR鼓励开发团队从一开始就有移植到任天堂Switch平台的计划,所以对开发团队而言,并不意外。
如果我们想要发布一款任天堂Switch平台的新游戏时,需要根据该平台的最低配置目标进行设计和性能测试。这样会避免仅在高性能开发PC上测试游戏后,发现游戏在目标硬件上的运行效果不符合预期。

尽早和经常进行性能分析

开发团队提倡使用性能分析器面向任天堂Switch平台进行优化,这样有助于实现《茶杯头》流畅的运行和灵敏的游戏体验。
我们需要时刻注意游戏中的性能瓶颈情况。我们使用了Unity内置性能分析器和任天堂的CPU性能分析器来分析代码,清除掉性能峰值,并且尽量确保较低的处理器使用率。
我们需要尽早和经常地使用这些工具处理问题区域,否则重构低效系统的技术负担会很大。

使用精灵图集释放RAM内存

在最初的版本中,《茶杯头》中的4.5万个手绘动画帧都会单独打包,但这并不是高效的方法,正确的解决方法是:使用SpriteAtlas精灵图集。
在一些较大关卡中,游戏的RAM内存不足,例如:Djimmi the Great关卡。因此开发团队使用了Unity的Sprite Atlas精灵图集功能。裁剪透明部分并通过ASTC压缩格式实现内存压缩后,精灵图集大幅减少了RAM内存的使用率。

使用AssetBundles的好处

Unity的AssetBundles功能不仅帮助Studio MDHR减少了游戏的总体大小,而且还为发布未来更新做好了准备。请尽可能在游戏里使用AssetBundles。
对于《茶杯头》,开发团队把精灵图集分离为压缩的AssetBundles。这样很好的帮助减少游戏大小,使它更容易符合任天堂的打包大小要求。
AssetBundles也可以有效确保游戏数据布局在不同版本间不会有太大变化。

调整着色器加载行为

开发团队发现了预加载着色器的好处,在新的精灵或很少使用的精灵首次加载到关卡时,预加载着色器可以避免性能卡顿问题。
在Run'n Gun关卡中首次实例化某些敌人时,遇到了轻微的性能掉帧问题。经过一些研究后,发现着色器加载是问题根源。
Unity提供了使用Shader Variant Collections着色器变体集合预加载着色器的功能,虽然该问题很难发现,但是修复起来却很简单。

调整垃圾回收过程

Unity可以自动处理垃圾回收,但开发团队选择创建手动调用以实现额外的性能提升。
虽然没有直接控制Unity中堆大小的方法,但仍然可以通过在运行游戏时手动分配内存来强制扩展堆大小。幸运的是,我们有RAM预算来提高堆大小,使游戏每15-20分钟进行一次垃圾回收。
我们也会在每次游戏暂停,加载或重启时触发垃圾回收,《茶杯头》是一款难度很高的游戏,玩家很少能够在关卡中停留足够长的时间并察觉到游戏时的垃圾回收过程。

小结

《茶杯头》现已推出到任天堂Switch平台,如果你想了解更多关于Studio MDHR和《茶杯头》的信息,请访问:https://unity.com/madewith/cuphead
如果你想了解更多为任天堂Switch平台创作游戏的信息,请访问:https://developer.nintendo.com/
更多Unity最新功能分享与技术讨论,尽在Unity Connect平台(Connect.unity.com)。
Tags:
Unity China
576
Comments
略略略~
15 days ago
学习了
0