0%

【文章翻譯】Perspectives from early adopters of Flutter as a game development tool

【文章內容使用 Gemini 1.5 Pro 自動產生】

來自 Flutter 遊戲開發工具早期採用者的觀點

簡介

在今年的 Google I/O 上,我們推出了 Flutter 休閒遊戲工具包,這個工具包是一套資源,用於支援 Flutter 社群中的遊戲開發者。在此之前,Flutter 並未將遊戲開發作為官方支援的用例,儘管我們對一些成功案例印象深刻,例如流行的文字解謎遊戲 4 圖 1 字 以及 Flame 引擎等社群努力。那麼,為什麼我們決定正式支持遊戲開發,以及我們如何決定工具包的初始版本應該包含哪些內容呢? 在這篇文章中,我們將分享與 Flutter 遊戲開發工具的早期採用者進行的兩項使用者研究,並解釋他們的觀點如何塑造我們的策略和工具包的設計。

我們從一項訪談研究開始,在研究中,我們分別與 6 位成功開發和發佈了 Flutter 遊戲的開發者(稱為 P01 到 P06)進行了會面。我們對這項研究有兩個目標。第一是了解哪些類型的資源對於開始進行 Flutter 遊戲開發最有用。第二是更好地了解 Flutter 開發者在遊戲開發中的動機、需求和痛點,並利用這種理解來戰略性地規劃我們對該領域的長期投資。為了補充訪談的定性研究結果,我們還在廣泛的 Flutter 使用者社群中針對這個主題進行了一項調查。

在本文的其餘部分,我們首先總結了訪談和調查研究的主要發現,然後我們分享關於市場定位、文件和學習資源以及潛在的長期投資以支援 Flutter 遊戲開發者的建議。

開發者訪談的發現

Flutter 遊戲開發者的背景

總體而言,我們發現了當今存在的兩種 Flutter 遊戲開發者原型:

  • 應用程式 - 遊戲混合開發者: 他們是 Flutter 應用程式開發者,但他們也利用 Flutter 開發相對簡單的遊戲,而不需要使用其他工具。(P02、P04 和 P05)
  • 計算機藝術家和圖形愛好者: 他們主要被 Flutter 提供的對圖形的控制程度所吸引,但他們可能不會將 Flutter 用於應用程式開發。(P01 和 P03)

下表提供了有關我們在本次研究中所訪談的開發者背景的更多資訊。有幾位是由 Flame 團隊推薦給我們的。

使用 Flutter 開發遊戲的感知益處

參與者列出了使用 Flutter 開發遊戲的許多益處。我們列出了下面由多位參與者提到的那些益處:

  • 簡單性: 參與者認為,與 Unity 和 Unreal 等大型遊戲引擎相比,使用 Flutter 開發 2D 休閒遊戲更容易上手,也更不複雜。(P03、P04)
  • 控制: 參與者欣賞能夠在 IDE 中看到 Flutter 的原始碼,並完全直接地控制畫布。(P01、P02、P04)
  • 生態系統: 開發者可以利用 Flutter 生態系統中的套件,例如資料持久性和音訊播放。(P01、P02、P03、P04)具體而言,P01 認為 Flutter 的音訊功能優於其他跨平台 UI 工具包。
  • 跨平台: 參與者欣賞輕鬆部署到 iOS 和 Android 的便利性,並認為它提供了「真正的單一程式碼庫」。 (P01) 但是,由於遊戲引擎通常是跨平台的,所以這並不常被提及。
  • 輕鬆建立 UI: Flutter 遊戲可以在其 UI 中輕鬆利用任何 Flutter Widget。(P04、P05)這對於更類似於應用程式的遊戲特別有用,這些遊戲不需要使用遊戲引擎(例如,P05 和 P06 開發的文字解謎遊戲)。
  • 學習機會: Flutter 和 Flame 的開源性質提供了一個機會,透過開發遊戲來深入了解遊戲引擎和圖形管線。(P03)
  • Flame 遊戲引擎: 使用 Flame 的參與者普遍對該專案及其功能以及 Flame 提供的支持表示肯定。P04 特別是在 Flutter 上開發了一款遊戲,因為他發現了 Flame。

使用 Flutter 開發遊戲的感知挑戰

作為一個新興用例,在 Flutter 上開發遊戲並非沒有挑戰。參與者強調了他們在各自專案中遇到的以下問題:

  • 整合和生態系統:

    • 难以與 Play 遊戲服務整合。(P01、P03)
    • 缺少用於離線優先資料庫的良好選項,這些資料庫具有衝突管理功能。(P05)
    • 需要指導以選擇最佳的音訊外掛,該外掛可以同時在前景和背景中播放音訊。(P05)
    • 資產:尋找和建立高品質的遊戲資產非常耗時。(P02、P03、P04)
    • 這可能是最耗時的過程。如果我找不到彼此相符的資產,遊戲看起來就不會完全是我想要的樣子。而且由於我不太擅長製作藝術品,所以找到合適的資產對我來說是最具挑戰性的任務。 (P03) *
  • Flame 特定的挑戰:

    • 參與者指出,Flame 的文件對初學者不友好。特別是,Forge2D(Flame 的一部分)需要更好的文件。(P03、P04)
    • 參與者指出,Flame 中的碰撞檢測過於基礎。在兩個物體碰撞後,它不會處理物理效果,除非您使用 Forge2D。(P03)
  • Flutter SDK 和工具中缺少的功能:

    • 缺乏 3D 支援。(P02、P03)但是,這對這些參與者來說似乎並不重要。
    • 沒有用於濾鏡、效果、層或合成圖的直接著色器訪問權。(P01、P02)這對熱衷於電腦圖形的參與者來說比較重要。
    • 缺少用於控制更新率(例如 120hz)的使用者空間 API。(P01、P02)
    • 不確定 Flutter 是否擁有提供對畫面緩衝區可見性的著色器除錯工具。Xcode 有很棒的 OpenGL 除錯工具。(P01)
  • 效能和套件大小:

    • DevTools 在診斷具有遊戲迴圈的遊戲的效能問題時並不總是很有用。(P02)
    • 在低階 iOS 設備上存在動畫卡頓。著色器預熱解決方案很有用,但非常耗費人力。 (P05) 也沒有關於如何做到的視訊教學。(P03)
    • 缺乏對根據設備的效能特性調整應用程式渲染品質的支持。 (P05)
    • Web 套件大小對於 Facebook Instant Game 等網頁遊戲平台來說太大。 (P05)

將 Flutter 與其他遊戲開發工具進行比較

由於本研究的選擇標準,所有參與者對其他遊戲引擎的經驗都非常有限。但是,他們就入門、控制感和套件生態系統提供了他們的印象。

首先,參與者認為 Flutter/Flame 比 Unity 和 Unreal 等大型遊戲引擎更容易上手和理解。(P01、P02、P03、P04)參與者發現,Unity 或 Unreal 中的許多功能與他們正在開發的遊戲類型無關。

其次,由於我們的參與者是經驗豐富的程式設計師,他們發現很難從 Unity 或 Unreal 的低程式碼開發環境中獲得他們需要的控制權。

我真的很喜歡深入研究並完全控制所有細節。因此,使用 Flutter,Flame 引擎非常開放。我覺得我真的擁有完全的控制權,而在 Unity 中,一切都隱藏起來了。他們試圖為休閒使用者自動化某些操作。 (P01)

最後但並非最不重要的是,Flutter 的生態系統被認為優於其他輕量級遊戲引擎,例如 Godot(P02、P03)。例如,P03 表示,使用 package:hive,在原生平台上進行資料持久化非常容易。他懷疑使用 Godot 可能需要原生程式碼。

對第一次使用 Flutter 開發遊戲的開發者有用的資源

所有參與者都提到,在開始使用 Flutter 開發遊戲時,他們需要更好的文件和學習資源。為了確定優先順序,我們要求參與者透過將不同類型的資源分類到三個桶中來評估它們對遊戲開發的重要性:必須擁有應該擁有可以擁有。以下清單顯示了所得的桶:

「必須擁有」的資源包括:

  • 一個 範例遊戲,其中預先整合了常見的遊戲特定技術(例如音訊支援)和平台遊戲服務(例如 Google Play 服務)。

  • 一個專用的網站,其中包含所有遊戲開發資源以及有關第三方服務(例如套件、資產市場)的推薦。

  • 操作指南視訊,涵蓋基本的遊戲開發概念(例如遊戲迴圈)、與後端的整合、遊戲支援和變現服務。P03 也對像 無聊的表演 等長篇視訊感興趣,這些視訊涵蓋了整個遊戲開發過程,包括疑難排解:

    • 我覺得兩種不同的 [視訊] 內容會更好。一種是類似於「本週 Widget」的非常短的內容,然後是類似於「無聊的 Flutter 表演」的內容,其中您會深入了解整個過程,並逐步完成建立該遊戲的所有步驟。 (P03)*

「應該擁有」的資源包括:

  • 一個專門針對 Flutter 遊戲的 Discord 頻道,這個頻道比 Flame 團隊的 Discord 更通用。

「可以擁有」的資源包括:

  • Codelabs
  • 教師指導的研討會
  • Google 服務的信用額度(例如 GCP、廣告、Firebase)
  • 直接存取專用支援

根據參與者的寶貴意見,我們在休閒遊戲工具包的初始版本中優先考慮了「必須擁有」的資源。

調查的發現

如前所述,我們進行了一項補充調查,以更廣泛地了解 Flutter 社群中的遊戲開發情況。以下圖表顯示了高階結果:

Flutter 使用者有興趣使用 Flutter 開發遊戲

許多 Flutter 使用者(62.4%)不知道他們可以使用 Flutter 開發遊戲,這並不奇怪。然而,39.2% 的人有興趣了解更多。

Results for the survey question “Did you know that you can use Flutter to build games?” 39.3% — “No, and I’m interested in learning more.” 37.6% — “Yes.” 23.2% — “No, I’m not interested in the topic.”

許多 Flutter 使用者對使用 Flutter 開發遊戲的廣泛興趣也反映在許多 Flutter 使用者對遊戲開發並不陌生這一事實中。在 936 位受訪者中,有 500 多人有使用 Unity 的經驗,130 多人有使用 Unreal 的經驗,120 多人有使用 Flame 的經驗,80 多人有使用 Godot 的經驗。看到這麼多開發者已經具備遊戲開發技能,這令人鼓舞。

許多 Flutter 遊戲開發者才剛起步

然後,我們詢問那些了解或對 Flutter 開發遊戲的能力感興趣的人,他們在遊戲開發過程中處於什麼階段。在這個群體中,43.2% 尚未開始具體的遊戲專案,這表明需要入門支持。

Summarized responses to the question: “which of the following statements best describe your experience using Flutter to build games?”

比我們想像的更多 Flutter 遊戲已經出現

我們要求受訪者向我們指出他們使用 Flutter 開發的任何遊戲。令我們驚訝的是,我們收到了 148 個回覆。其中許多遊戲是 2D 解謎遊戲或 平台遊戲,而其中一小部分嘗試使用 Flutter 創造擬 3D 效果。

使用 Flutter 開發非常成功的行動遊戲似乎是完全可能的。例如,我們透過這項調查了解的 Flutter 遊戲 Kelimelik 在撰寫本文時在 Google Play 上獲得了 4.5 星的評分,有 356,000 多條評論和 500 萬次安裝!

The kelimelik game’s listing on the Google Play store.

Flutter 使用者希望更多關於遊戲開發的文件

當我們詢問受訪者什麼因素阻礙了他們在遊戲專案中的進展時,我們收到了 31 個回覆。其中許多與缺乏文件有關:

  • 「沒有足夠的教學,我沒有理解透徹。」
  • 「沒有足夠的資源/教學/文件 (flutter flame)。」
  • 「文件對初學者遊戲開發者並不友好。在教學或案例研究演練中,還有很多工作要做,才能為 Flame 元件建立一個非常清晰的入門介紹,並提供常見的場景,以幫助新入門者。」

這個回饋呼應了我們從訪談研究中了解到的內容。調查受訪者還提到了缺少 3D 支援、使用著色器遇到困難以及特定硬體和視覺效果(例如陰影)的效能問題。

建議

我們的研究結果顯示了在 Flutter 上開發 2D 休閒遊戲的潛力。一些 Flutter 使用者嘗試過並成功發佈了高評分的遊戲,還有更多使用者有興趣在未來的幾個月裡開始嘗試。

為了讓這些新的遊戲開發者取得成功,我們必須適當地定位 Flutter 在市場上其他遊戲開發工具中的位置,並利用 Flutter 開放和參與的性質來完善其對遊戲開發的支持。

基於此,我們想提出一些建議,這些建議不僅針對 Google 的 Flutter 團隊,也針對 Flutter 社群的套件作者、工具開發者和內容創作者。

市場定位

研究結果表明了我們在遊戲開發工具市場中定位 Flutter 時需要考慮的三个维度:

遊戲類型:

  • 以 2D 休閒遊戲為目標是一個良好的起點。
  • 解謎遊戲和平台遊戲是在 Flutter 中開發的成功子類別。

開發者類型:

  • 希望利用 Flutter 的休閒遊戲開發能力的 Flutter 應用程式開發者(例如 P02、P04 和 P05)。
  • 被 Flutter 提供的高度控制和開放性所吸引的計算機藝術家和圖形愛好者(例如 P01 和 P03)。

遊戲開發團隊類型:

  • 我們可以專注於獨立遊戲開發者和混合遊戲/應用程式代理商,這些代理商的專業角色較少,可以從 Flutter 的跨平台功能中獲益更多。

文件和學習資源

根據訪談研究的使用者意見,我們認為 Flutter 社群中的創作者和教育工作者可以透過專注於建立開源範例遊戲、操作指南視訊和為遊戲開發策劃資源列表來發揮最大作用。我們在 I/O 上發佈的 Flutter 休閒遊戲工具包是我們沿著這些方向組織資源並提高它們在 Flutter 使用者中的可見度的第一次嘗試。

對 Flutter API 和功能的潛在投資

在研究過程中,參與者指出了他們希望 Flutter SDK 在未來更好地支援的一些主要產品功能:

  • 著色器的可用性和支援(GitHub 議題)。或者,如果函式庫維護者(例如 Flame)直接使用著色器 API,可能就足夠了(例如,P03 希望遊戲引擎中有一個更高階的抽象)。
  • Web 應用程式套件大小。一位參與者指出了將遊戲擴展到基於網頁的遊戲平台(例如 Facebook Instant Game)的問題。由於 Web 套件大小過大,他們最終選擇了 HTML 渲染後端,而不是速度更快但更大的 Canvas Kit 後端。(P05)
  • Windows/Steam 支援。多位參與者表達了對嘗試使用他們的遊戲的全新 Windows 支援的濃厚興趣。其中一人提到,Windows 是最需要支持的平台,特別是如果您打算在 Steam 上發佈您的遊戲。(P03)但是,鑑於沒有參與者或我們的團隊成員在 Windows 上測試過遊戲開發或整合 Steam,所以這種情況仍然不明確。

除了這三個改進領域之外,我們最近開始與社群成員合作,對與遊戲相關的議題進行分類,並將它們標記為 a: gamedev

結論

我們從這兩項研究中了解到,包括 Flutter 使用者對遊戲開發的廣泛興趣,以及現有 Flutter 遊戲開發者所欣賞的 Flutter 的簡單性和高度控制,讓團隊對追求遊戲開發作為可行的用例充滿信心。休閒遊戲工具包是我們在這個領域的第一項投資,我們期待在後續研究中了解我們的社群成員如何利用它。

致謝

Zoey FanChristopher FujinoJaYoung Lee 參與了這項研究,Shams Zakhour 編輯了這篇文章。我們要感謝參與這項研究的使用者,以及 Flame 團隊在參與者招募方面的支持。


來自 Flutter 遊戲開發工具早期採用者的觀點 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。