|
楼主 |
发表于 2004-3-8 18:32:00
|
显示全部楼层
Re: 电脑游戏结构与设计——第十三章
[过程]
在开始之前,我们会看看研发的概论。在每一个阶段的研发中,都需要产生出正确的状况讯息。所以,我们这边需要一套程序,也就是之前说明的东西,才能做到这一点。
图13.1 什么是一个[过程]?
在图13.1中,显示出一种目前流行的模糊研发阶段。在现实中,在数个不同的要素相互交织之下,组成的主要研发要来得复杂得多。这个图表并不打算呈现这一点,而它的要点在于指出一个讯息传递界面??所以才需要[过程]这个东西。这个章节的其他部份,将致力于讨论如何实施这些方法,让这个方式不致于成为疯子的举动。
过程通常被大部份的研发社群鄙视为一种高高在上的方法。在研发社群中的游戏撰写部份,更是受到一致的嘲笑。过程被看成全面浪费时间(Waste Of Time,WOT),并会减少真正有用的内容(Really Useful Work,RUW)的完成时间。
一个WOT的例子包括重写一个老旧的程式码,以期与新的程式码相容;重写一个结构;以及无法控制的修正与变更。
这些研发者相信过程是完全没有必要的上层。他们并不把过程可以预防的额外工作,纳入他们的考量之中。
图13.2中显示出他们怎么认为这个工作会干扰到一个标准的企划。企划的工作中只包括了撰写新程式码以及修正旧程式码(RUW),而上层有一小部份的时间,是在处理小组中的动态:会议、重复其他人的工作,以及其他的WOT。
在图13.3中,显示出这些研发者在相信一个企划中要有过程时的表现。他们相信过程可以在一对一的情况下,直接减少RUW。在每一小时的过程下,企划就会损失一小时的RUW。如果这个过程很不适合目前的企划,这是有可能的;但是如果在十分切合的情况下,这个图表中的状况一样是错的。
在图13.4中,显示出一个没有过程的企划中,真正的工作分配状况。在企划变得越来越大,而且越接近完成的时候,WOT的数量会随之增加。增加的比率视在企划中工作的员工能力,以及好运的程度。
在图13.4中显示的是一个普通的企划。WOT的数量会随着加入企划研发者的数量而增加。在小组成员之间越有互动潜力,就更有造成混乱的潜力。
这个过程的效果(图13.5)??如果目前使用的程序是为这个企划精挑细选??就可以增加有效的工作执行并降低WOT。很明显的,这些是无法完全消灭的??没有生产力的工作会一直存在??但是这种良好的程序将足以提供双向检查(以及可见度),把这些降到最低。
这些过程必须随着企划的人员数量而缩减。如果这方面很有效率,那么这个过程的WOT与RUW比率,应该会维持固定的数值。
过程的麻烦之处,在于它真的很难在[过程数量]与[工作数量]之间达到平衡。在许多情况下,严格的制式化程序会在无视[企划的类型]以及[研发者的需要]之下,硬性的发挥作用。在这一类的状况下,这个过程会比不用更糟,因为它对研发者会造成示范的作用。这个过程在这边应该为企划小组所用;企划小组不应该去奴役过程。
案例研究13.1 疯狂的过程
在制作一个规模庞大的银行企划时,我发现太多的过程,要比太少的过程更具毁灭性。
这个特别成套的研发过程已经完整的写好相关文件,而且要遵循一个极端复杂的规则,放在一本300页的文件之中。
这实在太荒唐了!三百张纸?哪一种过程需要用300页,来告诉一个研发者如何在一个特定的企划中撰写程式?还有更糟的,这个过程追踪系统是以公司中自制的Word Basic写成的(这是与微软Word软体同时推出的程式语言),完全无法用在这个工作中。
维护一个程式模组,有时候需要超过20页的文件,有时只是一份简短的文章。表格可能需要二页或是三页才印得完。接下来这些东西都要影印出来,分配给至少五个人,然后把电子档案放在不同的目录中,部份文件中的名称还是用神秘的规则来创造,并在300页文件的某处加以定义。
这一切只是为了在核心模组中做一个小小的变动。您可以想象为了要创造一个新的模组,要用掉多少红色的标签,而且我甚至不想把这些标着红色标签的文件,送到测试小组手中。
这些过程真的是太复杂了。这些规则是这么的奥妙而复杂,没有人能够全面理解整个程序。错误发生,捷径横行,而且程序遭到忽视。
这个情况不断的重复,好象完全没有程序一样,因为整个企划的状况没有人猜得出来。由于复杂度的关系,说明文件的撰写状况延期,晚了程式码三个月的时间。模组是变更了,但是相关文件没能来得及赶上,导致下一个可怜虫出现问题。这些问题不断的复合,让整个局面完全无法控制。
这个企划的历史显示出先前发生的情况差不了多少。在刚开始只有一个小型的核心小组,以及最少(如果有的话)的过程。随着企划的复杂程度增加,更多的员工加入,但是用来支援他们的结构与程序严重落后。在这之后,有数个新的员工碰上了严重的麻烦,并出现臭早数量多达200只的危机。一位直觉反应的人体育焦燥的回应:[都是这些严苛的过程造成的]。
可以确信的是这些程序可以保证没有新的臭虫,在步步拔除一些臭虫的时候陆续出现(这可能是真的,但不是好理由!这个程序实在太过复杂,让研发过程慢得象乌龟,几乎无法撰写程式码)。
不幸的,一直到新的管理方式介入,整个情况才有改善。过程的数量被砍掉,而且每一个不必要而且过度庞大的程序被削到最小,以能够保持控制为原则。
在这之后,这个企划开始回到常轨上,而且我们才有可能在程序之间,做一些有用的工作。
在案例研究13.1中,这个[直觉反应]者提出来的问题十分常见。一个刚开始没有进行处理的企划,然后再尝试进行抑制,以确保问题不会在后期的日子中增加,就是这种失调现象的主旨。
这个情况如同图13.6。
整个过程的导入,是在结合了一大堆没完成的工作之后,将整个企划磨到全面停止。这个企划通常会在这个时候取消掉,但是在案例研究13.1中是不可能的,因为这个企划实在太重要了。游戏研发企划不会经常性的碰上这么重要的事,所以这样的一个企划很可能在这个阶段取消。
注意到在图13.6中,显示出企划事实上是在过程与WOT耗到100%的劳力时,才会抵达它的发行日期。用简单的一句话来说,就是这一点可以在企划预设的日期之前就抵达,导致取消的可能性大幅提升,除非采取一些矫正的措施。这一类激烈的行动,将在第14章中说明。
不过,在一般的状况下,如果把过程导入一个[处女小组],很可能会出现问题。主要的问题,在于他们不了解这个过程是什么东西,以及它的作用是什么,而升起全面抵制的念头(这种精神上的惯性,要花一些时间才能克服)。在强迫他们接受这些看似[没有必要]的程序时,很可能会招致他们的恼怒。过程将在他们的头上监看,这一点,在刚开始是必要的。正式程序的好处,会在这个企划执行了一段时间之后,才会让他们有所感觉。
所以,这些抵抗问题的解决方式,就是要求他们给您一点点的信任。采用其他的系统,并无法真正的控制或是程序化,导致没有效率的工作环境以及差劲的企划可见度。研发者不可能扮演法律的角色,他们为公司工作,而且这个公司的管理部门(相当于您的[顾客])有十分充份的权利,知道整个企划的进展。
同样的,研发小组也有一样的权利,象管理部门一样知道这个企划是如何进行的。在这个方式下,如果有问题出现,就可以进行预防的工作。如果没有可见度,唯一可以采取的步骤通常是改善发生的问题,而这将会更为激烈、范围更广、风险更高、花费更大。
经验告诉我,在为一个新的企划引入过程的观念时,一般都会导致暂时性的生产力降低。这方面的认知是十分重要的,要不然,它可能迫不及待的成为争吵中所用的弹药,主题就是过程为什么不是好东西。
暂时性生产力下降的原因有二个主要的理由。第一个是不管新东西是什么,都会影响到学习曲线。这个小组必须熟悉程序,才能让它具有效率;换言之程序必须成为整个小组的第二天性。这一点则暗示了程序必须十分简单而明确,可以让所有人轻易的牢记。每一个程序的作用应该让所有人能够了解。就算小组刚开始对程序不太热衷,他们至少应该能够明确的看到潜在的好处。
第二个暂时性生产力下降的理由,是源自于一个企划初始阶段的本质:一切都是新的,所以没有什么空间可以犯错。在刚开始的程序只是纯粹的顶端监看。程序存在的主要理由,是在企划进入一定程度的复杂度以后预防错误发生,而这一点不会在早期阶段出现(参阅图13.5,看看相关的图形)。
程序:在哪边使用它们?
在图13.7中,显示出模组研发(左侧)的主要阶段,以及每一个阶段的相关动作(右侧)。注意到表格中二个方框中的举动都是在阶段的转移点界线上。要插入一个程序来控制设计、研发、测试与发行阶段的每一点是有可能的,但很少有这个必要。
一个很好的定则是,在研发周期中所需的过程与要点的数量,必须视企划的大小来加以调整。下列的章节,将讨论要在哪边进行何种程序。
设计阶段
设计阶段包括的企划部份是从游戏设计者将游戏设计形式化开始,转化为整体设计的要点来撰写模组。
对一个单一的企划,这是种一对多的关系。这边只有一个游戏设计,但是这会导致放多模组设计在整体性的结构下,拥有一贯的特质。在图13.8中说明了这个概念。
初始概念
这个地方并没有太多的程序要施行。初始概念离可控制的领域还太远,这还在一个想象空间。游戏的初始概念(除非市场部门干涉得很深)是纯粹的创意。
在管理上的幸运之处,在于初始的概念倾向一个企划的起跑点,所以最不欠缺的就是好点子(嗯,事实上在游戏产业中好点子有短缺的现象,但是只有少数的游戏设计者真正注意到这个情况!)
输出:描述游戏用的点子与备忘录。基本的概念图稿与表格。
建议程序:将这个点子展现给保管赌金的团体(管理部门、研发小组、发行公司,或甚至是您的同事)。
提案
提案是一份用来定义游戏性的原始宣言,一份文件定义出游戏中的特色,并尝试画出一个游戏的图象,设定小组所要遵循的样式。
输出:一份正式、用来描述游戏的文件(故事、外观及感觉以及基本的运作)。
建议程序:由相关的团体(也就是看过初始概念的同一个团体)来回顾文件。游戏设计应该彻底的检讨,如同一个回顾程序该做的事情一样;而且它应该在下一个阶段之前完成。
整体设计
整体设计是第一份详细游戏设计的草稿。这通常都会在制作中另行发展,但是,在进行任何热心的企划相关技术工作前,需要定出这份文件的基准线。整体的设计文件是半科技性的,而且它将说明游戏的运作方式、外观、玩起来的样子,游戏的所有规则以及单位的运作方式。
输出:一份所有单位的人物、策划、物理外观、样式与设定、控制、所有与游戏相关的详细说明。这份文件也可以用来做为游戏说明书的基础。
建议程序:由整个小组来回顾文件,或者至少看过代表用的范例。
结构
结构文件是技术文件的初始。这份文件中描述了企划如何建造成模组层级的东西。这应该包括这份企划是如何与公司的结构方针相呼应,包括了重复使用已经完成元件的计划,让元件的使用达到最佳化。
输出:一份说明组成游戏模组,以及模组之间是如何连接的元件。
建议程序:文件由程式设计小组来回顾,或者至少看过代表的范例。
模组设计
这个文件是一份要从设计交到研发人员手中的东西,也就是一份写给每一个模组的文件。初始的草稿是由软体规划师或是游戏设计者所撰写的,接下来后续的修正通常是交给研发者来掌控。这个文件是一个高层的技术规格,描述了特定模组的功能,也具有说明书的作用。这个模组设计文件,主要是针对模组所需程式库的相关资讯,而且它另一个重要之处在于重复使用的计划。请注意,一个模组可能有许多种形态,每一个都可以变更它的重要性与重复使用性。举例来说,程式模组可以重复使用,但是美术模组或是游戏的资料档模组,在重复使用上就没有那么方便了。
输出:一份包括了详细指令的文件,说明一个特定的模组功能以及用途,包括了使用上的范例。它必须与模组同时进行维护。
建议程序:由首席程式设计师(如果可能的话)或是设计者来回顾这份技术文件和软体结构(如果文件已经由程式设计师完成的话),而且至少有二位程式设计师随同作业。在合适的情况下,其中一个回顾员应该指派为重复使用元件的负责人,以确保可以尽可能的重复使用所有写好的东西。
研发阶段
研发阶段并不只包括撰写程式码的时间,虽然有许多游戏产业中的程式设计师(甚至在游戏产业之外)都是这以觉得。甚至有更多开明的程式设计师觉得,一个附带了说明文件的程式档,就应该足够了。
研发阶段在整个周期之中是最重要的一环,但是撰写程式码只是其中的一小部份。
请注意,这一段讨论只针对了程式码的研发。我并非在谈论美术或是其他游戏所需的模组,虽然它们的原理与程式模组差不多。
详细的技术设计
每一个模组都是以纵的方式,写出详细的技术文件上。这可以视为模组设计文件的延伸,但是更为详细。这份文件是用来针对每一个研发人员解释模组运作功能,包括了设计背后的理由以及其他特征的详细说明。
这份文件的效用,在它对模组的重要性影响下,将会变成研发模组的一份日记。这个模组与技术设计文件必须先保持在纵排的方式下。
输出:一份包括了特定模组的详细技术规则文件,象是界面、演绎法、设计上的选择、测试描述、以及测试上的管理等等。
建议程序:设计上的回顾,是由研发者以及软体设计师引导。
研发
这个模组通常是从某些型式之下的设计文件研发而来。在美术的情况下,这通常是在风格指引结合了游戏设计的成果;而在程式上,是由详细的技术设计文件而来的。
输出:一个在企划中使用的模组。这可能是一个程式码、一个3D模组、2D图案、一个文字设定档或是其他与企划有关的东西。
建议程序:由研发者来进行程式码的回顾。
单元测试
单元测试是在测试研发者写出来的程式码,而且通常是同一个研发者来进行。这个单元测试必须以一个研发者写好的描述为主,也应该是技术设计文件的一部份。
输出:说明单元测试的结果。
建议程序:在单元测试中找到的错误要回报给企划管理者做进一步的指派。视这个错误的本质,指派原先负责的研发者加以修正。
整合测试
整合测试通常是研发过程中的最后一次测试。研发者测试完成的模组,看看它是不是建构得相当完整。整合测试应该认为是单元测试的延伸,而且,这个测试本身采用的描述,也是单元测试技术设计文件的其中一部份。
输出:说明整合测试的结果。
建议程序:与单元测试相同。
签名
最后阶段要让所有在这个模组上面工作的研发者签名;只在有所有的测试都通过的时候才能做这件事。如果测试没有成功的过关,这个行动就没有任何意义。
输出:一个通过测试、没有错误的企划模组。
建议程序:进入资源控制。
================未完!请继续看下去!====================
[em20] [em20] [em20] |
|