游戏开发论坛

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

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

[复制链接]

79

主题

288

帖子

619

积分

高级会员

Rank: 4

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

第十一章 软体工厂

  

*软体工厂所解决的问题

*设定一个软体工厂

*使用一个软体工厂

*软体工厂的可适性

  

在第10章中说明了有效研发环境中的角色与部门,这些资源可以组织成许多不同的结构(但不一定适合用来进行游戏研发)。在这个章节中将解释角色与部门的组织结构(特别适合创立研发公司时采用),以及说明这个结构如何把效率提升到最佳的层级。

这个结构也可以用在一个刚刚创始的组织,但是这样的作法,通常是因为第一个企划都会花费较长的时间(至少很可能如此),我们将在这个章节后面再说明。

  

什么是软体工厂?

软体工厂一词是指一种生产软体的方法学,而使用的技巧类似于标准工厂,象是一个汽车生产工厂一样。不过,这并不表示用这种方式生产出来的软体都具有同质性、可以无尽的搅拌,而且缺乏想象与天份。已经有够多的公司曾经努力过,但是他们的创意游戏也让他们走进了破产的死胡同。在图11.1显示出一个看来很有钱的人(高顶帽与燕尾服、怀表、雪茄和从裤子口袋中外露的钱)正在转动软体工厂的握把,看来象是一个绞碎机。游戏设计从上面吃进去,而且不具名、理想的游戏从下面出来。从机器中传出一个声音:[来吧!你们这些笨蛋!快一点!快一点!]这一类的软体工厂应该可能避免所有的花费。

随着电脑游戏产业的逐渐成熟,更多复杂的生产方式(象是软体工厂)已经开始实行并做出新的产品。软体工厂的方法是把特定的共用模组加以简单化与集中化,让它用在数个不同的产品上。

它运用了大量生产的优势,以容易而更有效的方式来进行特定的工作,而且它会确保核心使用的工具与程式库不断的维护更新,运用在一系列的产品上面,以取得这方面的好处。所以,研发续集的作品将更为容易,因为他们会得到更丰富的程式库以及工具组的支援。

软体工厂已经证实它可以在一系列的企划中,以相同的功能来运作。请记住这种模式对一个特定的产品而言不一定适用(您和您的同事可能光是靠涂鸦就找出更好的方法)。不过,软体工厂特别适合生产一系列的作品。

[但这正是我们在期待的游戏!每一个都很特别!要改写程式码、换掉画面再拿出去发行是不可能的!]

这种抗议相当的正确,但是您每次制作游戏时,都想要重写一次画面与音效设定程式、资料档案读取、程式库压缩、光碟音轨播放、选单程式,或是其他在长串列表上的基本模组,而这些模组明明可以重复使用程式吗?如果从管理的角度来看,您每次重写一些现成的特定程式时,又要花掉多少时间与金钱(不只要重写程式,还要经过测试、整合与除错)?

  

下表中的一些常见工作,应该隶属于可以重复使用的模组:

*资料档案读取

*硬体安装

*硬体设定

*软体设定

*特定的CODEC(压缩与解压缩)

*编码与解码

*视窗与画在特色

*基本人工智慧元件

*使用者输入

  

软体工厂的概念可以简化像是生产通用程式码与工具组的工具,让研发者可以专注与写好从草稿上想出来的程式码。要让工作速度提高,表示你必须运用已经完成,并经过全面测试相关功能的模组,来完成你的目标。

  

为什么要使用软体工厂?

利用软体工厂的模式,与其他的研发模式比较起来,究竟有什么优点与缺点?虽然这里问题的答案要视特定的情况来决定,不过在表11.1中列出了数个主要的优点与缺点。

  

表11.1 一个软体工厂的优点与缺点

优点
缺点

平均的企划时程会缩短
第一个企划要花较长的时间

可以让跨平台的制作较简单
可以重复使用的程式库,必须为每一个平台进行改写

程式码较可信赖
程式码将更具共通性,所以更难撰写

程式可以重复使用并加以维护
初期的程式码要花更长的时间研发

相关知识可以在所有研发者之间分享
新的研发人员必须学习不熟悉的程式库

增加了企划进展的可见度
需要更多的管理

加强研发人员的专业能力
技巧上的弹性较不足


  

在表11.1中,显示出这种模式的确有它的缺点在。不过,在整体上,制作数个不同的企划时,优点显然要比缺点更多。

  

解决游戏研发问题

软体工厂的方法有助于解决游戏研发碰上的常见问题、也就是平台的独立性与风险的降低(靠着知识分享、程式码重复使用以及程式码的维护,等等)。

  

平台独立性

考虑与DOS相容的PC环境??这是一个可以扩充的系统,而且有着广泛的设定方式。如果是为了效能的理由,您可能想要直接驱动PC上的硬体,那您会怎么选择?您应该自问要在哪一种机器上面支援何种研体,而到了最后,这个选择会变成只支援有限的硬体,并让您的游戏销量受限。您也可以赌上支援各种不同的硬体,但很可能会由于硬体的冲突与不相容,成为逻辑方面的恶梦。

让我们来看看一个明确的范例。假定您在一台与DOS相容的PC上面,写了一个3D太空战斗的游戏。您对您的结构设计很有信心,并在界面之下隔离了与所有平台有关的程式码(在这边用的平台,指的是PC上面的特别硬体)。

您必须分别为想要支援的不同平台,撰写隐藏在界面之下的程式码。您可能选择支援三种常见的影象卡与三种音效卡。

所以,您接下来要撰写、除错并分别测试六种硬体的相关程式码,接下来系统要在九种不同的设定之下进行测试,还不包括那些完全没有这些影象卡与音效卡的玩者。让事情更为困难的是,要让游戏的速度够快,您必须用这种方式来撰写程式库,让它们依赖游戏的内部知识来达成所有的功能。这是很复杂的工作,没有任何书本可以教会您这一切。

另一个常见的问题,在于您要如何以最有效的方式,把所有的平台程式码写出来。看来,您不太可能找到对每一块想支援的影象卡,都具有足够知识的设计者。由于您要写的程式数量已经够多了,看来您也不会有时间去研究相关的知识。

当然了,这是一个策略上的案例,与现实世界并没有关联。在现实世界之中,只有更糟。

为了要把游戏的研发推展到特定的平台,并把硬体的支援责任从游戏研发者手中移到硬体设计者,微软与苹果公司独立研发了二个解决平台问题的方案:DirectX与Game Sprockets。在撰写本书的时候,DirectX已经进展到第六版,而且可以直接从微软的网站下载:一样的,Game Sprockets也可以在苹果的网页进行下载。

DirectX与Game Srockets都是高效能、多媒体的程式库,设计用来自动侦测使用者机器上,是否有任何加速用的硬体。他们的作用在于程式设计师撰写程式时,只要针对微软或是苹果定义的应用程式介面(Application Programming Interface,API)就可以了。

这些程式库有助于解决个别硬体的问题,而且除非是透过标准化的方式,程式设计师无法直接驱动硬体。在DirectX之下,提供了一组常用的功能,可以由硬体呈现或是由软体来进行模拟。刚开始DirectX在研发人员之中接受度并不高,但是现在您可以去找找看,哪一个游戏会绕过DirectX的协助。

当然了,DirectX与Game Sprockets仍然是层级很低的多媒体程式库,而且(理所当然)彼此之间并不相容。要真正达到平台独立的目标,您必须创造出质轻的包复程式码,对硬体提供统一的界面,不管执行的机器是一台与DOS相容的PC,还是一台麦金塔或是其他平台。就算您没有打算支援一种以上的平台,包复程式码仍然是很好的点子,因为它可以简化许多常见的工作。创造这样的包复程式码,是工厂的主要工作之一。

  

降低风险

在第10章曾经讨论过的一个问题,是关于失去小组中的重要人物。如果您有一位很特别的小组成员,专精于一个特定领域中的知识或是技能,在整个企划中无人能取代,那这个人就会成为一个风险。

在这个阶段,您应该问问您自己,愿不愿意把整个企划赌在一个人身上。如果他们跑到西藏的天空下面生活(或干脆加入其他的游戏公司),这个企划能不能承受得了这种损失?如果这个企划受得了,又会耗掉多少的时间、金钱与功能?减少无可取代的专业人士,是一个企划成功的关键。

  

案例研究11.1 失去关键人员的后果

据Bungie Software公司的杰森·瑞吉(Jason Regier)所言,在研发《杀无赦》的时候,曾经因为关键程式设计师的离职而出现一段痛苦时光。这位人士负责的内容是一个描述引擎,一个很重要(但幸好不是必要)但却非丢掉不可的模组。在程式设计师离开之后,描述程式码的基础都还没完成,而且没有人有足够的知识可以接着写下去。更糟的是,《杀无赦》的小组并不大,结果就是没有多余的人力,来学习这种程式码要如何运作。

描述引擎的作用是提供特定的部队以及地图上的行为。这些特色已公布出去,将会出现在完成的游戏中。

这个特别的问题,就是靠着把这个功能拿掉来解决的。一个描述引擎是一个复杂的重任,而且通常不是一个关键路线上的模组。在这种情况下,Bungie在考虑了费用与功能这二个要素之后,决定把它拿掉。如果这个模组是图象引擎,象这种决定是绝对不可能发生的。

引自:游戏研发者杂志(1998年4月)

  

软体工厂可以靠着重复使用程式码以及鼓励工作上的性质重复,来减轻这类损失关键人员的问题。在案例研究11.1中的描述引擎是专门为这个企划而写的。不过,从另一个方面来看,它也可以写成一个界面,而每一个可以描述的游戏物件,就可以用输出的模式来支援这个界面。如果这些界面设计得十分普通,那么就会自动重复运用,并在不同的企划中使用。

如果您是一个道地的游戏研发者,那您在看完最后一段之后可能会觉得不太舒服。标准化的界面?在加上另一个层面的覆盖之后,难道不会让执行速度慢下来吗?这难道不会让程式更难写,而且要花更多的时间?

呃,答案是[是]以及[不是]。如果界面设计得很合适,您至少可以和特别整合的元件获得相同的效率。而且,由于软体工厂强调的是重复使用能力,所以描述引擎可以调整并修改,来符合数个不同企划的需求。如果您想看看这一类描述界面如何运作的详细提案,请参阅第20章。

在案例研究11.1中,如果有另一个研发人员一样熟悉描述引擎,而且这些程式码写了详细的说明时,这些就统统不成问题。在研发过程中,在主要部分加注说明文字是一个好习惯,但是通常(说明白点,将近百分之百)会被忽略。如果它只要使用一次,为什么要写一些麻烦的说明文字上去?如果您是唯一要使用这些东西,而且最了解它的人,为什么还要在程式码或是程序中写下说明?

这些都是原则上可以接受的反应,但是它带出的问题是,您为什么要写一个用完就要丢掉的程式吗?如果您假定写下这样的程式码是正确的行为,那您为什么突然会觉得您一定要跑去西藏躲起来?您又怎么确信您是唯一要看得懂这些程式码的人?

理想的路径是沿着写好的程式码重新检视,看看写程式时能否让脑袋中有一个企划,并加上完整的说明。

  

案例研究11.2 重复使用程式码

据Zombie公司的魏斯,雷吉威(Wyeth Ridgeway)表示,《风驰电掣》(译注:赛车游戏)的程式引擎,是从他们的上一个游戏《特种部队》(译注:第三人称动作策略游戏)中改良而来的,里面没有游戏专属的程式码。这是一个专门设计用来重复使用的模组。

这个引擎中包括了3D成象、一个使用类似LISP语言的物件描述模组,以及一个声音模组,以及其他东西。

所有元件在他们的手中,都只是工具。这个游戏是由游戏引擎以及游戏相关的资源(画面、声音以及物件描述)所组合而成的。它的组合是靠着最少量的结合程式码,主要是用来进行物件描述以及小量的游戏专属程式码,这些是用支援描述并提供一般的框架。

这个引擎设计的方式下,只要有一套不同的资源,一个人就可以打造出完全不同的新游戏。这种能力在几个非程式设计师的小组人员手中展示,只要一个周末就可以创造出一个大脚车的赛车展示。这表示只要有合适的规划,一点点游戏研发的基础知识,以及一份详细而精确的文件,就可以让一个软体工厂在现实中全速运作,开始生产。

这个结果就是软体工厂的目标。

来源:游戏研发者杂志(1998年6月)

  

为何要使用软体工厂?

一个软体工厂是设计用来生产一组可以重复使用的核心元件与工具,可以随着数个不同的产品而进化。从一开始,这些工具与元件是以[可重复]以及[未来可扩充]的想法来设计的。在研发这些工具与元件时,最重要的是让它们可以作用在游戏上。这些工具与元件所用的研发采用严密、监控的方式,而且会加上完整的说明资料,以期在未来的企划中能够重复使用。任何工具或是元件所需的更新动作,必须先经过完整的需求分析,而且必须能表现出同等的标准。这些工具与元件是整个过程中最重要的部份,他们设计上,必须让上一个游戏的上架时间,足以完成下一个企划,这是十分重要的一点。

好处是十分明显的:用来进行常见工作的程式码,可以一次又一次的使用,省下研发的时间与财源。主要的缺点是第一套的工具与元件必须从头开始,而且通常在研发时间上面,要比直接在企划中,写出想要的功能来得更久。获得通常是在接下来的企划中才显示出来。

想要让已经发行的企划大幅改进,另一个可行的方式,就是用更新的核心模组再推出一次。这种作法要多加小心。在这个世界上没有付出就不会有收入,而且,就算理论上所有修改过的元件都应该可以与早期程式相容,但是这种方式有可能成为测试的重担。如果您有自信做到这一点,那就去吧!不过,记住微软曾经保证DirectX会向后相容所造成的麻烦。一直到第五版以前,新的更新程式经常会毁掉进行更新动作之前的系统,导致最好的情况下系统最佳化不足,最差的情况则是系统完全无法使用。

另一个相似的情况,是建造一艘航海的船只。如果您决定要从第一天就打造您所需的一切物品,这个小组就得从砍树、木材加工、把木材放干、然后才能开始组合成船只。要用这种方式做出数艘不同的船只,一定会累死人。

在合理的情况下,您可以安排刚开始的元件以生产线的方式完成(甚至请外面的人来写),然后让您的小组只要进行组合的工作就好了。这样可以结合小组的优势(热情与动机)与工厂的模型(有效的运用劳工,并及时完成)。

  

组织一个软体工厂

软体工厂的结构与您之前习惯的方式可能有所不同。下列的章节将说明一个软体工厂的构成要件。

  

结构概观

在表11.2中,是一个最基础的软体工厂核心需求。

  

表11.2 软体工厂核心小组的必要群组

小组
说明

游戏设计者
想出点子并生产出设计文件

软体结构师
监督整个企划的结构,并在小组中互支动

工具
象是小组用的关卡编辑器…等等

元件
生产出低级、与平台相关的程式码

企划
使用元件与工具小组的结果,生产出真正的程式码

研发
与新的研发科技保持同步,并研究新的点子,然后整合到低级的元件中


  

在表11.2中是基本工厂的人员列表,并没有彻底的调查,也不是最后的定案。其他的附属角色可能有其必要,但是在这个列表中只定义出核心的需求。没错,并不是所有的组织都可以符合这样的崇高目标,但是除了软体结构师的职位(这是一个专精、应该属于全职性的工作)以外,在群组中可能会有很多的重叠部份,如图11.2所示。很明显的,您手上有越多的人可以用,则重叠的部分就越小;但是一定程度的重叠通常是有意的,这有助于把相关的知识,传达到整个小组之中。

工厂核心小组的功能与互动,将会加以详细的说明。在图11.3中显示了软体核心工厂的阶层架构。

在图11.3中是一个粗略的指导方针,但不是死硬的结构。在现实中,这些状况要比静态图表所表现的更活泼;而这边很少变成死硬关系的原因,是来自小组之间的互动。这些人与人之间的互动(或是称之为沟通)有助于提供高层的企划可见度。企划可见度是指可以正确估算企划进展的能力,这种能力对每个重视产品的人而言,是十分重要的;包括了投资者、发行公司以及小组成员。不过让人惊讶的一点是,良好的可见度也会带来副作用,这会减少必要性的小组会议。有许多称之为[进度]的会议最后会变成完全二回事,而且除非计划有大幅的修正,否则很少有中止研发的必要,把时间拿来开会。这样的会议是最会杀时间的东西,而且会干扰小组的专注力与工作态度。

  

群组的责任与互动

在软体工厂中的每一个核心群组,都有定义得十分明确的角色与工作。这边只有很少(如果有的话)的重叠,而且所有的重要群组互动,都是在严密制定的管道中进行。

这些互动是以内部市场系统为概略性的基础。每一个群组都是另一个群组的顾客,所以应该相互视为重要的客户,彼此提供相同等级的文件与产品支援,如同这个产品已经卖到市场上面,客户碰到问题的处理方式。

这个[市场系统]结构的重要性,在于确保企划以正确的方式进行追踪;让您的左手知道右手在做什么事情,都不会有什么坏处。在图11.4中显示了在一个软体工厂之中的群组互动,而不管外界的影响。在这个图表中,程式设计群组一块待在一个大团体中,因为他们通常是同一群人所分别担任的。不过,在个别是的程式群组之间产生互动时,他们还是必须透过合适的管道(这些管道将在第13章说明)。

在图11.4中,概略的说明了主要的互动。首先,我们来看看它的限制。这些是您可能会想到的问题:

  

*为什么只有结构群组可以进行直接接触?

*如果一个游戏设计者无法直接与程式设计师接触,要如何影响游戏的结果?

*为什么结构群组一定要在一切的中心?

*为什么研发群组直接连到结构群组?

  

要回答这些问题,您应该考虑的是一个标准的状况,如案例研究11.3所示。

  

案例研究11.3 缺乏效率的问题处理行为

安迪(Andy)、拜瑞(Barry)、克理斯(Chris)、大卫(Dave)与艾迪(Eddie)都是一个程式设计小组,目前正在制作的企划是《FlyBusters lll??eyond The Flypaper》,这是由一位游戏设计老手佛瑞迪(Freddy),所完成的最新企划。

艾迪是首席程式设计师,一个技术上的天才但没有什么人际关系的技巧;安迪是一个见习者,刚刚从大学毕业;而拜瑞、克理斯与大卫是元件的程式设计师,在游戏产业中有充分的经验,而《FlyBusters lll》是他们第一个一块共事的企划案。安迪刚刚踏入社会,而且不太确定所有的东西是如何拼凑起来的。

在进行玩者太空船的物理模型时,他注意到有些角度之下,地形会扭曲的很难看。现在,艾迪有一个不太好的名声,就是他有点难以打成一片;他最喜欢使用的反应方式,会暗示他的时间被浪费掉,而且他有很多更重要的事情要做,而不是在那边听取组员对小问题的哀鸣(安迪在先前向艾迪担到近看时多边形之间有间隙,就被这种现象碰了一鼻子灰。拜瑞和大卫是多边形引擎的程式设计师,对这种批评程式码的行为做出了强烈的反弹)。

这一次安迪试了另一个方式,直接反应给克理斯,也就是设计地形引擎的人。虽然克理斯很忙,还是花了一些时间去看看,并向安迪建议别让玩者直接向正下方来观看地形,这样问题就不会太明显;因为这个地形引擎还无法支援这种特殊的视角。这是一个小小的变更,但是要花上数个小时的时间才能把一切搞定,所以安迪就照着凶的建议来做。艾迪今天特别忙,身上冒出的正是[别靠近我]的光晕,所以安迪想要明天再告诉他,然后去做下一个工作。

在数个星期之后,艾迪决定该是制作轰炸视角的时候了??这是一个特别的视角,让人可以轻易的瞄准超级啸声炸弹(可以用十分精确的方式丢在目标上,并随着地形扩散爆破)。当他决定好视角之后,艾迪不太了解的是,他就算特别指定炸弹应该落下的地点,炸弹还是不能精确的命中目标;而玩者太空船的位置与定位,使用的正是安迪负责的物理API。在一点时间的查看之后,他马上就查出了物理引擎无法正确的运作。在严加拷问安迪,叫他去检查他的程式码是否正确之后,艾迪决定先把这个问题放在一边,因为他看到物理引擎中的大量完成程式码,变更它的内容会导致独立的程式码碎掉。

二个星期之后,在一个例行的测试中,游戏设计者佛瑞迪注意到很难让炸弹精准的命中。事实上,这几乎是一个[有投必有失]的过程。他马上要求把这个问题解决掉,并坚持轰炸的策略是游戏的中心。程式设计小组没有选择,只好在三个区域修改程式码,让整个企划延后了三个月之久。安迪觉得很不高兴而且没有受到尊重;克理斯觉得好象是他的错,因为他没能写出够好的地形引擎;拜瑞和大卫因为安迪批评他们的多边形引擎感到很烦而且暴燥;艾迪觉得很挫败并应该为延期的事情负责;而佛瑞迪认为整个小组都是一群白痴。团队的士气低落、而游戏上市时间延后了六个月,而且在评论也针对了轰炸模式的不良以及技术的失败不断攻击。简单的说,他们被炸掉了。

在快速与??之间,人们很快就会忘掉快速,却一辈子记得它有多?。

  

现在我们考虑另一个使用软体工厂结构案例,如案例研究11.4。

  

案例研究11.4 有效率的问题处理行为

这个小组与案例研究11.3一样,制作的也是同一个游戏《FlyBusters lll》,而且在出现初期的反抗之后,大家都同意按照沟通管道来交谈,至少先试试看。

当安迪发现了多边形的结合问题时,他登上了公司的内部网路,并以不具名的报告方式,详细的说明了现在出现的问题。结构群组查看了这个问题,并与游戏设计者佛瑞迪和艾迪交谈。佛瑞迪询问这种现在出现的问题。结构群组查看了这个问题,并与游戏设计者佛瑞迪和艾迪交谈。佛瑞迪询问这种现象是不是可以修正,而艾迪在与拜瑞谈过之后知道这个症状是故意的,为的是让速度获得最佳化;所以他宣布问题可以修正,但解决方式的代价很高,必须针对每一个多边形与每一条扫瞄线做额外的检查。佛瑞迪询问这在事实上会出现什么状况,而艾迪解释这会让游戏每秒的贴图数量降低,降低的程度要看画面上每一个物件有多大,以及同时存在多少个多边形。佛瑞迪不想失去引擎提供的流畅画面,所以他同意在游戏进行时不需要加入特别的效果。这个问题以[不需要做任何行动]的决定处理,并把一段简单的理由写在网上。

接下来安迪碰到了俯视的视角,并再次用不具名的报告于网上提出。不过,这一次佛瑞迪坚持轰炸的视角在游戏中十分重要。在艾迪与克理斯交涉过之后,发现要加入这个真正的俯视视角,表示他们要写一个分离的次引擎,而且这将要再花掉三到六个月的时间。这个问题以[开放大家研究]的方式在网上回应,而结构群组与佛瑞迪先行离开,去想一个解决的方案。在经过数天的慎重考虑之后,佛瑞迪想出了另一个轰炸视角,并不需要向正下方俯视地形,并把它展现组结构群组。在这个时候,结构群组注意到另一个企划小组正在制作一个俯视的地图模组,可以很简单的放入《FlyBusters》的企划之中,因为他们之间的界面是一样的;但是必须利用随附的工具产生额外的图形。现在,佛瑞迪有二个制作轰炸视角的选择,而且二种都可以让人满意。

这个解决方式选定之后,放在内部的网站上面,而且俯视的视角在几天之后,经由企划群组的结构规格更新以提供新的功能,平顺的整合到现今的企划中。艾迪经历过足够的传统企划,知道程序上面的方式不够正确的话,这种事情一定会发生;而且很惊讶的看到问题能够这么快的获得解决。安迪很高兴看到他提出的问题得到肯定,不管大家知不知道是他所提出的。克理斯松了一口气,表示他不用大幅度修改他的地形引擎,而拜瑞很高兴看到他的最佳化放在第一顺位。现在小组的士气提升,而产品也在预定的时间上市,成为很成功的商品。

  

在这边最明显的好处,在于增加了整个企划进展的可见度,问题一出现马上就可以处理。提供不具名沟通管道的好处,在于企划中的每个人都可以看得到,所以每个人对事情的关切与心声,不需要和人与人之间的关系起冲突,也不用触及礼貌上的问题,那些都是人性的丑恶面。主要的顾虑还是在于企划的成功与否,而不是被冒犯人类哪种敏感的情绪。不具名的管道,有助于在这种状况下确保良好的结果。不管怎么样,这个讯息是从哪边而来的并不重要,重要的是它出现,而且它会以多快的速度出现。

对很多研发者而言(尤其是在游戏产业),在实施这一类定义得十分清楚的小组结构,刚开始时会带来反对的声浪,主要是因为它看起来限制良多,而且会让创意窒息。您可能会听到研发人员说这样的程序会让他们的动作变慢,而且降低他们的生产力。这些研发人员通常(几乎)都是习惯于高速大量制作出程式码,并马上把东西丢到萤幕上。这些人员也是导致企划中产生大量臭虫,不得不多花数个月的时候来修整的同一群人。事实上,这些研发人员在抱怨的是,他们现在要做的工作在以前明明可以拖到企划即将结束时才动手,而且在发行时一样可以过关。在强迫使用程序化的作法时,大部分问题都可以在早期阶段抓出来。

  ===============未完!继续看下去!=======================
[em21] [em21] [em21]

79

主题

288

帖子

619

积分

高级会员

Rank: 4

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

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


抓虫

大家都知道一件事:如果能在研发周期中早点把臭虫抓出来(而且这种事可能会发生在企划的任一个阶段),就会省掉更多的时间与金钱。一个在结构阶段抓出来的臭虫,如果放着它不管等到游戏即将发行才去处理,可能要花费200倍以上的时间才能解决它。

如果您发觉额外的程序会导致额外的工作与延迟,这不过是一个幻象。对今天的大部份企划而言,这个工作仍然非完成不可,但是它永远不会排在企划时程表中,而且最后仍然得在研发过程后期把它做好。在这同时,管理部门急着等候企划的发行,而目前已经落后了六个月的时间。延后的企划会伤害到员工的士气以及小组在公司中信誉。任何可以用来侦测并修正这些问题的评估必须尽早运作,已经是不可或缺的事情了。不管怎么说,您听过多少次[一个游戏已经做了一年半的严密程式撰写,目前企划已经完成90%,只要再等一年,就可以完成90%以外剩下的东西]?

下列是一些在介绍结构设计程序时,最常听到的反对声浪:没有时间等所有的文件统统写好,这个企划已经处于一个十分严密而积极的时程表,而且增加这一堆高高在上的东西,只会让所有东西慢下来,而制作时间却越来越长。看到状况不佳的企划屈服在这些争议之下,而答案却是没有时间来实施这些提高效率的作法!在长期中节省时间,才有可能弥补早期任何慢下来的进度。研究一个时程表的步调(并预见问题,在出现之后尽早把问题解决掉),时间才能在剩余的企划时间中有效的节省下来。

想要知道沟通的方式,请参阅第13章。

现在您知道不同群组之间要限制互动的理由了,接下来的部分会简要的说明这些作法以及安排这些沟通管道的理由。请注意,就算是透过这些已经安排好的构造,讯息还是会以其他的方式进行传递:偶尔在走道中的见面,或是在午餐或中场休息时的讨论,都会打坏讯息传递的重要结构。最重要的是,要把这些问题带入正式的会议之前,必须先透过正确的管道,才能实行解决问题的行动。这会让所有人关心问题,并有机会让他们想出好方法。

  

游戏设计者群组

游戏设计者群组负责的工作,是撰写初步的游戏设计;并在后续的过程中,把研发与测试过程中发现的游戏关键加以浓缩精炼。象这样的作法,其他小组中的人员可以加入游戏设计者群组,提供点子并把游戏设计变得更为精微。不过,如同先前讨论过的一样,游戏设计一般而言比它的外观更为复杂,所以生产初步的设计与规格,最好留给经验丰富的游戏设计者来完成(或是看过本书第一部的人)。通常这个群组也要负起撰写最终用户文件的工作,象是游戏的说明书。

游戏设计者群组主要是与软体结构群组进行互动,一般而言他们会倾向依靠预估企划的可见度,来遵循整个企划的进展,而不是直接去找其他群组要资料。

这个群组的主要时间是花在研究新的设计,并修正目前在研发中的企划。在工具与元件群组有足够的速度,并为游戏设计者完成了数个有用的工具与元件后,这个群组会发现他们自己在游戏调整与程式设计的过程中,更具有[实践]上的经验。举例来说,如果一个简单的人工智慧描述引擎已经完工了,那游戏设计者就可以开始撰写描述档。如果企划已经使用资料库来研发,以储存各种常见、可调整的参数,那游戏设计者也可以进行参数的调整工作,把游戏调整为他们心目中的模样。这些参数被公认为[软体结构],而且可以在不变更企划要示的硬体结构下,进行多方面的调整。游戏设计者群组的领域也可以包括直接性的调整结构,但这必须等到有适合的工具,才能让他们完成这个工作。

游戏设计者群组也必须与声音和美术群组沟通,以指定游戏的外观及感觉。

  

软体结构群组

软体结构群组的作用如同一个工厂的中枢,而且它是游戏设计者群组和程式设计群组(工具、元件、企划与研究)的主要界面。这个群组的人员对所有的程式群组来说,就代表了传统的[首席程式设计师];不过他们也有可能会做一些较小规模的程式设计工作。

这个群组主要的责任是把游戏设计转化为技术结构文件,使用现有的元件与工具,并写下这个企划中的工具与元件需要做何种程度的修改,然后从研究企划的结果,开始研发新的工具与元件。这个群组的人员也会为游戏设计者提供回馈,以确保这个设计是可行的,并从游戏设计者想象出来的设计理念,做技术性的游戏设计建议。这个结构的规格是一个不断进化的过程,可以随着企划的进行而不断的修正。大部份的主要改革,都是在原型的阶段中,从是否可行性的研究加以整顿出来的。所以任何未来的修改应该都是以现存的结构为基础,在精微与净化的过程之下更为完美。除非您拥有某些可以看透一切的神力,否则了解这些是十分重要的(从统计学上来说,而且这些现存的数字都在{0,1}之间??这会更让您搞不清楚),然后在现有的结构中最多只能完成80%,接下来要等程式开始撰写。最后的20%必须在企划的进行期间完成,一般称之为80/20规则。

软体结构群组全面控制了整个公司的标准结构与程式撰写。这个控制包括了各种类别,象是档案格式、界面定义的标准、文件标准、目录结构、原始程式码标准控制以及其他把重复使用与可以维修视为重点的常见范围之下。

程式码回顾是由这个群组的组员来进行的,这是为了确保结构标准可以随着不同的企划而修正。这个群组也监督了各个元件、工具与企划的个别系统测试。

软体结构群组一般说来,是由公司中技术最好的人员所组成。他们在结构设计上十分专精,而且可以写出他们能够遵循的详细规格,不会觉得模棱两可,所以用不着去劳烦三个程式群组的任何一个。这些人在技术上面的能力已经足以回答程式设计师的任何问题,并解释任何技术上的重点,让他们可以遵循着规格来运作。如果在必要的情况下,训练应该可以达到这个目的,要不然就引入其他具有技能的软体结构师。

  

工具群组

工具群组的主要功能,是生产并修护所有其他研发群组使用的工具。在某些情况下,这些工具是在公司内自行撰写的,而在其他的情况中,可能是比较常见的架上产品,象是3D Studio MAX与微软的Visual C++。

在可能的情况下,这些工具是设计用在一个以上的企划中。这个考量并不象它听起来这么困难,举例来说,一个设计得很好的地图编辑器,在各个企划中都应该可以运作得很好,毕竟地图就是地图;如果想要特殊的功能,它也可以藉由提供资料档中的资讯来定义。如果真的需要一个外加的功能,就可以去撰写特别的输出模组。某些企划结束后,有可能非把工具丢掉不可,但是这方面必须多加小心??或许它们在未来的企划中会发挥作用,或甚至在制作资料片时,这个工具也是不可或缺的。不过,一般来说,把工具丢掉真的没有什么必要;而且就算如此,程式码与文件的标准,应该还是可以让这些工具在设计时,是以重复使用为基本功能。

  

案例研究11.5 重复使用工具的好处

据Larian Studios的史温·芬克(Swen Vinke)所言,《LED商业争霸》这个游戏是在另一个企划《The Lady, The Mage, And The Knight》进行之中的五个月时间完成的。

这二个游戏的风格与基础都是不一样的(前者是即时战争游戏,而后者是一个多人连线角色扮演游戏),但是它们都有相同的方格地图结构。由于这个相同之处与史温在设计上面很小心的处理游戏骨架,这二个游戏可以同时使用很多的共通程式吗。史温完成的应用程式支架品质,可以让他在二个不同的游戏中,同时套用相同的结构;而在共通性的结果之下,他可以使用相同的编辑器为二个游戏设计关卡,省下了研发另一个工具的研发成本。

在小心翼翼与深思熟虑之后,这个方式可以用在未来的游戏上,而且一组常用的工具,可以透过软体工厂来进行设计。

来源:游戏研发者杂志(1997年10月)

  

元件群组

元件群组创造出的是低级的模组。这些是其他公司以各平台为主的程式库界面;常见的模组包括压缩程式库,以及其他类似的模组。

在刚开始时,这个研发出来的模式看来十分明确而易懂,但是随着小组经验不断的成长,对额外功能的建议将会加入常见的程式库中。看看案例研究11.2,要想象出一个完全不同的图象引擎并不困难(举例来说,同样的3D模式),而且也可以不用经过太多的困难(只要让它绘图)就把它放入定位。

最重要的元件设计目标,是它们应该只做一件事,而且做得很好。这并表示它们应该设计成不只在一个企划中发挥功能。举例来说,如果您有一个全视角的3D游戏引擎,它应该只会提供这种功能。一个2D的地图视角,应该是由另一个完全不同的模组来提供的。每一个模组的界面要完全一致,在这种方式下,如果往后想要把3D的等大地图视角,换成2D的地图视角时,在理论上只有图象需要重绘,而且新的程式码将可以直接连结进去。

另一个例子是声音引擎。在大部份的状况下,这个模组不应该同时内建2D(标准左右音量的变化)与3D定位的功能。3D定位应该在另一个独立的模组中建立,而在界面上与2D程式库相同。如果有必要的话,2D模组可以加以修整,来支援3D模组中所需的额外功能,象是办识不同的旗标并递送给第二个创造声音的模式,不过造成的缺点,就是无法与上一版的2D程式库相容。

记住一个元件最优先的事情就是完成一个工作,而且要做得很好。这会让它在建构企划的时候,更容易与其他的元件融合与搭配。

  

企划群组

当一个企划刚刚开始时,企划群组的工作就是负责制作出游戏中所需的技术原型。在大部分的状况下,一个企划不可能马上进入全速运转;如果没有先做出一个原型,要进行一个企划会操之过急,除非所有需要的元件都已经由已经由元件群组先写好。那一个企划要如何开始呢?

一旦一个企划开始跑,第一个工作就是确定所有需要的元件已经研发完成。对每一个企划而言都是如此,这表示在结构设计完成的接下来三个月,在进行的工作就是元件以及小量的原型制作工程。这个状况的控管要十分小心,就算是最专业的管理人员,知道这一段期间看不到真正的游戏,也会觉得有点[抽筋]。游戏原型的制作有时可以消除这些恐惧,但不一定保证能奏效。另外,原型也可以用来进行可行性的研究。这个点子真的可以用在游戏中吗?它看起来会好玩吗?在您把企划推到后期,会不会碰上什么技术性的问题?如果会的话,您要先做什么样的准备?

在原型与元件的研发结束,并假定可行性的研究结果中不包括任何需要回头重做的现象,那就可以认真的开始进行这个工作了。

企划群组的工作在于把元件定位并堆叠起来,撰写结合程式码,然后把美术与声音小组提供的图象与音效放入(详见[附属群组])。这个工作也是受到游戏设计群组的控制。企划群组在接受资料时,要确定美术与声音群组所提供的档案,是企划所需要的格式。

企划群组必须与测试群组协力合作,以确保这个企划处于可以发行的状态。什么叫做[可以发行的状态]?这表示这个企划应该随时处于可以继续建造,也可以发行上市的状况。没错,并非所有功能都已经完好了,但是至少在使用者选择了一个未履行的选择时,它不应该就此当机。现存的功能必须正常运作,而且要十分稳定。这个企划将持续性的进行测试,而且任何回报上去的问题都要马上进行处理(如果必要的话,也要通告结构群组)。

游戏设计群组禁止透过结构群组与企划群组互动,而且透过群组的方式将在第13章中讨论。这层限制的作用十分明确:它要预防特色蔓延,并确保时程表是可以达成的。

游戏设计群组可以自由调整游戏,而且有可能透过暴露出来的软体结构来进行调整。只有在需要变更真正的程式结构本身,才有必要透过结构群组进行必要的互动。变更真正的程式应该是很少见的现象,所以企划群组应该挡住游戏设计群组的过度行为。

研究群组

研究群组是在结构群组之下,以松散方式来管理的一群人。研究群组的工作(包括所有事情)在于研发新的科技并制作原型,之后将它放在核心的程式库中,供其他的企划来运用。

这些研究企划应该是以您想要找出来的重要科技创见为主,用完全相同的注意力与精细的程序来实行。详细的记录应该留下来查阅,而这些应该经常回顾并查核。由于它的本质,您必须了解要把研发计划放入时程表,是一件不可能的事。引用一句呆伯特的话:[逻辑上是不可能把未知排入时程的]。

研究群组的目标是找出未知成为已知,然后从群组的研发路线上,移除单一最大的风险。因为所有其他群组用的都是已知的东西,文件模组、所有要开放进行研究的东西,都从重要研发路线上面先行移除了。如果一个企划真正需要的是这一类的研究,那就不要进行这个企划,直到相关的研究已经有了一个成功的结论,而且随同的模组也在元件群组的手中完成再行考虑,要不然就是变更这个企划,直到不再需要依赖这个研发成果为止。举例来说,先使用一个较没有效率的图象引擎,然后在研发出新的版本之后,再切换到新的版本上面。至少用这种方式,在图象研究完全没有成果(或是尚未完工)的局面下,您还有一个产品可以在期限的最后一天交出去。

研究群组的大小是看其他小组的需求来决定的。除非是在很紧急的状况下,这边至少应该有一到二位人员;而且如果您有任何空闲下来的程式设计师(并考虑过其他小组的需求),您应该指派这些人来进行研究。

该注意的是,研究的项目不一定每次都要朝向新的科技走。它也应该朝提升您公司程式设计师的平均技术水准而努力。有很多研发可以查出一个组织中,所有程式设计师的平均水准。很明显的,如果能靠个体人员集中精力,然后在会议中同时提升大家的技能层级,是一件求之不得的事。

举例来说,一位程式设计师接到的工作,可能是去了解或是提升他的知识,找出如何加强一些核心模组的功能;或者他可以进行的是阅读并看完一些技术书藉,来强化他在特定领域中的技能。所以,这些时间并不会浪费掉,任何可以提升公司经难长棒的行为,都是很有价值的工作。研究群组是一个让这种努力成真的试验场。

  

附属群组

附属群组是支援性的群组,对一个企划的成功是不可或缺的。附属群组包括了声音、美术、测试、市场与管理群组,他们对一个特定的企划而言,工作量通常比较少,对其他小组而言也是如此。但这并不表示他们比较不重要。

美术与声音群组将会为游戏提供美术、音效与音乐。这个群组受到结构群组的指挥,而且也直接从游戏设计群组手中得到与企划相关的资料,直接隶属于他们正在处理的企划。在必要的时候,这个群组会受到结构群组的调整,不过并不常见,除非美术群组被要求进行大量冗长或是没有安排时程的工作。

测试群组与结构群组紧密的连结一块,并直接受到结构群组的控制。任何由测试群组进行的测试,将会回报给结构群组。要发行软体的每一块??可能是元件、工具或是游戏??都要经过全面的测试,而且任何明显的缺点或是错误,都会透过臭虫报告提出来检讨,并在必要的时候进行追踪修正。因为这部份需要把研发过程中写出来的软体进行严苛测试,所以这个群组的主要功能将在于整合、系统与相容性的测试。

想要得知这些功能的说明,详见本书的第3章。

市场与管理的结构早就存在于您的公司。所以在这边提到他们的唯一理由,在于他们有必要知道研发软体的过程已经改用软体工厂的模式。产品将会出现不同的情况,而且为了增加技术上的可见性与您的企划相关知识,公司所付出的代价并不是一声[哇!]就可以代表的。这边可能不会有这么多突然跃进的功能,让上层管理人员觉得大吃一惊;因为这种研发模式使用的是稳定、不断增加的技术来获得最后的产品。在研发过程中缺乏明显的进展,有时可能会让完全不懂这种作法的市场或是管理人事的部门觉得惊慌。不过,希望这样的现象不会导致太多的问题,因为管理部门在这一类的问题之前,可能会达成某些协议。管理上必须注意程序之间的不同,还有标准游戏研发技术和这些不同所造成的结果。

  

运用软体工厂的结构与方法

好,您现在知道如何建构一个软体工厂的一切所需知识了。我猜您现在更想知道的,是如何让它运作??至少我希望您会这样想!接下来的章节中,包括让工厂盖起来并开始运转的初始阶段,以及后续的过程。

  

万丈高楼平地起

在这个讨论之中,假设您想要把一个传统的研发环境,转移为一个采用软体工厂的研发环境,而且您想在混乱最小的情况下完成(如果事情看起来很不稳定,或是没有照着计划走的情况下,还有回到原先的作法的余地)。

软体工厂可以逐步的进入您的组织,刚开始时只要创造结构与研究群组。类似的群组可能早就出现在您的组织中,尤其是对研究群组而言。

第一件要做的事情,是创造遍及全公司的研发标准,以及程式与文件的指导方针。这方面大都是一种常识,而且全公司都要普及;让每一个人吹出来的口哨都是同一个调调,才能更容易看懂程式码及文件。这也是实施一些企划可见度提高的行动的时机,但是范围不要太大。提供一个公司内部网站,可以让人们看到规划好时程表的进展,如图11.5。

想要查阅更多的连贯性建议,详见第13章。

在做到这一点以后,这些群组可以开始进行元件程式库的研发并制作原型。要开始时,结构师应该回顾目前企划进展(或是即将完成)的程度,来决定哪些功能比较适合当做核心元件。特别把精力集中在目前正在制作的企划上面。

在经过可行性的研究并测试元件的原型之后,核心元件就应该要开始起跑了。组成元件小组,并让研究小组开始进行元件方面的研发。这个程式码不应该从原型延续下来,因为原型的程式码不具备坚固的程式码基础。原型的程式码只是如它字面所代表的:[原型]。拒绝进一步使用它的诱惑,可以省掉您不少麻烦。把原型的程式码丢掉并重头开始,并利用您在运用原型时学会的知识,做出一些可以吓死人的元件。

在完成初始的元件之后,就可以把它们放入正在进行的游戏发挥力量,来撰写尚未完成的功能。要把已经写好的功能置换掉是很不智的行为,因为它可能包括了重复撰写的程式码,并造成已经排好的时程表延期。从另一个方面来看,如果一个正在进行的企划中,还缺一个音乐光碟的播放程式,那么提供他们一个经过测试、有完整文件的播放光碟模组就是一件好事。确定这个小组了解一件事,就是所有的支援都要经过结构群组,而不是直接与元件群组中的程式设计师接头。这应该不是什么大问题,因为元件群组在没有得到结构群组的同意之下,不会做任何特别的变更。

  

先想,然后再想

先想小的东西,而且不要想太久。从一个可以马上派上用场的元件开始。一旦企划小组开始接近您想的东西时,就可以开始进行更具基础、具预先思考性的元件,是在后续的企划中可以发挥强大效用的。

在有可用的人力之后,把他们拉进工具群组,并开始制作工具来支援更新奇的元件。

现在您已经走了一半的路了,而剩下的过程会自动进行,在企划不断的完结而且更多的研发人员空下来,让您可以把其他的小组填满,合并成沟通骨架。另外,现在也可以看出软体工厂是否适合您的组织,或者您该采用的是另一个方式,也可能把这些方式加以组合。

  

知道使用其他小组的时机-平行研发时间线

每一个程式小组是以时间刚好的基础来组合的。这可以确保拥有最大的弹性,并有助于资源的有效运用。

很重要的一点是确保每一个小组有足够的人力,可以支援相互依赖的小组。这些人员的数量得照着您的组织来进行协调。在图11.6中,说明了群组的依赖关系。如果任何的支援结构很虚弱,整体就会倒塌下来,这很明显要加以避免。小心留意每个群组的强弱,并避免让结构顶端太重,而导致小组的过度负荷。这只会造成更多的麻烦。

所以,这些群组是如何相互合作的?在图11.7中,是一个小型到中型的组织中,简单的工作量与时间关系表。

当一个群组的工作量较小,人员可能会移动需要大量人手的群组中,以鼓励知识的转移。在一个针对初学者的研究中指出,这种群组间的动态,并不一定每次都能象预期的一样,把资讯适当的扩散开来;换言之,这些资讯不会象流行性感冒一样,自动扩散到新群组的人员身上。这种情况通常是发生在有些人在较后期才加入这个企划,但是对较大型的群组而言,群组的本质仍然应该保持原状。每一个小组的人员,应该了解到他们是一个小组的一份子。逻辑上的部门之所以存在的理由,只是为了确保企划的可见性,仍然保持在最透明的状况下。

对较大型的组织而言,有可能(有时甚至是有其必要)在二边跑的情况下进行企划。只要支援基础够强固,这还是不会造成进一步的问题。

  

轮换并重新指派小组人员

软体工厂另一个强而有力之处,在于它可以让所有的组员分享到相同的知识。这样的作法并非没有风险,但如果您不这样做,您会冒更大的风险,如案例研究11.6所示。

  

案例研究11.6 唯我独尊

在一个我最近参与的庞大多人企划(与游戏无关)中,制作中的应用程式极度的依赖一个外部小组撰写的程式库,而这个小组是在另一个工作地点。这个程式库提供了各种复杂的计算功能,正是主要应用程式所需的。

每次提到程式库的其中一个特别部份??我不打算讲出名字,因为我不想再入罪??时,周遭人员都会禁声耳语或是觉得十分敬畏。为什么?这不只是因为这个部份的计算特别复杂;而且它是由一个程式设计师,在十分慎重而单纯的风格中写出来的,整个公司中没有任何人知道它是如何运作。这个特别的程式设计师单人负责这个部份的程式,而且他很早就拒绝撰写相关文件或是说明。

这方面的抵抗是因为他很喜好这种掌握权力的感觉,而事实上他也站在一个十分有权力的地位。他可以向公司寄出黑函要求他想要的任何东西,因为他知道他们不可能把他开除。他是不可或缺的,而且在一些场合中,他也直言不讳。

要控制这个问题,我迎合了他的自尊并建议让他获得升职,他拥有了一间私人的办公室以及一个助理。这个助理是一个从公司外面引进的物件导向专家,他的程式技能让主要的研发者望尘莫及,而他的工作是学习这个禁区中的程式码,并加上注解,但是行事上要特别的小心。

在一些刚开始出现的问题后,这个研发者接受了他新拥有的权力。并全面运用这个新指派给他的助手。但是他不了解的是他太高估本身的不可或缺性。这个专家助手花了六个月的时间研究他的程式码并加上说明,并很快的觉得他可以把程式重写并把疑点敝清。

在接下来的几个月之后,新功能的规格已经画了出来,之后就开始小心在另一边进行测试,是否与原来的功能相同。当所有的臭虫都已经除掉(包括一些原来程式码中的修正),就宣布旧的功能已经可以用新的功能来取代,而且能力更强。当然了,原来的设计者在惊恐之中尖叫,但是在进行挑战,却无法为他保住旧有程式码的优势之下,他没有理由告诉大家为何不使用新版的程式??不但干净、具物件导向功能,而且最重要的是有充份的说明文件,在品质上比原来的程式码好得太多了。

有点让人吃惊的是,在他的权力被移除后,这个研发者成为小组中十分愿意助人的员工。已经有人很明确的告诉他这一连串的行动为何展开,而且如果他再来一次,会发生什么样的后果。所以,他被密切的监视,以确保他能服从其他人的要求。

这整段过程不管是哪一个部分,都不是很让人高兴;但是有时候强悍一点的确有必要。这个风险对企划与公司而言,光是靠一个人而兴盛或是失败实在太过夸张。

在一份相关的记录中,我曾经看过一个研发者对变数的命名方式极不寻常。他会从字母A开始,然后一路写到Z;当他的字母用完之后,他就开始用AA,然后写到AZ,依此类推。最惊人的是,他记得每一个双数名称的作用,就算他的程式中没有任何注解,他也可以在写好数个月以后去修改它,完全不会有问题。当他离开公司时,他写下的所有程式码统统被丢掉一边去,然后重头再来一次。没有人可以了解他编写程式的,而且一切都已经太迟了。

  

在轮换队伍的人员时,很多记载于案例研究11.6中的问题,可以在他们成为大问题时加以避免。您可以经常性的针对不同核心程式群组来轮换人员,但是选择时间上要十分小心??在一个企划即将结束时增加人员,会把所有的事情拖下来。

虽然这听起来很危险,但它可以确保不只一个人专精于特定区域中的程式码;而且,因为文件的撰写过程已经确立,新的研发者要进入状况花不了多少时间。您要的是哪一种:稍微增加研发时间、还是冒着整个企划无法做完的风险,只因为关键人员离职?

把风险尽您所能的分散开来,而且别把您的鸡蛋统统集中在一个篮子里。

  

一个软体工厂的可适性

软体工厂是适合中型到大型的组织。在这个例子中,出现了五个以上的程式设计师以及相关的技术人员。这种规模的组织可以容许您用公平而平衡的方式来分派小组,并让组员的轮换产生良好的效果。

软体工厂也可以轻易的缩小用于较小的组织中。您会失去一些平行效应,而且也无法拥有奢侈的附属群组,但是在制作第二个或是续作的企划时,您所拥有的优势仍然是显而易见的。这种方式的技巧可以让您用来研发软体,而且已经在过去五年的时间,在欧洲不同的客户中,以坚实的C++研发经验打下了基础;°这种状况下的研发速度与效能都十分出众。在可能的情况下,在各种规模的小组上建造出软体工厂结构,得到的结果也会让人满意;就算它会让部份的研发人员,在不习惯的情况下产生反抗心理,而且管理部份也必须等到较为后期才能看到游戏结果,臭虫的修正也有可能拖到游戏发行之后。

  

最后的讯息

在本章提供的方法并不是宇宙中的万灵丹,软体研发方面也没有捷径。如果您在研发小组之中找到了基础性的问题,象是技能不足或是经验太浅,那不管是什么方法都帮不了您,直到您把问题的根源解决掉为止。

另外,您没有必要把这个方法当做戒律。去试试看。看看什么方式有效,哪些无用。把有用的部份留下来,无用的碎块丢掉。靠着决断??以及大量的努力??就可以看到这个方法的结果。

很多其他的方法与技术一样适合于游戏设计,大部份(包括这一个)都是靠着传统程式设计上的努力而发迹。这是一个已经证实可以生产出高品质软体、可以不断的制作续集的系统,每一阶段的产品周期,就可以一点又一点的朝游戏发行迈进。

游戏研发者的特别之处,在于他们会把任何放在他们工作路线上面的限制,以最快的速度打掉。当然了,如果所有的企划都可以拥有水准以上的表现,并在规定的时间完成,这些措施根本就是不需要的。

在各种理由之下,真实世界并非如此,所以在这边传达的讯息应该是[没试过之前给我乖一点!]不管怎么说,结果可能会让您很高兴。

===================第十一章完!=========================
[em17] [em17] [em17]

79

主题

288

帖子

619

积分

高级会员

Rank: 4

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

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

斑竹 设为精华帖!!!

2

主题

58

帖子

64

积分

注册会员

Rank: 2

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

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

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

本版积分规则

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

GMT+8, 2024-12-22 15:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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