在游戏产品中使用敏捷方法

随着开发技术的不断演进和玩家需求的日新月异,游戏产品日趋复杂。那么如何来更好的管理游戏产品呢?这里我们引入敏捷方法来进行更高效的产品交付。


敏捷(Agile)的介绍

敏捷(Agile)是一种新型软件开发方法,以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,可以应对快速变化的需求。

敏捷的原则(即敏捷宣言):

  • 个人与交互 重于 流程和工具
  • 可工作的软件 重于 完备的文档
  • 客户协作 重于 合同谈判
  • 响应变化 重于 按部就班

敏捷核心是价值驱动和快速迭代,是一种基于经验的过程控制方法,而非传统项目管理中基于预测的过程控制方法。

敏捷适用的范围:

当需求存在不确定性、对于实现难以达成一致意见,那么就会呈现出复杂系统的特征,例如开发一款全新的游戏产品。敏捷方法对于这种需要作出复杂决策的项目中是很好的选择。

(另外,如果一个项目中大部分的细节已经知道,很多事情大家都很容易达成之一,且具有较大的确定性,那么瀑布式方法可能是最好的选择,例如换皮项目。)

Stacey Matrix

游戏产品适用敏捷方法

游戏是一种复杂的产品,需要融合技术、美术、音乐、数值、剧情、付费等等,玩家的需求又是多种多样、快速变化。所以游戏项目需要复杂决策,适用敏捷方法。

大到 Activision Blizzard, Supercell 这样的巨无霸,小到无数欧美的游戏工作室,都在一定程度上使用了敏捷方法,来提升产品交付的速度和价值。

结合这几年我在手机游戏项目中的实际工作经验和项目上的思考,分享一些对大家有价值的敏捷方法和实践。


产品管理

1. 使用 MVP 和 MMF 来构建游戏产品

MVP,最简化可实行产品,即用最快、最简明的方式建立一个可用的产品原型,这个原型要表达出你产品最终想要的效果,然后通过迭代来完善细节。

MVP的几个关键点

  1. 要深入挖掘用户的最本质需求;
  2. 每次迭代结束都有一个可行性产品;
  3. 切勿追求大而全,简化任何不重要的功能,减少任何不需要的功能。

例如下图中,用户的初始需求是:我想要一辆汽车。深入挖掘后得到用户的最本质需求:我要方便出行。那么可以通过每次迭代都有一种交通工具产出,来满足用户的最本质需求,去掉任何不相关的功能。(图片来源:谭小超,独立面对一款新产品时,应该如何下手?

MVP

MMF 最小可售功能

  1. MMF是可以给用户增加价值的最小单位的交付物;
  2. 通过将项目拆分为若干个MMF,团队可以专注于开发一组有价值的小功能,并迅速交付给客户;
  3. 可以把MVP理解为一组最核心MMF的集合。

对于一个游戏产品,特别新产品,可以去考虑

  1. 游戏对于玩家最大的价值是什么?游戏最核心的玩法是什么?
  2. 基于这个核心玩法,并对其他系统进行简化,从而快速构建一个游戏产品;
  3. 及早、尽快交付,进行买量测试、收集反馈。每次交付都应该是一个完整的、经过测试的、玩家可以体验的游戏;
  4. 所有游戏功能应该按照对玩家的价值进行:分类、排序、分解;
  5. 团队应该优先关注在一组高优先级的游戏功能上,而不是所有的功能实现上;
  6. 不要急于做一个大而全的游戏产品,一下子把摊子摊得太大。要先完成核心功能,然后逐步完善其他系统。

2. 使用 Product Backlog 和 Sprint Backlog 来管理需求

Scrum是敏捷方法中一种重要的软件开发方法,Scrum包含了一套完整的项目流程的框架,如下图所示:


Scrum

Product Backlog (产品待办列表)是一个排序的列表,包含所有产品需要的东西,也是产品需求变动的唯一来源。产品负责人负责维护产品待办列表的内容、可用性和优先级。

Sprint Backlog(迭代待办列表)是一组为当前 Sprint (冲刺=迭代)选出的 Product Backlog,外加交付产品增量和实现 Sprint 目标的计划。Sprint Backlog是开发团队对于哪些功能要包含在下个增量中,以及交付那些功能所需工作的预计。

在实际工作中的使用

  • 可以把 Product Backlog 作为产品的中长期目标,使用Excel来记录产品的功能点、优先级、大致工作量等,列表内容进行持续更新、逐渐细化;
  • Sprint Backlog 作为产品的短期目标,需要撰写详细的策划案,明确清晰的定义功能,并且能在迭代周期内容按时完成;
  • 一次迭代完成后,从Product Backlog中抽取最高优先级的功能需求,放入Sprint Backlog中,进行细化并实现,以此往复。

对于Product Backlog

  1. 唯一性:作为产品需求唯一的来源,所有需求必须放入Product Backlog中进行统一管理;
  2. 动态性:产品待办列表一直是动态的,需要持续更新,初期主要包括理解最透彻的那些产品需求,然后随着产品及其应用场景的改变而不断演进,会逐步增加新的玩法需求、玩家反馈、运营需求、系统优化等等,来保持产品需求的适应性、竞争力和实用性,这将贯穿于整个产品生命周期的始终;
  3. 渐进明细:定期进行“产品待办列表细化”,主要工作内容是为待办列表条目补充细节描述、工作量估算(可以采用相对估算)、对大型条目进行合理拆分,必要时调整待办列表条目的优先级顺序,始终优先开发高价值的功能;
  4. 负责人:有专人进行定义维护Product Backlog,可以是制作人或者主策,然后让所有项目参与者达成共识,加深对游戏发展的方向的理解,提前做好准备。Product Backlog可以作为产品的中长期目标。

对于Sprint Backlog

  1. 内容:包含当前迭代的需求,也就是Product Backlog中优先级最高的需求,而且能够在一个迭代中完成;
  2. 细化:需要进行细化,并分解为完成需求的多个具体任务,每个任务应该能在1天内完成;对于特别大的功能,应该考虑进行拆分,逐步在各个Sprint里交付;或者单独拉分支进行开发;各个任务的工作量应该进行合理评估,从而形成清晰可见的工作计划;
  3. 工作分配:按照之前实际项目经验,每次迭代中,合理的工作量分布大概为:新玩法: 1/3;付费和留存改进:1/3;bug fix和系统优化:1/3。所以对于每个迭代,不能完全放满新玩法的实现,需要留出足够的时间去做各方面的改进和优化。
  4. 负责人:Sprint Backlog的内容,可以在主策的组织下进行任务细化,形成当前版本的详细策划案,所有团队成员通过评审、讨论、工作量评估,完全理解策划案的内容。Spring Backlog可以作为产品的短期目标。

日常工作

1. 任务管理

  • 通过每日站会、看板来建立一个信息透明、及时反馈的工作环境;
  • 每日站会,15分钟3个问题,目的让大家分享工作成果、确定今天计划、及早发现和解决问题;
  • 看板(Kanban),实现管理的可视化,所有信息可以集成到看板中,进行统一管理。甚至可以用看板管理所有的需求、bug、工作中障碍,风险等等;
  • 鼓励每个人来积极参与,互相协作,主动去选择工作任务,共同承担团队的工作。
Kanban

2. 持续集成

  • 对于“工作完成”(Definition of Done)有着明确定义,团队理解并能严格遵循;
  • 可以进行每日构建 (Daily build),及早发现工作中的问题;
  • 尽早、频繁交付,持续收集内部、外部反馈,并指导下一步的工作;
  • 保持一个恒定的工作节奏(Cadence),更加有利于工作的持续进行,例如1个月进行1次正式发布。

3. 团队管理

  • 团队集中办公 (Co-location),通过面对面的沟通提高工作效率;
  • 研运一体 (DevOps),提高协作效率,降低发布风险;
  • 减少外部干扰,减少不必要的会议,让团队更加专注于工作本身;
  • 通过项目回顾 (Retrospective),让团队对工作流程和方法进行自我学习和自我完善。

4. 团队激励

  • 开放和透明的环境,鼓励尝试,允许犯错,提高每个人的参与度;
  • 清晰可见的工作进展,持续不断的验收交付,提升个人成就感;
  • 能够迅速得到市场的反馈、玩家的评价,即时的外部认可、绩效反映;
  • 及时、合理的物质激励,和个人绩效和团队绩效紧密挂钩。合理的利益分配机制是一个公司长久发展的基石。

Build projects around motivated individuals!


测试驱动

测试驱动开发TDD(Test-Driven Development),是一种敏捷的开发实践,是指先对软件的验收测试进行定义,再编写模块代码,这些代码将围绕着通过这些测试而构建,只要写对代码必然应该通过测试。

如果宏观的去思考测试驱动,对于任何一个游戏产品,最终的验收标准都会是:是否能够得到市场的认可、得到玩家的喜爱。如果我们围绕着这个标准去做,尽早得到市场和玩家的反馈,从而指导游戏的设计和开发,那么可以更好的帮助我们得到一个受到市场和玩家欢迎的产品。

1. 核心玩法、美术设定

核心玩法,是游戏中最重要部分;美术,作为游戏第一眼的印象,对于游戏产品的成功也是至关重要。

很多时候我们在说这个核心玩法好不好玩,美术效果好不好的时候,有没有考虑过这样一个问题:到底是谁觉得好或者不好?是你觉得呢?还是玩家觉得?还是你想象当中的玩家,应该这样觉得?

其实很多时候我们会都把自己当成所有目标用户来进行决策,一旦决策错误需要返工的话,核心玩法意味着游戏推倒重来,美术意味着巨大的重新制作或外包成本,这都是一个公司不愿意去承受的成本。

那么如何让玩家来尽早提供对核心玩法和美术设定的反馈呢?

我们可以从游戏项目概念阶段开始,就逐步进行美术和核心玩法的测试。例如,美术设定,直接可以从游戏ICON和游戏截图中体现,通过广告进行买量测试,从而来识别玩家对于哪种美术设定更加接受;核心玩法可以使用前面讲过的MVP的方法,快速构建最简化可实行产品,然后进行买量测试,收集玩家数据,逐渐完善游戏功能。

这样的用户测试,需要在项目初期和开发中,不断的进行广告投入,但这个费用比项目上线后,再去进行大范围的修改,成本远远低的多!特别当你的游戏产品可能有爆发性用户增长的时候(例如推荐),先调优再上线,这点特别重要。

2. 游戏运营、版本更新

运营数据,通过事件跟踪SDK在游戏内打点后,我们可以很容易得到游戏的运营数据,例如:DAU, D1, D7, D30, Conversion rate, Session duration 等等,这在游戏行业已经是非常成熟的模式了。通过持续的运营数据跟踪,关联到各个版本之间的内容改动,我们可以从大量数据中得到规律性的东西,什么是玩家真正喜闻乐见的,从而更好的指导游戏开发。

版本更新,相当于是向玩家交付新的内容。这里可以考虑进行灰度发布,也就是让一小部分玩家先试用起来,效果好了之后再进行全服更新。

那么问题来了,App Store里发布App是无法进行灰度发布的,Google Play当中倒是可以进行A/B Testing。对于App Store可以考虑选择一个小的地区,例如港澳台单独发布测试,数据好了之后再发布大陆,可能会有一定帮助。另外是否可以利用游戏内热更新,进行部分的灰度发布,这点应该是可以去尝试的。

3. 策划和开发的测试

对于策划和开发来说,也应该考虑如何更好的测试,在整个项目过程中,尽早持续的去准备和进行测试。

策划阶段,会对产品的功能进行细化,形成一份可供游戏实现的详细设计方案。对于策划来说,测试标准除了市场和玩家的反馈,也应该考虑到是否好分解、是否好实现、是否好测试,从设计角度去规避高风险难测试功能。有句话叫做:好的质量是设计出来的。

举个例子,一个游戏里A、B、C、D这样4个系统。以左图为例,随着系统的增加,系统之间的交互快速增加,越到后面复杂度就越高,这样的设计越到后期,问题就越多,开发速度就越慢。反过来看右图,一些细节被合理的放在系统内容,从而大大降低了系统之间的交互。我们可以看到,随着系统的增加,复杂度基本保持稳定,实现起来的速度也会相对较快。

Design

对于开发而言,有2点可以特别关注:

首先,对于“工作完成” (Definition of Done) 的认识。代码完成不等于工作完成,只有当所有规定的开发要求达成之后(例如文档、单元测试等),才能称之为工作完成。小型团队对于质量难以去把控,特别要加强工作完成的共同理解,强化质量意识。开发进行任何修改都需要进行测试,开发应该要主动告知测试修改的内容,可能的潜在影响,从而进行全面测试。

其次,开发出来的功能是不是好测试?某些功能只有在特定条件、特定等级下才能使用,那么测试是否可以比较容易的达到这样的条件和等级,来进行测试?还是切记一点,开发不是只写完代码就完事了,一些有助于进行测试的功能开发也要考虑进去。只有当功能测试完毕正式交付之后,才能说这个阶段的开发工作全部完成了。


实施敏捷的难点

1. 思维方式的转变

  • 人的思维方式,是最难改变的,要通过不断地辅导和实践来进行转变;
  • 实施敏捷可以分成几个阶段逐步实施,让团队慢慢适应敏捷开发;
  • 鼓励大家提出好的方法和流程,来完善敏捷方法,真正提高效率;
  • 一旦敏捷团队形成后,要保证团队稳定,这样即便有新人加入,也会很快习惯敏捷方法。

2. 缺乏自动化测试环境

从技术上考虑敏捷的实现,最大的难点就是自动化测试 AT (Automation Test)。在我目前所处的环境中,并没有接触到任何自动化测试。如果要去快速、频繁的交付,必定需要完善的自动化测试环境。光靠人力的话,一是容易产生倦怠导致测试效果降低;二是在人员配置较少的情况下,测试覆盖度无法保证。

网上可以找到 Riot Games 公司进行 LoL 自动化测试的一些资料,也看到有一些优秀的公司和个人在往这个方向上努力,希望能够早日看到一些通用的解决方案,从而使整个行业的开发质量有着明显提升。


写在最后

Scrum、极限编程 (XP)、精益 (Lean) 等敏捷方法中,还有很多优秀的方法,可以结合实际工作进行取舍。任何一个方法,只要是适应团队的、能够真正提高效率的,那就是一个好方法!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • Scrum指南的目的 Scrum是用于开发和持续支持复杂产品的一个框架。本指南包含了Scrum的定义,其中包 括S...
    iceinto阅读 2,286评论 0 10
  • 返回目录 下一章·Scrum 中的基本角色和职责 我们发现,许多项目成员对敏捷开发中的一些基本名词概念模糊,造成了...
    o黄裳元吉o阅读 12,105评论 1 13
  • 有段时间,生活一团糟,我尝试着理清工作和生活交织在一起的错综复杂的关系,让自己从无尽的烦恼中解放出来。有个人对我说...
    Mercy2016阅读 380评论 0 0
  • 2017年8月2日,因慕名最美的霞光最美的滩涂来到霞浦,入住北岐的民居。民居就是村民的家。 为了...
    楚丫丫阅读 883评论 0 4
  • 古人云“画虎画皮难画骨,知人知面不知心”。 一个人如果活的虚伪,那真的是太可怕了。 为什么呢?因为如果一个人故...
    武雪儿阅读 2,136评论 0 0