本文由 简悦SimpRead 转码,原文地址 medium.com
用户研究如何塑造Flutter休闲游戏工具包
在本周的谷歌I/O大会上,我们发布了Flutter休闲游戏工具包,这是一套支持Flutter社区中游戏制作者的资源。在这之前,Flutter还没有把游戏开发作为一个正式支持的用例,尽管我们对流行的文字解谜游戏4 Pics 1 Word等成功案例和Flame引擎等社区努力印象深刻。那么,为什么我们决定现在是正式支持游戏开发的时候,以及我们如何确定工具包的初始版本应该包括什么?在这篇文章中,我们分享了我们对Flutter作为游戏开发工具的早期采用者进行的几项用户研究,并解释他们的观点如何影响了我们的策略和工具包的设计。
我们以访谈研究开始我们的调查,在那里我们单独会见了6位已经成功建立和发布Flutter游戏的开发者(称为P01至P06)。我们对这项研究有两个目标。第一个目标是了解哪些类型的资源对开始开发Flutter游戏最有帮助。第二个目标是更好地了解Flutter开发者在游戏开发中的动机、需求和痛点,并利用这种理解来战略性地规划我们在这一领域的长期投资。为了补充访谈中的定性研究结果,我们还在广泛的Flutter用户社区中进行了关于该主题的调查。
在文章的其余部分,我们首先总结了访谈和调查研究的主要结果,然后我们分享了关于市场定位、文档和学习资源以及潜在的长期投资的建议,以支持Flutter游戏开发者。
开发者访谈的发现
Flutter游戏开发者的背景
总的来说,我们发现目前存在两种Flutter游戏开发者的典型特征。
应用-游戏混合开发者。他们是Flutter应用程序的开发者,但他们也在利用Flutter来构建相对简单的游戏,而不使用其他工具。(P02, P04, and P05) 计算艺术家和图形爱好者。他们主要是被Flutter提供的对图形的高度控制所吸引,但他们可能不会利用Flutter进行应用开发。(P01和P03)
下表提供了更多关于我们在本研究中采访的开发者的背景细节。有几个人是由Flame团队介绍给我们的。
| ID | 背景 | 游戏类型 | 游戏引擎的经验 |
|---|---|---|---|
| P01 | 手绘动画学士;在小型视频游戏工作室开发视频游戏图形管道工具;自2011年起从事移动游戏开发。 | Puzzle | Unity, Godot, Flame |
| P02 | 10年软件开发经验,主要在网络领域;P03的公司将移动应用栈从Xamarin迁移到Flutter;2018年开始自己的咨询公司,一个客户在看了P02关于Flame的博文后要求用Flutter做手机游戏。 | 谜题 | 微软XNA、Unity、Flame |
| P03 | 在工作中使用C#和C++进行3D建模。开始开发一个新的游戏引擎,并进入了图形管道。P03在2019年开始用Flutter做了一个为期1个月的副业游戏项目。 | 2D射击游戏,平台游戏 | Unity, Unreal, Godot, Flame |
| P04 | 有Java的经验,用Angular做前端开发。2年前,P04开始用Kotlin/Android进行移动开发。P05 & P06 | 平台游戏 | Flame,对Unity和Unreal有一些接触。 |
| P05 & P06 | 成立了一个游戏工作室,专注于休闲游戏超过15年。P05和P06参与了同一个游戏,并一起接受了采访。 | 字谜 | 无 |
认为使用Flutter开发游戏的好处
参与者说出了使用Flutter开发游戏的多种好处。我们将多个参与者提到的优点列举如下。
- 简单性。参与者认为Flutter比大型游戏引擎(如Unity和Unreal)更容易上手,在构建2D休闲游戏时也不容易被淹没。(P03, P04)
- 控制。参与者对能够在集成开发环境中看到Flutter的源代码,并能完全直接控制画布表示赞赏。(P01, P02, P04)
- 生态系统。开发人员可以利用Flutter生态系统中的软件包,如数据持久性和音频播放。(P01, P02, P03, P04) 具体来说,P01认为Flutter的音频功能优于其他跨平台UI工具包。
- 跨平台:参与者赞赏Flutter易于部署到iOS和Android,并认为它提供了 "一个真正的单一代码库"。(P01)然而,这一点并没有被经常提及,因为游戏引擎通常是跨平台的。
- 易于构建用户界面: Flutter游戏可以很容易地在其用户界面中利用任何Flutter小部件。(P04, P05)这对那些更像应用程序,不需要使用游戏引擎的游戏特别有用(例如,P05和P06建立的文字拼图游戏)。
- 学习机会。Flutter和Flame的开源性质提供了一个机会,通过构建游戏来培养对游戏引擎和图形管道的良好理解。(P03)
- Flame游戏引擎:使用Flame的参与者普遍对该项目在能力和Flame提供的支持方面给予积极评价。P04因为发现了Flame而专门在Flutter上做了一个游戏。
认为使用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)这对从事计算机图形的参与者来说有点重要。
- 缺少控制刷新率的用户空间API,比如120hz (P01, P02)
- 不确定Flutter是否有提供帧缓冲区可见性的GPU调试工具。Xcode有很好的OpenGL调试工具。(P01)
- 性能和包的大小。
- DevTools并不总是有助于诊断一个有游戏循环的游戏的性能问题。(P02)
- 在低端iOS设备上出现了动画空白。着色器预热的解决方法很有用,但很费力。(P05) 也没有关于如何做的视频教程。(P03)
- 在使应用程序的渲染质量适应设备的性能特征方面缺乏支持。(P05)
- 对于网页游戏平台,如Facebook即时游戏,网页包的尺寸太大。(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服务)。
- 一个专门的网站,包括所有的游戏开发资源和第三方服务的推荐(如包,资产市场)。
- 涵盖基本游戏开发概念(如游戏循环)、与后端整合、游戏支持和货币化服务的指南视频(s)。P03对长篇视频也很感兴趣,如无聊的表演,以经历游戏开发的整个过程,包括故障排除。
我觉得两种不同的[视频]内容会更好。一种是非常短的,类似于Widget of the Week,然后是类似于Boring Flutter Show,在那里你会进入整个过程,经历创建游戏的所有步骤。(P03)
"应该拥有 "的资源包括。
- 一个专用于游戏的Flutter Discord频道,比Flame团队的Discord频道更通用。
可以拥有的 "资源包括:
- 实验中心(Codelabs)
- 教员指导的研讨会
- 谷歌服务的积分(如GCP、Ads、Firebase)。
- 直接获得专门的支持
基于参与者的宝贵意见,我们在休闲游戏工具包的初始版本中优先考虑了 "必须拥有 "的资源。
如前所述,我们进行了一项补充调查,以获得对Flutter社区中游戏开发的更广泛看法。下图显示了高层次的结果。
Flutter用户对使用Flutter进行游戏开发很感兴趣
毫不奇怪,许多Flutter用户(62.4%)不知道他们可以用Flutter来编写游戏。然而,39.2%的人有兴趣了解更多。
对用Flutter构建游戏的广泛兴趣还体现在,许多Flutter用户对一般的游戏开发并不陌生。在936名受访者中,500多人有Unity的经验,130多人有Unreal的经验,120多人有Flame的经验,80多人有Godot的经验。看到许多开发者已经具备了游戏开发的技能,这很令人鼓舞。
许多Flutter游戏开发者刚刚起步
我们随后询问了那些知道Flutter能够构建游戏或者对Flutter感兴趣的人,让他们告诉我们他们在游戏开发过程中处于什么位置。在这个群体中,43.2%的人还没有开始一个具体的游戏项目,这表明他们需要得到起步支持。
外面的Flutter游戏比我们想象的还要多
我们要求受访者向我们指出他们用Flutter制作的任何游戏。令我们惊喜的是,我们收到了148份回复。其中许多游戏是2D拼图或平台游戏,而其中少数人尝试用Flutter做伪3D效果。
用Flutter构建非常成功的手机游戏似乎是完全可能的。例如,Kelimelik是我们通过这次调查了解到的一款Flutter游戏,在写这篇文章时,它在Google Play上有4.5颗星,有超过356,000条评论和500万次安装!
Flutter用户希望有更多的游戏开发文档
当我们问受访者是什么阻碍了他们在游戏项目中取得进展时,我们收到了31个回答。其中很多都是与缺乏文档有关。
- "没有足够的教程,我没有足够的理解"
- "没有足够的资源/教程/文档(flutter flame)"
- "文档对初级游戏开发者不是很友好。还有很多事情可以做,在教程或和案例研究走访中,创建一个非常简洁的Flame组件介绍,让人们开始了解Flame组件。"
这一反馈与我们从访谈研究中了解到的情况相吻合。调查对象还提到了一些问题,如缺乏3D支持,使用着色器的困难,以及特定硬件的性能问题,以及视觉效果(如阴影)。
我们的研究结果显示了在Flutter上开发2D休闲游戏的潜力。一些Flutter用户已经尝试并成功推出了顶级游戏,还有更多的用户有兴趣在未来几个月内开始使用。
为了让这些新的游戏开发者获得成功,我们必须将Flutter与市场上的其他游戏开发工具进行适当的定位,并利用Flutter的开放性和参与性使其对游戏开发的支持更加成熟。
因此,我们想提出一些建议,这些建议不仅针对谷歌的Flutter团队,而且也针对Flutter社区的软件包作者、工具构建者和内容创建者。
研究结果表明,当我们在游戏开发工具市场中定位Flutter时,我们需要考虑三个方面。
游戏的类型。
- 以2D休闲游戏为目标是一个很好的出发点。
- 拼图和平台游戏是用Flutter开发的成功的游戏子类型。
开发者的类型。
- 想利用Flutter的休闲游戏开发能力的Flutter应用开发者(如P02、P04和P05)。
- 计算艺术家和图形爱好者(如P01和P03),他们被Flutter提供的高度控制和开放性所吸引。
游戏开发团队的类型。
- 我们可以专注于独立游戏开发者和混合游戏/应用机构,他们的专业角色较少,可以从Flutter的跨平台能力中获益更多。
文档和学习资源
根据访谈研究中的用户意见,我们认为Flutter社区的创作者和教育者可以通过专注于创建开源的示例游戏、操作视频和策划的游戏开发资源清单来发挥最大的影响。我们在I/O大会上发布的Flutter休闲游戏工具包是我们按照这些思路组织资源并提高其在Flutter用户中的知名度的首次尝试。
对Flutter APIs和能力的潜在投资
在研究过程中,参与者指出了几个主要的产品功能,他们希望Flutter SDK在未来能够更好地支持这些功能。
- 可用性和对着色器的支持(GitHub issue)。另外,如果库维护者(例如Flame)直接使用着色器API(例如,P03希望在游戏引擎中获得更高层次的抽象),这可能就足够了。
- 网络应用程序包的大小。一位与会者指出了将游戏扩展到基于网络的游戏平台(如Facebook即时游戏)的问题。因为网络捆绑尺寸太大,他们最终选择了HTML渲染后端而不是更快但更大的Canvas Kit后端。(P05)
- 支持Windows / Steam。多个参与者表示对尝试他们的游戏对Windows的新支持有强烈兴趣。其中一位提到,Windows是最重要的支持平台,特别是如果你打算在Steam上发布你的游戏。(P03)然而,鉴于没有参与者或我们的团队成员测试过Windows上的游戏开发或与Steam的整合,这种情况仍然是模糊的。
除了这三个方面的改进之外,我们最近开始与社区成员合作,对与游戏有关的问题进行分流,并将其标记为a: gamedev。
我们从这对研究中了解到的情况,包括Flutter用户对游戏开发的广泛兴趣,以及Flutter的简单性和高度控制性受到现有Flutter游戏开发者的赞赏,让团队对追求游戏开发作为一个可行的用例充满信心。休闲游戏工具包是我们在这一领域的首次投资,我们期待着在后续研究中听到我们的社区成员如何利用它。
Zoey Fan、Christopher Fujino和JaYoung Lee为本研究做出了贡献,Shams Zakhour编辑了这篇文章。我们要感谢参与本研究的用户和Flame团队在招募参与者方面的支持。