《Pokémon TCG Pocket》:採用 Vulkan 專屬開發功能,用於休閒遊戲

《Pokémon TCG Pocket》遊戲標題標誌的螢幕截圖。

《寶可夢集換式卡牌遊戲》(TCG) 問世至今已近 30 年,我們最近推出的《Pokémon TCG Pocket》旨在讓玩家隨時隨地體驗寶可夢收藏和戰鬥,無須使用實體卡牌。這款遊戲在智慧型手機上的可用性,讓它在使用者之間廣受歡迎。

雖然《Pokémon TCG Pocket》看起來像是一款休閒的集換式卡牌遊戲,但它採用了複雜的著色器,因此在縮短編譯時間方面,難度相當高。為解決這個問題,並確保高品質圖像和流暢的遊戲體驗,Android 版 Pokémon TCG Pocket 已採用下一代圖像 API Vulkan。

本文將深入探討 Pokémon TCG Pocket 開發團隊採用 Vulkan 的過程、遇到的挑戰,以及 Vulkan 提供的優勢。

圖 1. 《Pokémon TCG Pocket》遊戲畫面。

採用 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 專屬調整,因此可節省成本。

Unity 中的 Auto Graphics API
圖 2. Unity 中的 Auto Graphics API。

實作 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/當機報告提供的資料。

給開發人員的訊息

針對考慮在專案中使用 Vulkan 的開發人員,Pokémon TCG Pocket 開發團隊提供以下建議:

  • 除了縮短著色器編譯時間,Vulkan 還可提供顯著的效能優勢。
  • 使用 vkQuality 改用 OpenGL ES 可能會擴大裝置支援範圍,即使 Pokémon TCG Pocket 尚未使用此功能。

結語

採用 Vulkan 後,《Pokémon TCG Pocket》開發團隊得以在多種裝置上進行圖形最佳化,確保每位玩家都能享有流暢且引人入勝的體驗。隨著功能持續增加,以及未來潛力的持續發展,Vulkan 預計將帶來更多益處。