游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8602|回复: 3

[讨论] 电脑游戏结构与设计——第十二章

[复制链接]

79

主题

288

帖子

619

积分

高级会员

Rank: 4

积分
619
发表于 2004-3-8 17:18:00 | 显示全部楼层 |阅读模式

第十二章 里程碑及期限

  

*企划的时程安排

*避免独断的期限

*破除模糊的里程碑

*企划的开始

  

不管我们多喜欢在自由而且没有压力的情况下撰写软体,一些里程碑与期限这是有必要的。是的,它们是所有[不琐碎软体企划]的常见要素,而且也是许多研发者生命中的祸根。

在看看所有的里程碑和期限后,很令人惊讶的是,大部分的里程碑规格都是设定在一个独断的风格之中:而且在大部份的情况下,期限则是定义在一个[期限]的基础上,而非实际的预估。这个特点来自不同要素的作用,包括市场的影响、没有经验的软体管理者,而且在某些情况下,包括了极为固执的人。当然了,大部份的人们只是不知道如何针对软体的研发来预估时程。想要维持公平是一个困难的过程,而且它包括了许多的分析与计算,才能产生有用的结果。

在游戏产业之外,软体公司使用一个比较严密的方式,而不是[选一天并期望那天做完]。即使如此,贵重的训练以及指导方针,还是有助于在合理的态度下,定义出里程碑。

里程碑的作用是把企划分解成可以管理的厚块。最不应该采用的作法,就是列出一长串想用的功能列表,让研发者一个个查看是不是统统完成:当然了,事实上也不应该建议这种方式。您可以想象到,在一个企划持续了18个月的时间后,每个星期只能在几个要件上面打勾,会让士气低落到什么样子?这种做事的方式有可能成功吗?小组要怎样去集中精神并保持热忱?如同它的荒谬之处,有些企划仍然使用这样的系统来进研发,而它们的过程可能是软体研发中最无趣的。

在这边呈现的方式可以运用在各种类型的软体上,不管是试算表、资料库或是大型电玩中的射击游戏。这个章节将告诉您一组以[良好经验]为基础的指导方针,以更实际的方法来定义里程碑和期限。在本书的后面,我们会解释这些预测是如何进展,并随着企划的延续而越来越精确。这个越来越精确的现象,可以视为集中性的规则。在讨论企划的全面结构时,这个章节也可以做为本书未来章节的地图。所以,如果您正在寻找研发过程的相关资讯,这个章节可以说是您的第一站。

  

里程碑如何运作

您有多少次,非要用一个[模糊]的里程碑当做目标来工作?对没有经验的人而言(而且数量不能太多!),一个模糊里程碑是一个有很多解释且具备X种可能完成它的方式,而这个X代表您想要的任何数字,只要比1大就行。

而且您要怎么样才知道您抵达了一个模糊里程碑?如果这个里程碑的目标十分模糊,在预想的情况下,它们就是开放性的解释。那谁的解释才算数?当然了,这通常要靠您的老板才能做出[正确]的解释,而且很可能出现的情况是,他与您的看法完全不同。

试试这个简单的测试。想象您的老板给您一张纸,上面画了五角形的五个点,标示出A、B、C、D和E,如同图12.1所示。

现在,想象您的老板说:[我今天很忙,而且我需要在一个小时中完成这个工作。我有很多人要见,所以我只能简要的告诉你我需要你做些什么事。我要你在A和B之间画一条线,在我从生意上的午餐回来之前做好。

三个小时之后,您的老板蹒跚的回到办公室,并向您要完成的文件。

如果您直接在A与B之间画一条线(如同图12.2),我很抱歉,但您输了。不过,如果您先在A与E之间画一条线,然后确定这条线延伸绕着五角形穿过D、E和B,(如同图12.3),而且在A与B之间留下空白,那您就成功的达民了里程碑。

好吧,您的老板不会叫您做这些琐碎的事,这边的重点是:含糊的里程碑是没用的。

要走到您的解答,它可能代表您作了太多或是太少的事情;而大部份的情况下,程式设计师的基本心理一定会倾向后者。这并不表示良好的程式设计师都是懒虫;这只是表示在普通的原则下,二点之间的最短距离是直线(大部份的良好程式设计师,喜欢以最小的工作量,产生出规定的结果)。

不过,在前者的情况下(作了太多事)也通常代表错误的工作方式,这表示程式设计师在解答方面太过热心,提供了不需要或是没有必要的复杂功能。

在完美的情况下,里程碑不应该有这些大的活动空间,但很不幸的是,这一类状况正是大部分安排时程的问题核心所在。在一个比率公平的企划中,里程碑之间的距离放得太远,它们之间就可以容许一定程度的偏移;象是进行不必要的工作,或是缺乏集中注意力的焦点。

一个里程碑应该十分明确而简洁。它应该也很明显,足以一眼就看出这个里程碑是否已经到达:黑与白、失败与成功。它不应该迎合或是鼓励任何野心的结果或是灰暗的阴影。没有人可以说一个里程碑完成了90%;一个完成90%的里程碑给人的感觉,好象是一个灯泡的亮度为90%;这个灯泡只有亮与不亮,里程碑也是如此。

这个要点十分重要。模糊里程碑是在企划中最常见的单一问题。

  

您老板的五角形工作,应该以下列的方式来说明。

1.必备工具:尺以及一只黑笔,可以划出连续的细线。

2.在点A到点E之间,以粗细均匀的黑线相连。

3.在点E到点D之间,以粗细均匀的黑线相连。

4.在点D到点C之间,以粗细均匀的黑线相连。

5.在点C到点B之间,以粗细均匀的黑线相连。

注意:不要连接点A到点B之间。

  

这个列表是一份更详细的分析文件。这个分析应该详细到没有产生怀疑或是问题的空间。告诉您如何去解决问题。在这个例子中,还有一个更好的解决方式,而且产生出来的解答刚好可以想连的点连起来(一语双关)。您可能觉得这样的作法会将程式的创意抹杀,对这一点,我的回答是[程式并不是发挥创意的空间],换句话说[有创意性的程式设计]叫做胡闹。适合发挥创意的地方叫做设计与结构,在我们开始进行系统的程式撰写时,游戏与结果设计者已经完成了所有创意的部份。这一点可能会削弱自尊,但是一个程式设计师的工作就是很简单的翻译:拿到详细的设计,把它转换成可以在电脑上面执行的东西。

我可能已经听到程式设计师的坚决声明,说他们是创意上的天才,我怎么有这种胆子把他们贬低成只会写程式码的猴子?嗯,只写程式的程式设计师是程式码猴子。一个真正设计工作中的程式设计,在一个漫长而复杂的过程中,真的只是一个小小的阶段。它是一个结束的修正,一个微小但重要的详细过程。不过,程式设计师通常有更大的责任,而不只是写程式码。在大部份的状况下,他们也要为详细的模组设计以及相关的执行工作负责。这可以让他们把创意移到该去的地方,把创意放入附有详细说明的程式码设计文件,而不只是在写程式码。

对那些还看不懂上述争论的人,请回头看看第11章,将更详细的讨论了上述的重点,并提供了我的看法。

我曾经参与过的每一个良好企划,都有意把程式设计的等级降到简单的翻译。这些企划都平顺的进行,也统统在时间与预算的要求下完工。

相反的,所有我曾经参与的不良企划,都直接从整体的结构设计进入程式码的编写。在没有例外的情况下,这些企划都超出了原先的预算,而且完成时间向后拉长??如果他们真的完成的话。

如同在案例研究12.1所示,模糊里程碑会导致企划的延期,而且结果是让那些守着里程碑的利益团体,出现迷惑以及大量的猜疑。如果没有指出一个明确的中止点与进度,您就降低了企划的可见度,这表示没有人真正知道这个企划的进度在哪里。所以,延期与问题成为疾病,在没有人想出一套解决这种问题的方案下,它就这样发生、不受注意,一天又一天直到它大到无法忽略为止。在统计学上,大部份的企划损失时间导致没能及时完工:就是因为延期又造成了延期。这样的问题必须及早解决,而且这个状况明明可以及早矫正。

  

案例研究12.1 为何模糊里程碑可以做一个企划

在我很早以专业身份担任第一个游戏的企划时,我刚刚从学校出来,被指派一个看来很简单的任务:为我们正在进行的游戏,以微软的Visual Basic4写一个关卡编辑器。

这对一个企划的标题或是任务说明都是好事,但不幸的是,它也成为我的企划里程碑。

再也没有更难让人看到里程碑的情况了。不过,在那个时候,我并没有什么经验,所以也看不到问题的所在。

我接到的期限是二个星期,来完成这个特别的企划。在基于上一版Visual Basic的良好知识下,我开始工作。

第一个障碍,在于我对问题领域没有足够的知识:我不知道它要的是什么,即使我的老板和我认为,我们二个脑子中的游戏完成产品想象图是一模一样的。

我在思考的企划(而且我知道我可以在二个星期内完工)是一个用方格为基础的地形编辑器,可以产生出棋盘式的方块,然后用这些方块拚出有高度的地图。

而在我的老板脑中的企划,需要的是一个地形编辑器,不但有拥有上述的能力,还要能够自动用乱数或是输入一张代表高度的地图,让从VistaPro(一种地形产生套装软体)载入的资料来产生出地形,并启动更换地形上面的游戏物件(包括让先前安置的部队自动产生阵形),自动输入并在输出给美术师时进行分类,而且产生一组完整的关卡档案,其中所用的色盘将视每个关卡来最佳化。

这二份上述的说明,都是关卡编辑器的描述,但只有一个有可能在二个星期中完成,而且只有一个(在我老板的意见中)才是对的。不幸的是,我们二个看到的并不是同一个。

结果,在二个星期后,我以每一个规格完成了地形编辑器,所以达到我的企划目标(这是我所见到的)。没有人告诉我其他的东西,而且只有一个时间很紧的期限,我在写程式时没有办法加入任何东西,当然我也不可能提供一个选择,让这些东西在日后再加进来(换句话说,我在进行软体创造时,用的是[地狱程式码]的方式)。

最后的结果,是要再花十个星期的时间,才能达到里程碑,而且这个程式最后执行起来慢得让人受不了,因为它用了Visual Basic4,去尝试做太多色盘有关的处理。

  

模糊里程碑

就象登山者会被人警告不要去吃黄色的雪,您得到的警告则是不要容忍模糊里程碑,这是一个常识。为什么要在规定的期限内,朝一个您甚至不清楚在哪边的目标前进,而且在您抵达目标之后,还有可能和别人争执这个目标立在什么地方?模糊正是软体时程安排上的敌人。

模糊里程碑也会导致在企划进行全面的规格定义之前,先完成里程碑与时程表。因于这个时候还不清楚问题的领域在那边,里程碑是以概略的通则来定义,而期限则是以独断的行为,将可用时间予以切割,以直觉般的本能来安置。通常在单一的里程碑中会包括太多的工作,这代表在到达这个里程碑之前,必须完成所有分散的工作。这就会形成一个模糊里程碑,而且可以合法的描述成一个(举例来说)半完成的东西(象是要完成这个东西要二股力量,但只完成了一项)。

在单一的里程碑中填入了太多的东西,会招致反效果。除了很明显让人迷惑的要素外,它也会导致其他的次要问题。小组会觉得他们要做的事情是达成一个里程碑,但是要到达这个里程碑之前所花的额外时间,将会影响到士气,而且整个小组的态度也会转换成一场壕沟战:我们每天都在对抗他们,并在不断的磨擦中降低了前进的速度。一个小组,应该知道要花掉多少时间,所造成的进展在整个企划中占了多少百分比。

这并不是一个不可能的工作,但是它的确需要更多的规划,通常也是一位游戏企划的工作。

  

里程碑与迷你里程碑

如同定理一样,要踏上一个里程碑所花的最好时间,应该是四到八周。这将提供有限的目标,可以让里程碑在合理的情况下受到所有人的重视。另一个问题是庞大的模糊里程碑很难让人专注于其中:有谁会在意四个月之后的期限?这个状况通常会造成前三个月的时间都没有人在写程式,而最后一个月大家都在地狱中工作。

要解决这种现象(除了把里程碑之间的距离缩短)可以把每一个里程碑分散成迷你里程碑,或是查核点,大约每星期一次。很明显的,想要做到这一点,您必须把结构规划的相当好。如果,您发现在目前的处境中,无法公平的定出里程碑和迷你里程碑,那么在结构的设计上就不够完整到足以开始写程式。在这种情况下,我们可以先确定企划开始之后的重要阶段中,是否进行着良好的运作,再来解决这些问题。如果一切进行的很好,要让它们保持运作就比一开始要先修理问题,并勉强运作来得容易得多。一个在里程碑和迷你里和碑之中良好的工作分配方式,是把迷你里程碑指定成完成特定模组,而把模组的整合当铸主要的里程碑(有时候把迷你里程碑再加以分割是必要的,但是这将视您小组以及手中的工作而定)。

在良好的小组之中,迷你里程碑不一定有存在的必要。举例来说,如果小组的经验丰富到知道解决问题的最好方式,而且成熟到时时留意期限的逼近时,就没有设立的必要。不过,对新的小组或是一个全新而不熟悉的企划来说,迷你里程碑就可以做为二种用途:

  

*让小组专注于他们手中的工作。

*在重要的时间,提供大家已经增加的企划可见度。

  

第一点中很重要的是不要把里程碑的间隔安置得太远,才能避免人员在企划中漫无目标的漂流。一个很类似的情况,是想象您手中有一份指示,叫您前往一个您从来没去过的地方,但是您对这个地区有个模糊的印象。现在有人请您沿途画出一张路线图,并在有限的时间中抵达。在您上路时,您最花时间的工作是画地图,从现在开始,您会不断的走走停停,四处看看您的前进方向。

在这个例子中,里程碑就是您走走停停的动作,而企划就是地图。您走走仿停停的次数越频繁,您在地图上面走错路的可能性就越低。很明显的,这个方式正是[报酬递减法则]:如果您每走二步就停下来,不只会花更久的时间到达,而且您无法专注于绘制地图。如何找出这方面的平衡就是关键,这个里程碑不应该如此频繁,导致有效的工作进行受到损失;但是也不能一次冲刺得太远,然后看到整个企划迷失方向。

一个良好的定则是把迷你里程碑的数量,以小组对这个主题的经验高低来调整;而这个迷你里程碑少要保持在一或二天。任何比这个数值更小的时段,将需要更频繁的管理,而且在可见度方面会让坏处多于益处。

  

何时要使用里程碑

在一般的情况下,每一个程式或模组都是一个独立的企划;而且对大部份的程式而言,这都该被视为本质相同,而且提供相关规格与说明文件。是什么东西导致程式琐碎并没有定论,但是在这边的建议,是只有在您能够断言没有其他用途之下,才考虑写一个要丢弃的程式(即原型程式),这可以减少程式琐碎化的机率。如果您用这个程式继续研发下去,只会产生一个荒废谬的庞大企划。

一个可以做为例子,并符合上述标准的程式,是那些生产出对照表的程式。它会产生出预先计算的数值档案,以减少执行时所需的计算(在处理器越来越快的现在,对照表已经不再受到青睐,但是它们在速度有限的系统上面仍然十分有用)。要研发这一类的产生方式,将包括撰写常式分析器,可以读取使用者定义的公式来产生表格。在这个特定的状况下,很明显的要比把计算公式写死在程式中的好。

  

让您的里程碑正确

为了增加时程表的正确性,我们需要尽可能的把不确定的东西移除掉。这并不表示您可以移除所有的东西,但是只要您能把不确定的数字降到最低,就等于避开了里程碑的模糊性。

在案例研究12.1中,问题源自于一个共通性的误解,以及对正确的需求缺乏深度的说明。之所以没有附上说明用文件的原因,是因为在这个问题领域中没有进行相关的研究。在给予了严格的期限后,很明显的并没有提供任何相关需求与想法。老板只是假设他想要的知识会[自动]的从他的脑袋传到我的脑袋中。在混合了这样的想法后,他假定其他的组员可以在数分钟之内,把他们所需的东西说得一清二楚。

这实在一点道理也没有,但是您会很惊讶而且吓一跳的,是有好几个企划的确就是以这样的基础来进行。大量的金钱都花在这种预期上,而不把所有可能影响到企划进度的要素列入计算之中。在一些案例中,期限的设定基础是由市场部门要求的,这可能只有最没品质的小组才能同意这样的要求。

发行日期很显然是源自市场方面的压力,但它绝对不应该成为时程主题的决定要素。尝试让小组去尊重市场部门设定的期限是不可能的,尤其是当这些期限设定在独断而不合理的前提之下,再加上完全不把研发方面的技术要素考虑在内。如果出现了一个市场决定的期限(象声名狼藉的圣诞佳节大冲突),那就得把功能加以调整,才能让企划符合规定的期限。这个减少的功能必须在各方面都十分的清楚,碰上这一类情况最有效的回答,就是要求修整时程表的时间,但是要完成的工作量还是一样(这边的假定是,反正所有的研发人员都在时程表上面填了一些空间,来让他们的生活轻松点。这是很荒唐的事,但如果您屈服在这种假定之下,您就是在自找麻烦)。在处理所需的工作量上面,这个时程表一定要经过最佳化并极为清楚。如果这个工作必须在短时间完成,那就非得砍掉一些功能不可。我已经看过太多的状况,是企划领导者同意这样的状况,并假定他们可以在12个月中完成18个月的工作。不得不承认的是,只要足够的超量工作,这并不是不可能的。尝试让一个研发小组在紧密而且加班情况下工作12个月,处理上吨的工作并非容易的事(而且绝对不建议这样做)。这会伤害原本高昂的士气,而且这个企划结束之后,失去您所有技能高超的研发人员,也不是什么怪事。

在案例研究12.1中的程式期限很明确,但是对这种正式的工作而言太短了。在这个企划中光是收集资讯至少就要一个星期,而且如果先收集到足够的资料,就可以预测出这个企划需要再花六个星期来撰写。当然了,就算这个预测是靠着其他组员在这段期间的工作量来判定,您还是要把撰写说明文件的时间,以及说明这个编辑器中所需的功能考虑在内。这件事可能会得到老板的同意(或是拒绝),但至少这个结果可以让他采取其他的选择,象是指派更多的人加入这个企划、降低要求、延展时程表、给这个企划一些在相关领域中经验丰富的人,或是把您开除掉!

在您想要规划并为整个企划安排时程表之前,您有些动作是一定要先完成的。一个企划的前三个里程碑(如表12.1所示)一定要实行,这可以让您更详细而且更精确的分析出接下来的每个月,时间要如何运用。

  

表12.1 前三个里程碑

里程碑
查核点
工作

1
1.0
一般性必备物资收集

  
1.1
技术性必备物资收集

  
1.2
资源上必备物资收集

2
2.0
一般可行性研究

  
2.1
技术可行性研究

  
2.2
资源可用性研究

3
3.0
结构规格草案

  
3.1
企划开始


  

这些里程碑有效的包括早期规划以及可行性的研究。这些阶段的花费,是企划总成本中最小的一部份,而且它有助于提供良好的资讯,计算出整个企划的总成本、时间以及技术上的可行性。在第一个里程碑之后的每一步,都让做决策的人有一个很好的地位取消整个企划,或是让它朝下一个里程碑继续前进。在那三个里程碑完成时表示企划可以开始运行,那企划就应该可以朝完成的方向迈进(除非它掉入汪洋大海)。如果通过了可行性的研究再把企划取消掉,那应该视为可行性研发过程的失败,并进一步的调查。

一个企划的初始调查阶段的实行优点十分明显,毕竟接下来是为期15个月的研发过程,在所有人的身上投入大量的金钱与努力,并假定每个人都可以把这个企划完成(这个情况有没有让你们听到擂台上的钟敲响了?)取消一个企划对士气的影响,将会随着企划进行的时间而不断的增大。不过,如果组员有进行过可行性的研究来查看技术与可玩性方面的需求,那这个伤害就可以降到最低:每个人都可以了解他们做的是一个企划的研究,看看它是否值得尝试。如果最后的结果是可行,则所有人都会受到鼓舞。不过,如果所有人都做了各方面的可行性查核,但最后还是有机会被取消时,效果就没有那么好了。

人们的天性是在舒适安全的位置上时,工作表现会更好。当然了,一个企划早夭的风险还是无法全面消除,但是它至少可以藉由在进行时,早点解决任何主要的问题把可能性降到最低,而且要在大量的金钱与人力投注到这个企划前完成。否则,您不只会失去您的金钱与时间,您还会失去人们对您的尊重。

  

案例研究12.2 取消企划的代价

为了保护无辜与那些不见得如此无辜的人们,下列的人名、公司与产品都已经全面改写。

在一个与热门《Cryptlnvader》系列发行公司,也是Y公司的总裁??司诺先生的会面中,他声称Y公司最近大约中止了十个企划案,这些都是在做了六个月之后 ,结果无法达到预期的东西,而这些企划案已经进行各种不同阶段的研发,而且都在上面砸了不少钱。

司诺先生说,这样的作法是为了保证他们推出的软体都具有高度的水准,听起来很有商场上的味道。据司诺先生表示,这些企划取消的费用(包括《Fatal prison ll》),每一个企划都将近在¥160000到¥720000之间,对他而言这并不算是大问题。有些人可能会说,如果您有手中这么多Y公司到处投注的钱财,那您也看不到什么东西叫做问题。不过,如果您考虑到这笔钱可能全部用在资助四个其他的企划(如果早期的原型阶段执行的很好),那这就是完全不同的光景。这种努力的浪费不只在金钱上面很可观,而且它也不利于研发小组的士气(可能有上百人)。

  

在案例研究12.2中,企划案中止于不同的研发时程。幸运的是,其中有些仍然在原型的阶段,所以不会花太多钱;就算如此,¥150000美元花在一系列的原型上面,仍然是一大笔金钱。在现实中,我在一个原型上面的金额不会超过¥75000,这只是看您如何定义(原型)这个字。在这些案例中,[原型]并不真的是指传统的字面意义,而是完整研发游戏的部份研发版本。在大部份的状况下,这个游戏将会以普通的方式开始研发,而且在主要的研发中,分离的原型并没有什么效果(的确如此)。在这些例子中,原型的程式码是真正游戏所用的程式码。

不过,一个[原型]的意义是这样的:快速而可丢弃。这是一个测试点子与概念的动作,所以不要与科技研发搞混了。原型阶段的用意在于研究出游戏概念的可行性。在这个阶段的结尾,需要的科技应该已经完工(或是找到可以取代的方式)。这并不象它听起来那么限制良多,因为这些元件将会在标准的介面中研发,如果(或是有时)一个新的科技在真正的企划过程中研发完成,这个新的元件也可以在后期把它插入正确的位置。

这个原型甚至不需要以编译式语言来撰写。通常一系列连续的原型??从纸笔进展到高等级、快速研发的语言(象是培基语言)??都足以测试这个粗糙的概念。不管怎么说,它是一个原型,又不是完成的产品,而且如果它与最后的产品是用不同的语言来撰写,那就可以断绝将[原型]当做[完成产品]的所有可能。

把原型的程式码放入正式产品等于在调制一场灾难,因为通常在定义上面,一个原型并不具有[产品等级程式码](译注:真正成品所用的程式码,以下称为[产品程式码])的特性。这不只是程式码写得很草率,还包括了写原型时编写程式码的优先程度。举例来说,游戏执行速度并不是在原型程式码中的第一条件,但是在一些产品程式码中却是最优先的事项。不要低估把原型程式码放入完整产品的诱惑,那种节省时间的期望相当于一个危险的陷阱,通常导致的结果是显著的时间延迟以及后期产生的大量问题。所以,把原型的程式码用在产品程式码是一个不值得尝试的举动,这不但是一个不可能完成的工作,而且甚至有可能阻碍原型的研发。

在表12.1中的里程碑时程表试图包括上述的所有要点,并包括企划的初始阶段,一直上溯到可行性的研究。

下列的部份,包括了这些初始里程碑的详细说明。

  

查核点1.0 一般性必须物资的收集

这个查核点中应该回复下列的问题:

  

企划是什么?

很明显的,它是一个游戏,游戏的元件,或是一个有助于游戏生产的工作。但是哪一类的游戏?目标的客层是什么?为什么会让他们满足?游戏的什么地方、以及这个游戏如何与公司的远景契合。这些问题的答案,有助于集中这个企划的焦点。

什么样的游戏要写出什么东西,应该不会有什么问题。举例来说,应该探索游戏的外观及感觉,还有在一般层级中,所有其他足以影响游戏的主题和考量。我个人很讨厌使用[任务说明]这个字眼,但如果我写的任何企划包括了这个字,那这就是需要定义的地方。

  

[顾客]期待的是什么样的功能?

在这个案例中,顾客可以定义成好几个不同的层级。第一种顾客是公司的管理部门,第二种是发行公司,第三种是媒体,而最后(希望不是最少的)一种是购买的大众。

每一个群组的顾客必须特别迎合他们的需求,而且很麻烦的是,他们的需求与想要的东西都不见得相同。每一边都可以证明他们具有同等的重要性,所以要让所有人高兴就很难平衡。举例来说,管理部门与发行公司可能要示一个正式的展示,以及间歇性的推出先睹为快或是展示。媒体会需要游戏的远景,而且购买大众要的是完成的产品!这些需求都要先行预期,并放入您的时程表中(至少最后一个少不了)。

  

需要的最小功能是什么?

很让人惊讶的是,最小的功能正是最重要的考量。虽然我不想去研究这种灰暗的想法,但是研发时还是要了解它;如同真爱一样,从来不会象预期般平顺。从企划的最早阶段,就必须定义数个功能上的阶段(这些将在第14章中介绍,并在第三部做进一步的讨论)。

最低的功能阶段定义了最小的需求:也就是软体已经[有足够的完成度]然后可以发行到市面。在这个时候的游戏可能不会特别好,但至少它的核心可以运作。达到这一点是时程表的主要目标,一旦这一点成功的抵达之后,进一步的功能就可以一阶段一阶段的逐步加入,直到理想中的功能出现,然后产品才能发行。当然了,如果企划碰上了任何延误,它可能需要的是在所有想要功能加入之前把游戏推出去。在这种情况下,您会很高兴您采用的是阶段性的方式。

在这个阶段中,您得收集所有与企划相关的必备物资,这可以让您在整个企划中,成为一般性的指导方针。

这个阶段必备的是游戏提案文件,如果第一部所定义的一样。它的要旨是一份小小的文件,描述了游戏给人的主要感觉,以及它背后的所有点子。

从这个初始的提案,您可以研发游戏设计文件,如同在第一部所示。一旦游戏设计全面规格化(80/20规则的发展主题!)那它已经提供了足够的力量,可以进入下一个阶段。

  

查核点1.1 技术性必须物资的收集

这个查核点中必须回应下列的问题:

  

需要的是什么技术与过程?

最理想的状况,是在您拥有所有元件的情况下进行研发。接下来这个问题就比较容易回答了,如果您没有需要的元件,他们是不是可以在一定的时间中轻易完成,还是需要进行研究,才能把定义出来的功能写好?

如果需要研究的话,那这个企划就不能跳过原型的阶段。很重要的一件事是,必须把它一直延期直到研究完成为止;只要您打破这个规则,您就在承受一个不能接受的风险。记住这个研发过程中的物件,已经尽其可能的把风险降低。不依靠研究而硬性认为可以在固定时间写好,相当于损坏所有已经在进行的方式。千万别做。

如果您确定要研发的技术是可行的(您现在有了应变之道),那您可能想要继续研发出一个原型。一个应变的例子是,在您想要运用所有硬体支援的3D画面之前,先写好一个以软体运算的3D程式。就算硬体支援失败了,您还是可以运用软体引擎,虽然有点麻烦,但至少不会让失败成定局。不过,您应该小心的步步为营。

  

查核点1.2 资源上必须物资的收集

这个查核点中必须回应下列的问题:

  

企划中所需的资源是什么?

针对这个企划,准备一个您目前尚缺的所有软体以及文献列表。

在这方面不要太热衷;否则您可能连厨房的流理台都列了出来。相反的,理性一点。您的预算可能很有限,而且根据墨菲定律,只要您用掉了您手中的预算,就会推出一个主要的软体,而您一定买不起。

====================未完!请继续看下去!=================
  [em17] [em17] [em17]

79

主题

288

帖子

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2004-3-8 17:19:00 | 显示全部楼层

Re: 电脑游戏结构与设计——第十二章


以下是一些建议的东西(以及例子):

*编辑器(微软Visual C++)

*自动侦测错误的软体(Numega BoundsChecker)

*侧写程式(Numega TrueTime)

*资源控制软体(微软Visual SourceSafe)

*时程管理软体(微软Developer)

*文书处理软体(微软Word)

*3D模组建构程式(Kinetix 3DS Max)

*2D绘图软体(Adobe Photoshop)

*格式翻译软体(Okino Polytrans)

  

(这个列表中的东西,只是以我最熟悉的软体来进行建议,也是目前的研发公司最常使用的东西。这些软体中有些可能很贵,尤其是在预算有限的状况下。幸好仍有其他的选择,而且在本书附上的光碟中,也提供了一系列的免费或是共享软体,或是您可以在哪边搜寻的建议。您可以在附录B找到与软体相关的详细内容。)

  

血腥的尖端科技

您想要一些有用的建议,或是从痛苦中学到的一点点经验吗?那就是绝对不要用最新版的软体,直到它已经推出一段时间为止。如果您在一个企划半途转换版本,它也会造成延期。另外,如果事情进行的不顺利,把软体版本[倒转]回去将是一个很花时间而且很昂贵的工作。他们叫做[血腥的尖端科技],自然有其道理。

  

查核点2.0 一般可行性研究

这个查核点中必须回应下列的问题:

  

这是一个有价值的企划?

您应该开始探讨游戏性与故事,并把它打磨光亮。很明显的,这并不会马上定案,而是倾向在研发过程不断的调整与变革;这是把旧点子挥去,并加入新发现、好点子的时刻。

在这边要提出一个警告:小心特色四处蔓延。很多游戏之所以延期或是取消,是因为低估了加入的特色。特色的潜行,以及它的预防方式,将在第三部中讨论。

  

这个市场准备接受这个游戏了吗?

这个游戏是否适合目前的市场?这并不表示游戏应该毫无新意,只是模仿市面上已经有的游戏(如果真的这样,那您就要重新考虑这个企划。有太多的公司生产出没有新意而且毫无生机的游戏,用不着您再加上一笔。回到第一步,直到您有更具启发性的点子!)

好,假定您还在这边,那您的游戏设计也通过第一道酸碱测试。下一个问题,是这个游戏设计到底是个全新的类型,还是目前类型的延伸。如果是一个全新的游戏,那我会建议您研究一下市场是否能够接受它。在刚开始时,试着询问一群中立、对游戏设计有不少批评的人们。问问他们这种游戏会不会想玩,并询问他们喜欢与不喜欢的部份。这边最重要的是得到诚实(虽然一向都很唐突)的答案,然后排除掉家庭、朋友与同事的意见。一个最常见的建议是,设计一个您会想玩的游戏;这本身并没有什么问题,但是您冒的最大风险是把游戏做成只有您要玩的东西。当然了,您必须设计一个您也想玩的游戏,但这绝对不能成为您的指导方针。

如果游戏是以现有的游戏做延伸,那上述的建议仍然有效。除此之外,试着去定义您的游戏如何加强这个类型。一个最传统的范例是Valve的《战??笨铡罚?桓龅谝蝗顺粕浠饔蜗罚?且浴独咨裰?m2》的引擎来建构的。不过,它在1998年成为最佳游戏时,也有许多竞争者在同一时段上市(象是《原罪》与《魔域幻境》)。《战??笨铡飞魉际炻侵?螅?谡飧隼嘈椭屑由狭饲慷?辛Φ墓适隆⒌蟹讲豢伤家榈娜斯ぶ腔郏?⑹?中⌒牡慕ㄔ煊蜗分械幕肪场T凇墩??笨铡分校?ǔC扛雒媲暗奈侍舛加卸?纸饩龇绞剑耗?梢杂们看蟮幕鹆?浣?ィ?蜒矍盎岫?亩?魍惩成惫猓换蚴悄?梢韵胂胂乱徊皆趺醋觥U馐且桓黾?延蜗沸缘牡浞叮ú还??飧鋈萌怂伎嫉脑?卦诮咏?蜗肺采?彼坪踉嚼丛叫。???乜康氖歉??焖俚姆从τ氪罅康牡???

当您考虑到推出一个既有的类型时,试着在现有的内容中加强,而不是遵循传统的[更多的武器、更多的敌人、更多的爆炸]途径。举个如何不去扩张既有类型的例子,看看即时战争的类型。在1998年12月,已经出现了停滞的现象,只有一些明珠(象是Blizzard的《星海争霸》)可以在这堆垃圾中增加一些新的东西。

运用您的想象力,试着开拓每一个可行性,来收集设计的点子与意见。一般可行性的研究是在一场研发过场中的最后重点,而重新建造主要的游戏设计,可以在便宜而有效率的情况下完成,所以在这方面要全力以赴。如果一个想法成不了气候,不要害怕丢掉一个研发内容中的争执。这可能会因为参与的人员与内部政策而更加的困难,但是最好在这个阶段承认个人的失败,而不要推出一个差劲的游戏,然后伤害到公司的形象(这会在大多面前承认您的失败,包括您让一个失败的游戏设计成为漏网之鱼)。

查核点2.1 技术可行性研究

  这个查核点中必须回应下列的问题:

什么是效率方面的需求?

一般顾客的电脑设定与等级,是否该纳入游戏可行的技术需求范围?

游戏研发者的运气很好。他们通常使用最好的装备、最快的机器,以及最新的硬体;在这样的硬体上面,游戏跑得象在飞一样。而一般的使用者,当然了,就没有这么好运了,而且他们通常用的是普通的机器。研究显示出顾客大约每隔一年就会买一台新的电脑(这通常是因为领先的游戏,一向需要最新而且最好的硬体)。您的一般顾客可能会在二到三年的期间换一点PC,同时提升各方面的性能。这本书在我的许多电脑上面撰写,其中一台二年之久的Pentium 200 MHz MMX,我还觉得很好用。我觉得没必须升级到Pentium ll这种怪物级的电脑,在成为不可或缺的设备前,大部份的普通使用者也没有这个必要(译注:本书出版日期是1998年,以现在的电脑水准而言,想买台Pentium ll只有到古董去找了)。

当您选定了基础等级的机器后,您应该估算的是二到三年以后的技术,并用此来推算未来这个基础等级的主机成长到什么程度。如果您指的是更高等的基本配备,那您应该有一个很好的理由(举例来说,您是ID Software,正准备推出Trinity程式引擎),或是接受销售上面可能出现的损失。只有最尖端的游戏才能将基本的设定向前推到另一个新的标准。一般来说,在常见的研发时程(18个月)之后,今天尖端的机器可能只是产品发行时,只能称为中上等级的电脑。

  

查核点2.2 资源可用性研究

查核点1.2定义了企划所需的软体以及书藉。而查核点2.2的目标是合并早期几个查核点的结果,并选择企划群组中的初始人员(如同第11章中定义的)。如果可能的情况下,企划群组应该选择的人员,尽量以该企划内容范围技术最好的人为主。这个小组的大小视企划而定。一个小型企划中用二到三人的规模十分合适,但是更大的企划就需要更大的群组。虽然这一点似乎很明显,但要指派一个企划中的人员,一向比它外表看起来复杂得多:一个群组人数太多,您冒的就是效率不彰并有额外费用的危险:人数太少则冒的风险是小组人员工作过量,并会造成延误。主要的观念就是第一次就把状况平衡过来。在后期再来变更这一点,通常会更为困难,而且要花的钱也更可观(在第21章会更详细的讨论这一点)。

在查核点1.1中将会决定进行企划之前是否要先进行研究工作,然后这个时刻也是决定您要不要开始研发这个企划的相关内容。如果答案是否定,这就是这个企划的结束。难以下咽吗?您可以看看好的一面:很可能现在要做这个企划早了一点(您至少要等全相萤幕出现在市面上并人手一台,才能做一个用全相萤幕来玩的游戏吧?)所以它可能在往后才有一鸣惊人的时刻。不过,请记住这个游戏应该还是以游戏性为主,而不是以科技为优先。不然我们不会叫它为游戏。

如果最后决定要进行研究的话,那这个企划将衍生出更多的研究企划。查核点3.0与3.1(后述)仍然可以进行,但是从这边开始,我们就得等候企划研究的成果(这些已经在第11章中讨论过,本书后面会再提及)。

  

查核点3.0 结构规格草案

第一件要了解的事,就是结构是一个不断演进的怪物。除了一些研发产业中的人员持续的主张以外,在一个企划开始进行之前,把整个结构全部定出来是很重要的一件事。我们的老朋友??80/20规则,又再度昂首了。

在合理的预期之下,我们顶多只能在一个企划开始时,完成大约80%的结构;而这个结果可能会让大部份游戏产业的研发者大吃一惊。虽然在游戏产业以外比较容易看到一个企划定义到这种程度,但这些都是会成功的企划,而且很受欢迎。一旦结构的完成度觉得将近有80%,企划就可以开始了。剩下的20%会在企划过程中完成(剩下的20%通常包括了无法先行处理的东西,这部份在第三部将会进一步的说明)。

  

查核点3.1 企划开始

这个完成度80%的结构,已经足以安排初步的行程表了。工作将分为逻辑模组,并以合适的方法分给所有的群组。这个模组将会在小组之间打碎,成为更进一步的时程表。这个次级的时程表会再分散成一系列的独立工作,然后指派给独立的成员。

研发是一组复杂的独立工作,需要进行组织化才能缩短关键路径的问题。这些工作的分析以及企划管理时间相互依赖的主要部份,将影响到整个研发过程。与结构一样,时程表也会在研发过程中不断的更新(这可能包括调整每个人的时程表,并在组员之间交换个人的工作)。重点是不断持续的追踪过程,将会在企划中不断的进行;而不是在碰上问题时才来追踪。如同我们将在第14章解释的一样,解决疑难杂症的最佳方式是靠主动,而不是预防。

研发过程在这个阶段犯下的经常性错误,是把行程表当做刻在石头上的东西;而且这个概念在游戏产业中占了大多数。如果您好好思考一下这个问题,您就会了角这有多荒谬:怎么会有任何人可以预测接下来的18个月时间中,每一个人的工作内容?通常只有在紧急的情况下才会变更时程表:在整个企划陷入危机时的主要调整,也是[太少,太晚]的例子。

如同在导引一艘船一样,您可以在航行中不断的变更微小的角度,以更好的方式来导引这艘船,而不是靠近目标再做一次大调整。

  

下一步

在这个阶段,企划已经准备起跑了,所以您需要考虑下一步该怎么走。

下一个部份解释了如何在企划的剩下时间中,定义出里程碑与查核点。

  

定义里程碑

一个常见的游戏企划可以分割成数个不同的子企划,这每一个子企划将会逐步具有[企划间从属关系(interproject dependencies)]与(更精细的)[企划内从属关系(intraproject dependencies)]

对企划常见的错误是把它们想成等大同尺寸的东西,然后假定里程碑亦是如此:一个二次空间的列表,可以让您在里程碑A到里程碑B之间,把您目前的进展画出来,依此类推。您应该要了解的是,这个列表事实上是碎裂在多次元的网状从属关系中。当这个网折叠成一个直线的列表时,您就失去了所有从属关系方面的资讯,而且在所有的从属关系中,只有最后的结果还看得到。这会降低整体的弹性,所以能让这些复杂的从属关系处于可见的状态,而且不断的更新内容才是好的办法。

试着从少数列出来的里程碑,来看清这个复杂的网状资讯,可以比喻成尝试从一个投射出来的影子,来创造一个复杂的三度空间物件。在影子中已经失去了一些原物件的幅员;结果过程中将失去重要的资讯。所以您可以看得出来,在进行安置里程碑的工作时,取得企划从属关系的资讯是极为重要的一环。

第一步是发现并定义出这些从属关系,来为每一个子企划创造出里程碑的时程表。在这个方式下,一个多层阶级性结构的企划图表,可以从此研发出来。记住,一个企划是一个庞大而复杂的问题,而且处理这种问题最明显的方式,就是把它打散成数个较小??而且比较简单的问题。画出一个阶级性的企划(并包括子企划以及他们的相对元件)有助于您得到一个较好的整体画面,是您和您的小组可以参考的。

在图12.4中显示出一个我使用的全面阶层性图表。您可以轻易的自定这个表格,用于其他的结构上,但它基本上是用来快速了解一个企划在阶层结构中的位置以及状况。在公司的内部网站中放置一个这样的表格,如同第11章所说明 的一样,也可以在每部份的相关元件上面加上超链结。由于它是一个阶层性的图表,它也连结到较大的阶层,象是连接公司中所有企划后,有助于定义出未来研发的策略。在取得从属关系并创造出阶层性的图表后,您手中的知识可以轻易的看到整体的画面(指公司远景),然后决定如何取得已有的资源,并减少不必要的努力。

主管在这个图表公诸于大众后,得到的好处是有效的消除掉公司之间沟通的障碍。每一个小组中的任一位员工,都可以明确的知道其他小组人员在做什么事。这些资讯拥有高度的扩展能力,如果必要,可以再钻研得深一点,让整个企划的所有进展可以让所有人轻易看到。

在图12.5中,显示出《Balls!》企划的阶层性图表。

您现在知道庞大的企划需要打碎成里程碑。这通常在明确定义出功能之后变得十分困难,但是避免让里程碑成为鼓励大家走近路的诱因是十分重要的。相反的,里程碑应该定义在结构点的附近,才能让这些解决方案保持了结构上的完整。

要更了解什么原因造成了良好的里程碑,我们应该注意一个什么会造成差劲的里程碑。

  

差劲的里程碑

无法提供企划进展任何相关资讯的,就是差劲里程碑。这些里程碑可以用模糊来形容,也可以是指定了表面的层级,但什么内容都没提到。

  

徒具表面性的里程碑范例包括:

*写一个Visual Basic关卡编辑器来设计世界。

*将图象引擎转换为32位元。

*将二个图象系统整合,所以我们可以同时在画面上看到二者的存在。

*做一个可玩的关卡并执行看看。

*做好了五个可玩的关卡。

*进入最初的测试阶段。

  

这边列出的里程碑是出现在现实生活,从不同企划中取材的里程碑。有些一看就知道很差劲,但其他并不太明显。我会一个个拿出来解释,并说明其中的优点、缺点,以及这些里程碑应该如何指定。

  

[写一个Visual Basic关卡编辑器来设计世界…]

这个里程碑(与案例研究12.1中所示的一样)是为了一个飞行射击游戏所设,要求提供碎型几何产生的地形。这个里程碑太过于普遍;它并没有提供足够的资讯。这个普及的里程碑应该改成下面这样的东西:对Visual Basic的关卡编辑器,实行初步的物质收集以及可行性研究,来决定它是否符合我们游戏的世界设计。

从这个地方开始,一个行程表以及一组以结构为基础的未来里程碑,就可以逐步完成。

  

[将图象引擎转换为32位元…]

这一项真的是表中比较好的里程碑。完整的说明是要把所有的16位元的C语言与组合语言的模式,从16位元的结构进化,才能利用32位元处理器的全部优势。这没有什么大问题,事实上,它十分的清楚而简明。

不过,这个问题是涵盖了太大的工作区域,而且没有指明转换码的等级在那边。举例来说,16位元的程式码只要简单透过转址层的运用,就可以从32位元的程式码来呼叫16位元的功能,并控制所有需要的转换过程,这也是一种[转换]。另外,这个里程碑也可能代表从头开始撰写所有的程式码,让整个引擎都在32位元的架构下。所以我们有二种解决方案,每一种都有它的优点与缺点。利用转址层的好处在于可以快速而直接的实施,坏处在于额外而全面性的Layer是每一个功能呼叫都需要用它来转换变数与回傅值,而且事实上这些程式码仍然不是全面的32位元(所以很多可能使用慢速的记忆管理呼叫,在16位元的限制下面动作)。

第二个方法的优点在于,只要能达到这个目标,所有的效能都会提升。主要的缺点在于这种转换工作通常要花量的时间。

这个里程碑应该以不同的转换来做为说明。事实上,也有另一个可能是不要把所有的程式码统统加以转换(举例来说,只有最耗时的程式码才有转换的必要,而其他的程式码??象是载取资料的程式码??大可运用转址层的方式)。

这个里程碑应该分成数个较小的里程碑,以各个不同的模组来完成这个工作。这样做可以让您对于如何进行转换工作做出更合理的决定,而且也可以彻底的增加进展的可见度。在现实中,这个里程碑从雷达上面直接消失了将近四个月之久,才又被人找出来进行。这很明显是一个难以接受的风险,所以才会有查核点的设计来解决这方面的问题。不过,在这个案例中我们的运气很好。程式设计师在这方面的能力足以胜任,而且对引擎的了解极为透彻。不过,这种对单一组员的依赖,是一件很糟糕的事情(如同第11章所示)。

  

[将二个图象系统整合,所以我们可以同时在画面上看到二者的存在…]

这个问题与上二个十分类似:并没有提供足够的的资记讯。不过,这个里程碑中包括了二个复杂模组的原始码整合(表示在二个引擎之间有标准化之后的资讯在流通),所以必须先定义出二者之间的界面。这个里程碑以自己的角度描述了整个企划,而不是一个庞大企划的一部份工作。

想想您要执行这个工作时,要做什么样的步骤。首先,您必须分析出每一个引擎输出的资讯,才能让二个引擎同时作用。哪个引擎是主要的?要把其中一个当做另一个的次程式吗?他们之间要如何互动?他们要共享萤幕的暂存区吗?什么样的变更,才能让引擎使用萤幕暂存区?如果在另一个模组中使用,会产生什么样的冲突?这在未来与其他模组整合时,又会有什么样的影响?

利用这个章节中的指导方针,您已经能够想象如何列出里程碑和查核点。藉由把问题分解成原子的厚度,我们可以增加可见度与企划进展正确性的指标。这个点子是以足够的问号去攻击现有的问题,让软体规划师的意图清晰可见。

  

[做一个可玩的关卡并执行看看…]

这实在太模糊,事实上完全没有用。究竟什么东西叫做[可玩的关卡?]

我甚至无法想象这个里程碑有什么用处。这并不是以任何技术或结构为基础的查核点;它反而象是一个用肉眼来查看的图表进度,象是一台自动机械,以精密的观察车身来检查您的车子。要真的知道里面的东西如何运作,他需要打开车壳,看看引擎的运转才对。

象这样的里程碑就会鼓励人们走近路,以取得可见的结果。需要肉眼来查看的里程碑(象这个例子)就是一个倾向挖墙角的作风。还有,您又如何预测这样的一个里程碑,要花多少时间来完成?

这方面的明显解答,是完全不要使用这一类的里程碑。让视觉效果做为一个里程碑的结果,并不是里程碑的作用。

从这个例子中,可以得知的结果是:里程碑是以结构为目标。完成里程碑的复合效果,将是一个可玩的关卡。

  

在这种情况下,下列的里程碑可能随着这一点而达成:

*如果完成了关卡编辑的软体,开始载入并转换关卡的档案,成为内部的资料格式(包括所有待续的参考物件资料档载入,以及任何未知物件的控制)。

*以载入的资料档案,正确显示出关卡,包括任何未知物件的控制。

*完成以摇?U或是键盘来进行的使用者界面控制,包括以设计文件与基本玩者控制的简单选单,其中包括了结构文件中的物理系统。

  

这当然不见得每一个都要达到,但是它应该可以给您一些粗糙的点子,让您知道创造一个里程碑时,二者间的不同之处。

  

[做好五个可玩的关卡…]

这个里程碑是沿着上一个而来。这个点子是要确保软体可以载入一般定义的关卡(而不是锁死在上一个里程碑的单一测试关卡中)。

不幸的是,结果是比前一个里程碑,包括了一般假设情况下更多的硬性规定;主要是因为程式设计师可以看到他们必须在有限的时间中,把他们与下一个里程碑之间的东西清掉。所以他们会运用他们眼中的所有捷径,来冲向原来的里程碑。不用说,这样做以后有许多程式码得重写,而这些程式明明在第一次就可以写好。

这个里程碑应该是结合之前的目标,然后以技术上的目标分成数个较小的查核点,让最后的结果可以载入游戏的关卡。

  

[进入最初的测试阶段…]

这个里程碑讲的不够详细。什么叫做[最初的测试阶段]?我们如何在进行整企划、标准的研发与整合测试中,分辨[最初测试阶段]?

在这个阶段我会把[最初测试阶段]定义成所有的元件都处于[界面完成](所有在这个企划中使用的模组,都完成了界面的设计)。这不只是个明确的进展,而且至少所有的元件都可以进行编辑,不会出现链结错误的状况。很明显的,在这个阶段中有特定等级的功能列表,但是??看到研发以一个方式不断的进展,如同本书所述一样??它也很可能会有一个很有用的核心功能。

  

为何这些里程碑有瑕疵

这些范例中举出的里程碑,最基础的问题在于它们的模糊性。大部份都没有清楚的指明,而且它们可以用许多不同的方式来达成。捷径可以采用、所以在企划附近会不断的繁殖错误与误解,并越来越庞大。

如同之前声明一样,这些范例中的里程碑用来当做企划的导航点并不会有问题,但是它们留下了大量有待详细说明、又可以完成的里程碑。它们需要分散成几个较小的里程碑,每一个都只有二进位基准:开启与关闭。

下一个部份包括了如何定义出较好里程碑的方法。

  

良好里程碑

在看过差劲的里程碑之后,我们现在把注意力转向如何让里程碑变好。很多这方面的成果,可以靠之前讨论的差劲里程碑加以推演(如果不是坏的,就一定是好的)来获得,所以我们只要把良好里程碑做一个总结就行了。

一般来说,一个良好里程碑不会留下产生怀疑的空间。它会很清楚、合理、以技术与结构的角度来说明,而且它是二进制:要不是全面完成,就是全面未完成。

良好里程碑应该详细的进行说明。每一个应该说明的极具深度,尤其是目前进展的是企划的哪一个部份。预测不应该以充满期望的想法为基础(很严酷),真正的研发时间上的预期是以经验为底子,而不是市场上的需求。要在圣诞节之前生出一些东西并不重要,您无法变更物理定律,而且您也无法变更写出良好、严密程式码所无原则的时间。不过,您可以试着进行预测并排好时程。这样做要比在程式码硬冲或是设定独断期限的赌局,来得更容易成功。

良好的预测是从创造一份阶层时的图示,来追踪整个企划以及它所有从属东西开始,然后从头到尾去追踪一条平面的路线,将路上相互影响所造成的延迟最小化。良好里程碑中必须指明技术等级,而每一个里程碑或查核点都要说明结构模组与次模组的完成阶段。这可以让里程碑更加鲜明而且定义清楚,也可以提升企划的可见度。为了正确的预测一个里程碑所需的时间,您必须把里程碑分散成数个次要工作的列表,小到您可以合理而正确的估算出完成它们所需的时间。这通常表示把工作打散之后可以在一或二天的时间完成,提供良好的次级里程碑与查核点(如果需要的话)。这是一个很需要技巧的过程,当您在预估的过程中获得经验之后,您就会发现它成为较容易分散的里程碑,并可以让您做出精确的预估。

一个良好里程碑可以强化企划的可见度,而且在完成之后,可以让一个人拥有完成这种工作的微妙感觉。

  

案例研究12.3 一个真实的里程碑

《Balls!》是一个为本书撰写的展示用企划,主要是用来证明本书所有的研发方式与概念确实可行。

这个案例研究是检视企划中使用的一组真实里程碑,并详述它是如何分割为查核点。它本身会展示出如何实行技术上的里程碑。

里程碑:

概要:实行一个物件层级的Z暂存区,藉由减少不必要的画面贴图,来增加画面的更新速度。

备忘录:在朝这个里程碑迈进时,要容许退回标准的绘图运算法则,并考虑目前用来环绕所有Z-暂存区程式码的假定编译指令。当这此些指令都完成定义之后,Z-暂存区的程式码会启用,否则这个程式码会采用以前的方式来运作。

查核点1.0.采用标准的测试层级并启动计时的程式码,以计算每一个画面的绘制速度(0.5天)

查核点2.0.将物件分类成数量最少的组别。每一组应该包括这些物件,在平面画面的座标一样的时候,全面重绘其他的东西。旗标将成为这个规则的例外(举例来说,不应该让透明物件背后的东西看不到)。为每一组物件提供分别的Z-暂存区(1天)

查核点3.0.对每一个有效的种类进行Z-暂存区个体(Member)的[查核]与[设定]。每一个游戏物件必须拥有这个个体,所以在实行时可以将它们看为画面物件资料库中的纯粹真实个体。提供一个标准的运作,把一个点带入特定物件组的Z-暂存区中,设定一个阶层越高越好的参数,并在必要的时候让这个特殊的案例失效(象是透明的物体)(1天)

查核点4.0.在基础等级的[Prepare To Draw]与[Draw]个体中插入Z-暂存的检查与设定。在这个阶段中尽快针对失败的Z-暂存区进行测试,让不需要显示出来的物件,只要花最少的工作量。(1天)

查核点5.0.为测试关卡生产新的计时资讯,并与查核点1中的结果相比对。全面更新模组设计文件来反应这些变化,并插入新的计时资讯(1天)。

这是一份直接的里程碑与查核点副本(虽然编写得有点简单)。我已经变更了查核点1,如同它也考虑到回顾并整理这些程式码,来确保所有的说明都是最新撰写,而且所有的不良程式码统统移除(因为我有一段时间,没有参与特定模组的工作)。这边并不是我们要考虑的,但是它会让时程表再多花上一天。

在案例研究12.3中,这个特别的里程碑在结构定义之后,已经被插入了一个里程表。这是一个结构上的变更,才能在速度较慢的显示卡上面,增加系统画面更新的速度(在这个变更中,有20%的结构无法得知或是猜测)。如您所见,这并不象一般常见的企划里程碑,因为它是以结构以及常用的英文,以减少技术方面的专用术语(如果这边用了专业术语,要解释起来就容易得多)。

  

由于一个示范企划中具有高度的模组化本质,这个里程碑通常以二个星期为一次,而查核点大约是二天一次。

  

研发与期限

在这个阶段,我们偏离一下主题快速讨论一下研究里程碑,是很有价值的。

让我们先把话说清楚:研究里程碑是一种矛盾的说法。

一个期限说明的是固定的日期与时间,由一个小心而充满考量的工作之下所假设出来。从另一个角度来看,研究是一个探索未知事物的举动。要如何正确的为不知道的事情,来正确的安排时间?如果不行的话,您可以试着向您身边大部份的企划管理者解释,然后看看您会得到什么样的反应。

在这个情况下的研究,不应该与必备物资的收集搞混了。研究是一个追寻新的科技与运算法则,以实现一个点子的过程。必备物资的收集是一个靠着设计文件来找寻您所需要的东西,用来建造产品的过程。

程式设计师的主要工作,如同前一章所提示的,就是把一组详细的技术规格转换成一个程式,或是程式模组。这并不是在职位上的研发工作,而且要在期限中完成。研究与期限通常具有独立性的本质,如果在一个企划的目前阶段需要研究,那在初始的可行性研究中肯定出了一些大问题(这些可能性应该在事前就探讨过了)。所有的研究都有风险:您的风险就是没有结果。之后您在一个企划冒着研究的风险时,表示有更多无法接受的风险随之出现。简而言之,在一个企划中,避免所有不必要的研究。

  

里程碑的评定

当评定一个里程碑的时候,在完成之前要有数个人签名。至少,这些人包括发行公司、原公司以及企划管理者。正因为如此,里程碑倾向于以结果为基础,可以在视觉上展现成果的时刻。如同我们之前所讨论过的,这并不是好事。里程碑的基础如果架在视觉效果上,表示您通常会看到您想要的:一个有着美丽外观而败絮其中的程式。象是湖上的天鹅一样,它在水面上表现的流畅而优雅,但是脚掌在水下强烈的拍动。这就是里程碑在游戏产业中评定的方法(或许这可以解释一些现象,象是游戏现在把风格凌驾在内容之上)。

整个研发的生命周期是以外表的模样为基准,而不是以内在的结构。虽然这对绘图而言不错,但显然对复杂的技术工作??象是电脑程式??没有什么好处。如果这些标准用在盖桥上面,想象一下这会发生什么事:只要结构体上画好颜色之后,就马上宣布盖好了,那如果有人真的走过去,桥塌了怎么办?

对于那些评定里程碑的人而言,只有接受时程表必须以结构上的规格为基础,才能保有最大的利益。

里程碑应该尽可能以科技为主,而且它代表的是目前结构状况的整合。在游戏研发中,结构是单一最重要的本质;所以,里程碑应该是以它为基础。它可以用骨骼来比喻:它需要完整的发展,否则不管上面覆盖多美丽的组织,这个生物还是会变形(如果您看过电影的[变蝇人]一、二集,您就知道我这边讲的是什么意思。真的很不雅观)。

就算您无法在撰写里程碑时避免使用技术性的术语,也尽可能使用大家看得懂的语言。如果您很小心的撰写,就算是最没有技术能力的人,也可以了解并增加技术里程碑的好处与可见性,进而延伸到整个企划。一般来说创造者,游戏设计者,与发行公司是最重要的里程碑回顾者。不偏不倚是十分重要的,而且里程碑也应该直接从强烈的技术观点,来进行主要的评估。

要为里程碑负责的小组人员,应该以里程碑为何要完成来看待他们的案子,而内部回顾人员却是要以魔鬼代言人的举动,试着证明里程碑尚未完成。这方面要严格一点:一个没完成的里程碑,相当于被抛诸于脑后的无味东西,将在日后以最让人意想不到而且最麻烦的方式出现(未完成的里程碑适用于墨菲定律)。

组员必须全面了解,为什么一个科技里程碑,代表的不一定马上向前迈进一步,尤其是对不精通科技的人而言。小组的责任包括展示与说明里程碑,连办公室的猫都要能够了解其中的重要性,以及如何符合广大的计划。

==============第十二章完!~============================
[em21] [em21] [em21]

79

主题

288

帖子

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2004-3-9 09:44:00 | 显示全部楼层

Re: 电脑游戏结构与设计——第十二章

斑竹 设为精华帖!!! 自己顶总是觉得有点  。。。。。。。呵呵

2

主题

58

帖子

64

积分

注册会员

Rank: 2

积分
64
发表于 2004-3-9 14:46:00 | 显示全部楼层

Re: 电脑游戏结构与设计——第十二章

顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~顶~~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-9-17 03:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表