游戏开发技术第一节概述随着计算机技术的发展,计算机从高技术的神坛上走下来,走进我们的家庭,走进我们的娱乐生活中。在家用计算机的使用中,作为游戏机的使用率是很高的。同时对于游戏迷来说现有的游戏中总有很多不足之处,让人想一试身手作出一套更好的游戏(不过,这可不容易)。作为和亲爱的用户您一样的游戏迷,我也有相同的想法。这样便产生了这套游戏编程基础的教学软件。这套软件主要是面对有一定编程基础的用户,但考虑到很多游戏迷在Windows编程方面还是个新手,所以这套软件中还增添了一章Windows编程基础。在基于Windows的游戏大部分都是支持Directx的,故我用了较大篇副讨论了Directx5.0,并使用基于Directx5.0的例程来讲解游戏编程的思想和实现。由于,Directx6.0中的很多在功能只支持VC,而且在诸多高级语言中C是最适合游戏编程的,所以这套软件中的例程及讲解都是基于VC的。相信,用户通过这套软件的学习将能有信心编出使自己满意的游戏来。自己满意的游戏是否是大部分人都喜欢的呢?是否能成为市场上成功的游戏呢?为此在本章的下面几节中我们将讨论一些非技术的关于游戏总体设计的话题。第二节电脑游戏的发展史60年代早期使用最原始的大型计算机,一小部分程序员开发游戏而其他人认为他们在做研究。在MIT的实验室里开发了SpaceWar和其它早期的游戏。1973年到1975年NolanBushnell建立了Syxygy。在市场上出售SpaceWar的Arcade版,但失败了。在1975年下半年,推出了Pong,并使之成为一个非常流行的游戏,之后,他重新命名公司为Atarh他们始创了我们今天所熟知的游戏工业。1960年后期到1970年早期更多的程序员使用大型计算机开发游戏;WilliamCrowther开发了流行游戏Adventure。1976年Rushnell以$2,600万将Atari出售给WarnerCommunications。1980年其它游戏系统依次登台,象Pllillins的Oddessy和Mattel的Intellivision,目标都是希望取代Atari。一些小的个人计算机开始出现,但视频游戏仍处于领先位置。1977年Atari推出了Atari2600VCS,家庭视频游戏行业兴起!一个名叫Apple的小公司出售一种计算机Applel,但没能引起人们的注意。1979年Atari公司的一些项尖的程序开发员从对Atari的意见不一致发展到公开的不满,成立了自己的公司Activision,其它第三方开发公司相应出现。1981年IBM推出了IBMPC。1982年Atari开始滑坡,视频游戏市场处于大萧条状态。Atari的主席RayKassar宣布销售已下跌了50%。个人计算机应时出现,许多新型计算机游戏开发者纷纷出现,其中有些成为了专业开发队伍,新出现的知名公司包括SierraOn-Line、Broder-bund、Synapse、Sirius及StrategicSimulations。ElectronicArts成立,并成为现代游戏公司的楷模。1984年Apple推出新型计算机产品Macintosh,但该系统缺点是启动馒,此时该系统的购买者和软件开发者的主要目的不是开发游戏。1983年伟大的视频游戏跌至最低点,Mattel宣布其Intellivision产品损失$22,500万。1985年Nintendo由于投入一种新的视频游戏产品—任天堂娱乐系统,而重新繁荣了家庭视膝游戏市场。16位的计算机的革命继续,Atari的产品AtariST投入市场是对CommodOre一个沉重的打击。1986年CommodOre极力宣传并推出Amiga计算机,该计算机是由Atari硬件设计师JayMiner设计的,最初是想作为下一代的视频游戏系统,但由Commodore投资的这种机型却成为机器Commodore64的继承者。不幸的是,巨大的市场打击和其它的开发埋没了该系统的远大前程。Sega推出了SegaMaster系统,在技术上要优于NintendoEnter。tainment系统。由于Sega忽视第三方开发者,没有征集足够多的软件支持该系统,所以没有取得足够大的市场支持而失败。1988年计算机行业从8位计算机转向16位系统,新出现的视频游戏控制台引起了新的合并,Cine。maware、Epyx等公司处于困难时期。1987年游戏变得更复杂了,更多的公司转向集体开发,ElectronicArts推出了第一个集体开发产品SkateorDie1IBMPC系列,由于具有了好的图形适配器,开始成为可采用的计算机游戏平台。1989年新的16位系统初次登台,最值得注意的是Sega的Genesis。当Sega由于广告宣传和大量的EA运动游戏,占据控制台市场的领先地位时,任天堂(Nintendo)觉悟已晚,损失惨重。1990年Amiga和ST在市场上基本灭迹,PC系列和控制台成为主要的游戏开发平台。ElectromcArts开始成为主要的游戏开发和发行者。1992年PC游戏开始流行,在它迅速发展的几年里,其它一些计算机游戏平台被淘汰,把PC游戏市场推向一个新高度。1991年Nintendo的产品Super一NES首次推向市场,16位之战的全面爆发促进了许多控制台系统的销售。1993年Pentium芯片出现,Microsoft预先展示了它的新产品Windows操作系统,代码名为Chicago。尽管PC迅速发展,Sega和Ninter1do继续处于领先位置,控制台系统占领了世界游戏市场的80%。1994年Panasonic推出了Real-3Do游戏机,预示着32位控制台系统的出现。Atati推出Jaguar32位游戏机。但饬礁霾罚ㄓ绕涫?DO)都不很成功。IdSoftware推出了Doom,使人们意识到可以使用共享软件发行方法。1995年Sega生产了Sega32位控制台系统。Sony推出了SonyPlaystation32位控制台系统。Microsoft推出了Windows95和windowsGameSDK,使得大量的游戏开发转向Windows乎台。Internet和WordWideWeb流行,大量的用户上网。1996年Nintendo推出了UItra64。大范围的多人游戏已经出现。多媒体、3D和虚拟现实等取代而成为热点,主要的新技术和产品包括Java1ShockWare、JavaScript、Netscape2等等。1997年至今Iintel推出MMX技术,并基于此推出PentiumMMX和PentiumⅡ处理器。AMD和Cyrix也基于MMX技术推出了K6和M2处理器。游戏开始大量使用MMX技术。PC与其他的控制台系统在性能上已相差不大了。AMD推出3D-NOW技术,使其基于3D-NOW的处理器K6-3D在图象处理的方面超过PentiumⅡ。第三节游戏的组成要素游戏设计涉及一个置于所有其它要素的中心的东西——这就是交互性,使游戏从其它的创造性的媒介(如艺术、电影、音乐和书等)中分离出来的这一要素可以在游戏者同游戏的交互中体现,对于游戏这种媒介的驱动力量来自于游戏者的决策,换句括说,是游戏者的行为,而不是媒介本身。你不要仅仅看或仅仅听一个游戏——你应该控制它。设计者必须创造一个诱使人们去玩的产品,同时还要提供故事线索、情绪感染、真实的声音和其它创造性的媒介给予的特性。这是比较高的要求,但是这就是使游戏开发如此有趣的一个原因。玩游戏就意味着决策。因此,我们的游戏需要创造让游戏者不得不决定做什么的情境,这样,他或者她才能执行所要求的行为。在一些情况下,决策越具有挑战性,这个游戏就越具有感染力。此外,游戏者越能够影响游戏的结果,这个游戏就越能够吸引他们参与。当坐下来设计一个游戏的时候,要努力创造有趣的交互,还要努力在创设的情坎中为游戏牙提供作出决策的容易的方式。然后,提供将进步引出新情境的有趣结果。这个完整的过程要一进一遍地进行,直到取得最终的结果。1.影响结果交互性的一个最重要方面就是游戏者能够影响游戏的结果,并对结果具有最终的控制权,一个游戏者坐下来玩游戏时希望能够在过程中有所进步,或者能够挽救世界,或者能够达到最高的等级水平,因此,在设计一个游戏时,你必须一开始就让游戏者明白,他或者她能够对结果改变到什么程度。当然,你不需要预先告诉游戏者他们能够改变什么结果,或者他们怎样改变它;你只需让他们知道:他们的确能够影响结果。游戏设计者用于创建好的游戏的一个重要概念叫做多重结果。多年以前,大部分游戏只提供两种结果——成功和失败,游戏者结束了这个游戏就是成功者,否则游戏者被消灭。然而,许多现在的游戏,尤其是交互式故事或者RPGs,就可以有几个完全不同的结果,这些不同的结果可能让游戏者进入完全不同的新的冒险,或者进入新的交互式故事。例如,如果你正在玩一个战争游戏,而且,你在某一场战斗中成功了,你将可能获得军衔的提升,到上尉、少将或将军。注意:在设计游戏时,给予游戏者通过他控制游戏来决定的各种各样的结果是十分关键的,只有这样才能让人们花时间去玩。2.成就的角色。玩任何游戏的根本目标都是获得什么东西,不管怎样设计,在任何游戏中成就是一个基本要素,当然,成就有许多不同的形式。可以简单到是打败一个对手、得高分或达到较高的等级水平。当你在游戏中设计成就因素时,可以在许多不同的水平上进行,你可以提供多重的成就目标;你也可以提供渐进的成就水平,例如你可以在每隔三个等级之后的等级结尾以不同的“主要怪物”作为特殊对手,在整个游戏的结尾则以“最大的物”,作为对手。不管你的游戏提供了什么形式的成就,成就是游戏过程最主要的转折点。当然,成就并不一定意味着赢,还应该是一个游戏逐渐走向最终结果的自然的前进,一些游戏提供了实际的结束作为成就,还有一些游戏成就是绝对的成功(特别是体育游戏),如赢得一场比赛或获得一个冠军。但它们也可以有不同的成就等级。重要的是游戏中成就的获得不应该有大的跳跃,而应该是进行一定的时间后发生的渐进的过程。另外,我觉得一个游戏应该有3/4的潜在游戏者能够获得100%的成就水平,毕竟,游戏不能因为太难而被认为违反一般潮流,游戏者喜欢的挑战是那些可以征服的挑战。人类的本性就是希望获得成就,如果人们去做一些不能获得成就感的事情,这是不符合人类本性的。这就是说,不要设计一个游戏,而又故意过早发布提供线索的资料。3.失败的角色。“游戏结束(Gameover)大概是计算机游戏带来的最不好的一个短语,在这以前,基于竞争成绩或者简单成就的游戏都包含有各种各样的失败程度。4.改变情景许多游戏允许游戏者控制或改变玩的情景或者参数。游戏者经常喜欢或需要修正游戏的可玩性,这不仅包括简单地改变他们能够拥有的“生命(lives)的数量,而且包括改变一个战争游戏中的所有数字、参数。通过改变情景,设计者应该提供游戏者如下特性:a.修正游戏难度的能力b.改变玩的环境的能力c.修正等级水平或游戏角色的能力5.问题解决。我们已经花了一些时间讨论成就和失败,这些原则的具体例子可以在问题解决中发现,而问题解决又经常与智力难题类游戏(puzzles)相联系,而且也是其它类游戏包括冒险游戏、RPG、策略游戏中的关键要素。问题解决是给游戏者清晰定义一些挑战,然后通过解决问题的方式来进行交流。这佯,游戏设计的一个主要工作就是创建一些有趣的和富有挑战性的问题,这些问题具有符合逻辑的解决方法,使游戏者能够最终通过玩游戏解决问题。如果方法太简单,游戏者将迅速完成,然后再去玩其它的一些游戏(也许,这些游戏还是你的主要竞争者)。另一方面,如果解决问题的方法太难,游戏者可能由于挫折而放弃。这听起来容易,但是,事实上许多游戏对于游戏者仍就具有一些不合逻辑的方法,或者问题太难,游戏中间题解决直接与游戏的成功或失败相联系,人们不介意失败的危险(这是挑战的一部分),但是,如果不可能获得成功或者根本就不可行,这个问题就是无法解决的,也就不再成为问题,而是一个绊脚石。在游戏中一个与呈现问题相关的有趣的事情是创设问题情境。你创设的问