《宝可梦集换式卡牌游戏》(TCG)已在全球流行近 30 年。近期发布的《宝可梦集换式卡牌游戏 Pocket》旨在让玩家随时随地体验宝可梦收集和对战,而无需使用实体卡牌。这款游戏在智能手机上的可访问性有助于其在用户中广受欢迎。
虽然《宝可梦集换式卡牌游戏 Pocket》看起来像是一款休闲集换式卡牌游戏,但它采用了复杂的着色器,这对缩短编译时间构成了重大挑战。为了解决此问题并确保高品质的图形和流畅的游戏体验,Android 版《精灵宝可梦卡牌游戏口袋版》采用了 Vulkan,即新一代图形 API。
本文档深入探讨了《精灵宝可梦交易卡游戏口袋版》开发团队采用 Vulkan 的情况、遇到的挑战以及 Vulkan 提供的优势。
采用 Vulkan 的原因
最初,《宝可梦集换式卡牌游戏 Pocket》开发团队计划使用 OpenGL ES。不过,他们决定采用前景广阔的图形 API Vulkan。选择 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 为《Pokemon TCG Pocket》带来了诸多优势:
- 缩短了着色器编译时间:Vulkan 显著缩短了着色器编译时间,即使是大量着色器也是如此。例如,OpenGL ES 编译时间可能会超过 1 秒,但对于 Vulkan 渲染,这已不再是问题。
- 支持的设备范围更广:帧速率和电池用量得到改进,支持的设备范围更广,可确保更多用户获得更流畅的体验。
- 通过 Vulkan 验证层实现更出色的遥测:Vulkan 验证层非常有助于确定问题的根本原因,可补充 Vitals ANR/崩溃报告提供的数据。
面向开发者的消息
《宝可梦集换式卡牌游戏》开发团队向考虑在项目中使用 Vulkan 的开发者提供了以下建议:
- 除了缩短着色器编译时间之外,Vulkan 还可带来显著的性能优势。
- 使用 vkQuality 回退到 OpenGL ES 可能会扩大设备支持范围,即使《精灵宝可梦 TCG 口袋版》尚未使用它。
总结
通过采用 Vulkan,宝可梦集换式卡牌游戏口袋版开发团队能够优化各种设备上的图形,确保为每位玩家提供流畅且富有吸引力的体验。随着不断添加功能以及未来潜力的不断发展,Vulkan 预计会随着时间的推移带来更多好处。