宝可梦集换式卡牌游戏 (TCG) 在全球范围内已风靡近 30 年。最近发布的《Pokémon TCG Pocket》旨在让玩家随时随地体验宝可梦收藏和对战,无需实体卡牌。该游戏在智能手机上的易用性使其受到用户的广泛欢迎。
《Pokémon TCG Pocket》虽然看起来是一款休闲集换式卡牌游戏,但它使用了复杂的着色器,这给缩短编译时间带来了重大挑战。为了解决这个问题并确保高质量的图形和流畅的游戏体验,Android 版《Pokémon TCG Pocket》采用了下一代图形 API Vulkan。
本文深入探讨了《Pokémon TCG Pocket》开发团队如何采用 Vulkan、遇到的挑战以及 Vulkan 带来的优势。
采用 Vulkan 的原因
最初,《Pokémon TCG Pocket》开发团队计划使用 OpenGL ES。然而,他们决定采用 Vulkan,一个前景广阔的图形 API。选择 Vulkan 的主要原因是:
- 长期应用管理:认识到 Vulkan 将成为 Android 上的主流图形 API 这一趋势,团队认定 Vulkan 是长期应用管理的最佳选择。
- 低规格设备上的稳定性能:为了向广大用户提供流畅体验,在低规格设备上实现稳定性能至关重要。Vulkan 能够降低 CPU 负载,有望提高帧率并减少电池消耗。
- 避免大规模发布后更改:发布后从 OpenGL ES 切换到 Vulkan 将涉及大量修改,可能中断用户体验。从一开始就采用 Vulkan 减轻了这种重大更改的必要性。
使用 Unity 实现 Vulkan
《Pokémon TCG Pocket》使用 Unity 作为其游戏引擎。Unity 提供了一键式简化流程来实现 Vulkan。通过使用 Unity,开发团队无缝集成了 Vulkan,无需专门培训。此外,开发环境和工具无需 Vulkan 特有的调整,这也有助于提高成本效益。

实现 Vulkan 的挑战
虽然 Vulkan 的实现相对简单,但开发团队之后遇到了一些挑战:
- 设备特定问题:与 OpenGL ES 相比,一些制造商的驱动程序在 Vulkan 上的稳定性较低,导致设备特定问题。
- 中间件的 Vulkan 支持不完整:一些中间件缺乏完整的 Vulkan 支持,需要团队等待中间件更新。
开发团队通过多种策略解决了这些挑战,包括组建一支经验丰富的消费游戏开发者团队进行故障排除(因为他们在低级图形 API 或自定义引擎方面经验丰富),并与 Google 和 Unity 团队合作解决个别问题。为了扩大设备兼容性,测试包括中到旧的高端设备(2-3 年前发布的)以确定推荐的设备规格。
Vulkan 的优势
采用 Vulkan 为《Pokémon TCG Pocket》带来了多项好处:
- 缩短着色器编译时间:Vulkan 显著缩短了着色器编译时间,即使是大量着色器也是如此。例如,OpenGL ES 的编译时间可能超过 1 秒,但使用 Vulkan 渲染后,这不再是问题。
- 扩大支持设备范围:帧率和电池消耗的改善使得支持设备范围更广,确保更多用户获得更流畅的体验。
- 通过 Vulkan 验证层提供更好的遥测数据:Vulkan 验证层在识别问题根源方面非常有用,补充了 Vitals ANR/崩溃报告提供的数据。
给开发者的寄语
《Pokémon TCG Pocket》开发团队向考虑在其项目中采用 Vulkan 的开发者提供以下建议:
- 除了缩短着色器编译时间外,Vulkan 还提供显著的性能优势。
- 使用 vkQuality 回退到 OpenGL ES 可能扩大设备支持,尽管《Pokémon TCG Pocket》尚未采用。
结论
通过采用 Vulkan,《Pokémon TCG Pocket》开发团队能够在广泛的设备上优化图形,确保每位玩家都能获得流畅且引人入胜的体验。随着持续的功能添加和未来潜力的不断发展,Vulkan 有望随着时间的推移带来更多好处。