10 个用户画像:Turian 为谁而造
开发工具时,最大的风险是把它塑造成只适合作者自身风格和偏好的样子。但我一直希望 Turian 能帮助使用它的人,而不只是我自己。这篇文章会点名说明:我究竟在为谁开发 Turian。
在 256 种游戏开发者类型中,我提出了一套描述游戏创作者的词汇:四个层面、十六种风格,以及每位创作者对应的四字母类型。本文从这套词汇出发,选出十个人。他们是虚构的,但我有意把他们写得具体。每个人都有日常工作、一个对应的类型,以及两句简短描述:喜欢什么,讨厌什么。喜欢的东西也是底线,是决定他们是否留下的那项检验;讨厌的东西则会让他们不作解释地离开。功能列表可以放进表格比较,但一个人最在意的东西,是他首先检查、此后也会不断检查的。
十个人中,有七个亲手制作游戏。剩下的 Gabriel、Isabela 和 Julio 从不为了创作而打开编辑器:他们搭建流水线、选择技术栈、衡量交付情况。他们代表数十位创作者作出决定,所以也在名单里,但这份名单的重心仍是创作者。
我有意把这份名单公开。路线图条目和 Issue 会使用这些名字。工具如果不说清楚服务谁,就是在让用户自己猜。
这篇文章介绍这些人,以及他们提出的要求。至于今天的 Turian 对每个人究竟做到了什么,包括坦诚面对的缺口,请看配套的现状审视。
十人一览
| 用户画像 | 类型 | 日常工作 | 喜欢 | 讨厌 |
|---|---|---|---|---|
| Ana | P·W·I·J | 高中生 | 第一次使用就能用自己的语言做出能运行的东西 | 某个步骤失败,却不告诉她原因 |
| Benjamin | C·P·A·J | 代码优先的独立开发者,单人制作 | 从资产加载到构建,一切尽在掌握 | 必须使用编辑器的工作流 |
| Carlos | I·W·I·C | 诞生于 Game Jam 的远程工作室 | 在编辑器内反复试玩,各项职责互不阻塞 | 一项职责卡住另外三个人 |
| Daniela | A·P·I·J | 2D/3D 游戏美术 | 保真:做出的资产原样进入游戏 | 导入悄悄降低资产质量 |
| Eduardo | I·W·C·J | 关卡设计师 | 面对庞大的资产库也能全程不崩溃 | 哪怕后来修好了别的问题,也不能损坏一个文件 |
| Fernando | I·H·I·J | 游戏经济设计师 | 在电子表格里调平衡,无需程序员介入 | 改个数字也要找程序员 |
| Gabriel | C·P·A·C | 工具与 DevOps | 无头构建两次,字节完全一致,回滚只需一次点击 | 只能在图形编辑器里完成的任务 |
| Isabela | C·H·A·D | AA 工作室负责人 | 有证据的基准测试、清楚的价格、熟悉工具的人才市场 | 发布一个演示,就把它叫作路线图的炒作 |
| Julio | C·H·A·C | AAA 制作人 | 可衡量、可拆分、可整合的交付 | 意外,以及根本不指出问题的错误信息 |
| Mariana | C·S·T·I | 工具开发者 | 版本化 API,以及升级后包仍能正常使用的商店 | 并非由她造成的破坏性变更 |
Ana

把游戏制作当作爱好的高中生
P·S·I·J:原型型(Prototyper)、选购型(Shopper)、集成型(Integrator)、实干型(Journeyman)。
Ana 十六岁,在圣保罗上高中。英语是学校的一门课,不是她日常使用的语言,可网上的教程照样默认她懂。她想为了好玩,围绕身边的世界做游戏:自己的教室、朋友、食堂的队伍。跟着教程时,她会全神贯注。暂停、照做、继续、再来一遍,等到晚上结束,一个游戏就做出来了。
她处处都需要帮助,自己也知道:可以跟着做的教程、商店里的现成资产、能用拖放操作的编辑器,以及尽可能少的编程。她从不从白纸开始,而是拿一个能运行的东西,换掉美术、调整规则,直到游戏讲的是她和朋友,再把结果分享出去。哪个步骤失败,她会先认定是自己弄错了。
**喜欢:**第一次使用就能用自己的语言做出能运行的东西。
**讨厌:**某个步骤失败,却不告诉她原因。
Benjamin

代码优先、单人制作的独立开发者
C·P·A·J:交付型(Closer)、纯粹型(Purist)、架构型(Architect)、实干型(Journeyman)。
Benjamin 是一位习惯把作品做完并发布的单人开发者:已经发布两款游戏,第三款正在开发。他沿用在 MonoGame 中学会的方式,几乎全靠代码制作游戏,工作主要在终端里完成。版本控制历史就是项目的日记。
在 Benjamin 的世界里,编辑器是内部工具,而且由他自己来做。他必须掌控一切:资产如何加载、内存花在哪里、什么拖慢一帧、构建怎样生成。Studio 不是敌人,只是一扇很少打开的窗口。任何只能靠点击完成的操作,在他看来都是别人设计上的缺陷。
**喜欢:**掌控一切,从资产加载和内存,到性能和构建。
**讨厌:**必须使用编辑器的工作流。
Carlos

诞生于 Game Jam 的小工作室成员
I·W·I·C:迭代型(Iterator)、世界构建型(Worldbuilder)、集成型(Integrator)、统筹型(Conductor)。
Carlos 和三位朋友在一次 Game Jam 中相识。原型没得奖,友谊却留下了,于是一家工作室诞生了:四个人,全员远程,纸面上各有分工,实际却人人身兼数职。这周 Carlos 写程序,下周做关卡,再下一周又在合并别人的工作。
工作室依靠第三方资产,尤其是现成系统,因此编程主要是在写衔接代码和游戏本身。对 Carlos 来说,工作就是不断调试和调整,编辑到试玩之间的每一秒等待,都是一天要缴上百次的税。同样的想法也适用于团队:四个人都需要不等别人,就能交付自己的部分。
**喜欢:**在编辑器内反复试玩,每个岗位都能独立交付,不必等待其他人。
**讨厌:**一项职责卡住另外三个人。
Daniela

游戏美术
A·P·I·J:炼金型(Alchemist)、纯粹型(Purist)、集成型(Integrator)、实干型(Journeyman)。
Daniela 的一天像条流水线:在 Photoshop 或 GIMP 中制作,导出;如果是 3D,就用 Blender,再导出;导入引擎,调整材质;试玩;好了,下一个资产。制作工具和引擎之间,一年往返上千次,每次都有可能发生偏差。
她是美术,不是工程师,引擎内部怎么运作不是她的工作。她关心的是保真:花了几个小时做出的资产,进入游戏后必须还是原来的样子,颜色、法线、感觉都不变。如果编辑器拥有她原来那些工具的可视化功能,比如材质、曲线、调色,那是很大的加分项,因为看不见就没法修。流水线上那句“好了”,是专业人士的验收;在她心里,成品总比脑海中的画面差一点。
**喜欢:**保真:在 Photoshop 或 Blender 里花费的数小时工作,原封不动地进入游戏。
**讨厌:**导入悄悄降低她花了几个小时做出的成果的质量。
Eduardo

关卡设计师
I·W·C·J:迭代型(Iterator)、世界构建型(Worldbuilder)、策展型(Curator)、实干型(Journeyman)。
Eduardo 把现有资产搭配成关卡、界面菜单,以及连接它们的空间。对他来说,关键是组合。组合到位后,他还会借助粒子和补间更进一步,因为目标是以多媒体形式传达艺术,静态画面只是起点。
他的工作建立在别人的成果之上:美术交付新资产时归并整理,战斗动画一到就试玩,用套件、预制体和变体让内容繁多的场景保持一致。撤销不可或缺,资产库则是多年工作的积累。
**喜欢:**面对庞大的资产库也能全程不崩溃。
**讨厌:**损坏哪怕一个文件,不管之后修好了什么。
Fernando

游戏经济设计师
I·H·I·J:迭代型(Iterator)、独立型(Hermit)、集成型(Integrator)、实干型(Journeyman)。
Fernando 负责平衡游戏经济:伤害曲线、掉落率、价格,这些决定玩家会不会留下的数字。他对每一项都有自己的看法,也都有电子表格作证。他的工具在游戏之外:自定义格式的导入导出、手动输入的数字、滑块、统计和分析。
他主要在游戏编辑器之外工作,而且更喜欢这样:用为整张表设计的工具,而不是一次只改一个值。以“找程序员改一下”开头的请求,往往一周后才收到一个错误的值,所以游戏必须能直接接受这些数字。
**喜欢:**在电子表格里调平衡,无需程序员介入。
**讨厌:**改个数字也要找程序员。
Gabriel

DevOps 工程师
C·P·A·C:交付型(Closer)、纯粹型(Purist)、架构型(Architect)、统筹型(Conductor)。
Gabriel 管理一家中型工作室的构建集群,并有权自行选择技术栈。他的仪表盘会告诉他每个构建的状态、面向 Android、iOS、PC 或主机中的哪个目标,以及如何回滚。他这个季度没打开过编辑器,游戏照样发布了。
他喜欢 API 和无头工作方式,规则很简单:流水线需要的一切都必须能通过命令行完成,因为只存在于图形编辑器里的功能,对 CI 来说就等于不存在。如果同一个干净检出的项目,周二构建和周一的结果不同,那不是谜团,而是某个人的流程有缺陷。隐式的“魔法”是负担。只存在于某个人脑海中的手动步骤,是迟早会发生的事故。
**喜欢:**无头构建两次,字节完全一致,回滚只需一次点击。
**讨厌:**只能在图形编辑器里完成的任务。
Isabela

AA 工作室负责人
C·H·A·D:交付型(Closer)、独立型(Hermit)、架构型(Architect)、导演型(Director)。
Isabela 管理一家新工作室,团队成员一起离开了一家 AAA 公司。她根据团队已有的技能选择工具链,刻意不掺杂热情:热情是制作游戏的好理由,却是选择技术栈的糟糕理由。她在定期的里程碑和迭代试玩中了解工作室的成果,这就够了。
她没有奢侈到可以爱上一款引擎。选择技术栈,要看四张表:按席位还是按版税计费的价格、许可条款、团队将要置身的生态,以及招聘市场,因为接下来招的三个人已经会什么,比任何功能列表都重要。她经历过一轮轮炒作,知道让四十人的团队追随别人的兴奋要付出什么代价。没有证据的路线图只是营销。
**喜欢:**有证据的基准测试、清楚的价格,以及已经熟悉这款工具的人才市场。
**讨厌:**为炒作而炒作,比如发布一个演示,就把它叫作路线图。
Julio

AAA 制作人
C·H·A·C:交付型(Closer)、独立型(Hermit)、架构型(Architect)、统筹型(Conductor)。
Julio 通过 Issue 和工单协调多个团队,打开游戏只有一个目的:检查功能是否有效,而不是自己制作功能。他对流水线里的每种工具都会一点,刚好够完成工作。他需要知道谁交付什么、下个补丁有多大,以及构建要多久。
他的一周是版本管理、工作拆分、整合和评审。能衡量,才能管理;不能衡量,就会在最糟的时候让所有人措手不及。他最安静、也最强烈的愿望,是警告和错误信息能准确指出问题,因为团队如果说不清哪里失败,评审就只能用来猜。
**喜欢:**各团队的交付都能衡量、拆分、整合和评审。
**讨厌:**意外,以及根本不指出问题的错误信息。
Mariana

工具开发者
C·S·T·I:交付型(Closer)、选购型(Shopper)、工具匠型(Toolsmith)、传播型(Influencer)。
Mariana 在团队中的职责是开发工具和插件,帮助其他人制作游戏,她比公司里任何人都熟悉编辑器 API。她做的一款内部工具足够可靠,于是把它放到了市场上,与其说是计划,不如说是偶然。它吸引了一批忠实用户,为工作室带来额外收入,现在她用同一套代码服务内部和外部客户。
她按固定节奏发布,每次都会对外介绍。她的两个担忧,其实是同一件事的两种表现:引擎的破坏性变更,会变成不是她造成的支持工单;升级后丢失的引用,会变成退款请求。
**喜欢:**编辑器是一套有文档、带版本的 API,商店里的包升级后仍能正常使用。
**讨厌:**并非由她造成的破坏性变更。
十个人共同提出的要求
把十个人放在一起看,会反复出现三项要求:
- 编辑器能做的,命令行也要能做。 Benjamin、Gabriel、Julio 和 Isabela 对编辑器不会达成一致,但对流水线可以。
- 经得起变化的标识。 Mariana、Julio 和 Eduardo 都需要在重命名、移动和更新时,不破坏依赖它们的内容。
- 要数字,不要形容词。 Isabela、Julio 和 Gabriel 不会凭信任接受“快”或“可复现”。每个主张都应附上测量结果和复现方法。
这三项要求是路线图的骨架。路线图条目或 Issue 只要写明面向谁,就会写出这十个人中的一个名字。
描述人物还只是容易的那一半。配套的现状审视会逐个检查,他们今天在 Turian 中能找到什么、喜欢什么、讨厌什么,以及我还欠他们什么。
#gamedev#tools#game-engines#turian