《Windows游戏编程大师技巧》(第二版)第1章(上)

本文介绍了Windows游戏开发的历史,从早期的计算机游戏到DOOM引发的变革,以及DirectX的发展。还阐述了游戏类型,如第一视角类、运动类等。同时给出编程技巧,如注意字节对齐、简化代码等。最后列举了开发所需工具,如编译器、绘图软件等,并说明了使用编译器的步骤。

第1章 学海无涯
"Oh, you want some too?!?"
—Hudson, Aliens
Windows 编程就像是一场由来已久并还在进行着的战争。尽管游戏程序员曾经一度拒绝为Windows平台进行开发,但正如《星际迷航》中Borg种族的生物常说的那样:“抵抗是徒劳无功的……”,我觉得这个说法很合适。本章内容将带你快速地巡视一下Windows游戏开发的各个方面:
? 游戏的历史
? 游戏类型
? 游戏编程要素
? 使用工具
? 实例:FreakOut
历史一瞥
一切都可以溯源到第一台大型计算机在60年代问世的时候。现在回想起来,我觉得当时运行在Unix计算机上的Core Wars可列为最早的计算机游戏之一。而当70年代也飞逝而去的时候,全世界的大型和小型计算机上已有了为数不少的冒险游戏。它们大多基于文字和对话,并具有朴素的图形界面。
有趣的是,在那个时代多数游戏都是在线游戏!我指的是,那时90%的游戏是MUD(Multi-User Dungeons,多人的龙与地下城游戏)或者类似的模拟游戏,例如Star Trek(星际迷航)和一些战争模拟游戏。但是,大众还是一直等到一个名叫Pong的计算机游戏出现才开始领略计算机游戏的魅力。Nolan Bushnell设计了Pong,这个单人游戏在一夜之间实实在在地启动了整个视频游戏行业。Atari这个品牌也是那时诞生的。
此后,大约在1976~1978 年间,TRS-80、Apple、Atari 800 等型计算机相继被投入市场,它们是消费者所能买到的第一代计算机。当然,你也可以买到类似Altair 8000 型的组装机,但是又有谁乐意进行它们的组装呢?无论如何,这些计算机有各自的优缺点。在这些计算机中间Atari 800 是当时功能最强大的计算机(我深信可以为其开发Wolfenstein(德军司令部)的一个可运行的版本),TRS-80 最商业化,而Apple电脑的销售情况最好。
渐渐地,这些计算机系统上的游戏开始冲击市场,一夜之间,出现了许多十多岁的百万富翁。在那个时候,只需要一个类似“月球登陆者(Lunar Lander)”或弹球(Pong)类型的好游戏,就可以让它的制作者突然暴富!在那时,计算机游戏开始像真正的计算机游戏,而且只有极少数人知道如何编写游戏。当时绝对没有游戏开发指南一类的书,只是不时有人半地下地出版一些50~100页的小册子,来解答关于游戏开发的谜团。似乎《Byte》杂志上有过一篇文章,但是,大多时候,你必须靠自己。
80 年代是游戏升温的年代。第一代16 位计算机问世,如:IBM PC( 及其兼容机)、Mac、Atari ST、Amiga 500 等等。在此阶段游戏画面开始变得好看了,甚至市面有3D 游戏出现,如:Wing Commander(银河飞将)和Flight Simulator(模拟飞行)。但是那时的PC 机仍然落后于游戏机。截至1985 年,Amiga 500 和Atair ST 作为最强大的游戏机几乎统治了游戏市场。但PC机逐渐以其低廉的价格和广泛的商业用途开始被大众所喜爱。结果就是无论技术或质量如何,PC机终将一统江湖。
在90 年代初期,IBM PC及其兼容机是市场的主流。随着微软的Windows 3.0 的发布,Apple Macintosh寿终正寝。PC是“工作者的计算机”。用户可以用它玩、编写程序、也可以将各种各样的设备连接上去。我想这就可以解释为什么有这么多电脑爱好者迷恋PC而不是长得更漂亮的Mac。一句话,你没法从使用Mac中感受乐趣。
但那时的PC在图像和声音上还依然落后。似乎PC机就是缺乏足够马力,而PC游戏的表现总是和Amiga 或家用游戏机上的游戏的良好表现相去甚远。
上帝说,要有光,于是便有了光……
在1993 年的下半年,Id Software发行了DOOM,作为Wolfenstein 3D(德军司令部3D,最早的3D 共享游戏软件之一,亦由Id 开发)的续作。在家用计算机市场,PC机俨然已成为玩游戏和编程的首选——直到现在也是。DOOM的成功证明了一点,只要足够聪明,人们可以使PC机做任何事。这点非常重要,记住,没有任何东西可以替代想像力和决心。如果你认为一件事是可能的,它就是可能的!
在DOOM热的冲击下,微软公司(Microsoft)才开始重新评价自己在游戏和游戏编程上的地位。它意识到娱乐产业的巨大,并且将只会变得更大,自己若置身这个行业有百利而无一害。于是微软制定了庞大的计划,以使自己得以在游戏业中分一杯羹。
问题在于,即使是Windows 95,实时处理视频音频的能力仍然很差,于是微软制作了一个叫做Win-G的软件,试图解决视频方面的问题。宣传的时候,Win-G被说成是最佳的游戏编程和图形子系统,而事实上它不过只是一堆用于画位图的图形调用而已。更有甚者,Win-G发布大约一年之后,Microsoft竟否认了它的存在,不骗你!
新的囊括图形、声音、输入、网络、3D 系统(95年微软收购了Rendermorphics)的软件套件的开发工作早已开始,DirectX 诞生了。像以往一样,Microsoft 发行人员宣称它将解决世界上PC 机平台上所有游戏编程的问题,还说Windows版游戏将同DOS32游戏运行得一样快,甚至更快。但事实并非如此。
DirectX最初的两个版本作为完整的软件产品来讲具有太多糟糕的缺陷,但这并非指技术而言。Microsoft只是低估了视频游戏编程的复杂性(也低估了视频游戏程序员的能力!)。等到有了DirectX 3.0,DirectX就比DOS工作得更为出色!但是那时(1996~1997),多数游戏公司还是在为DOS32进行开发,直到DirectX 5.0版本发布,人们才转而使用DirectX在Windows上进行实际的开发。
现在DirectX已经升级到9.0版本(本书包含7.0和8.0版本),它是一个难以抗拒的强大的API。没错,你应当换一种方式思考——运用COM(Component Object Model,组件对象模型),在Win32 上编程,同时不再拥有对整个计算机的全面直接控制——但生活就是如此。就像在连续剧《星际迷航》中那样,Geordi(企业号飞船轮机长鹰眼)也无法亲自控制飞船的整个计算机系统。
使用DirectX技术,你可以创建一个有4GB寻址空间(或更多)、内存线性连续的、仿DOS的虚拟机。你完全有理由觉得自己正是在DOS 环境(如果你喜欢的话)下进行编程。更为重要的是,现在你可以很快地为你的程序加入对图像和声音方面新的技术的支持。这都归功于DirectX负有远见的设计和技术。关于DirectX的话题先说到这里,因为很快你就要详细地学习它了。现在先让我们回到历史里。
最早出现的是DOOM游戏,它仅用到软件光栅技术。如图1.1 所示。看一看Rex Blade游戏的屏幕表现,它是DOOM的一个克隆版本。接下来一代3D游戏,如Quake I、Quake II 和Unreal 就有了重大的飞跃。再看看图1.2 中Unreal的游戏画面截图,这个游戏及其类似游戏所表现之好简直令人难以置信。它们都同时包含软件光栅和硬件加速的代码以最大化两者的优势。在这里我忍不住要说一句,如果让一台安装了GeForce 4 TI显卡的奔腾4代2.4GHz电脑运行Unreal II或Quake III,那效果真是棒极了。
图1.1 Rex Blade:第一代DOOM技术的产品
 
图1.2 Unreal:效果奇佳!
 
那么这将把我们带向何方?我们的技术发展越来越先进,几乎无可限量。然而,“奇迹”总会涌现。尽管Quake和Unreal这样的好游戏需要花费数年来制作,但是我相信你也能创作出同样迷人的游戏!
历史一瞥暂告一段落,下面让我们转到核心设计上来。
设计游戏
编写视频游戏最难的工作之一就是设计。的确,3D数学很难,但是策划和设计一个有趣的游戏可谓同样困难、重要。如果一款游戏的确好玩,谁又会在意游戏中是否用了最新的容积光子跟踪算法(volumetric photon traces)呢?
其实,想出一个游戏点子并不特别难。关键是细节、最终实现和视觉效果这些东西确定了游戏的归宿,是被扔到垃圾桶里还是出现在《PC Gamer》的封面?下面略述一些基本概念和我的一些经验和教训。
游戏类型
现在,游戏类型多如政治许诺(有些已经销声匿迹了),但可以将它们归入以下几个类型:
类似DOOM的第一视角类——这些游戏大部分是全3D 游戏,玩家以游戏角色的视角进行观察。DOOM、Hexen、Quake、Unreal、Duke Nukem 3D 以及Dark Forces 都是此类游戏中的佼佼者。从技术上讲,它们或许是最难开发的游戏,而且需要用到极好的技术才能在此类游戏中出类拔萃。
运动类——运动类游戏可以是2D 的,也可以是3D 的,但是近来3D 的运动游戏越来越多了。通常运动类游戏可以一个人玩,也可以多人组队一起玩。运动类游戏的图像质量比起早先已经有了很大的改进。虽然运动类游戏也许不像采用第一视角类游戏那样使人印象深刻,但是它们正在迎头赶上。运动类游戏中的人工智能水平位于所有游戏类型中最先进之列。
格斗类——格斗类游戏通常可以一人或两人玩,用侧视角度或通过一个不固定的3D 摄像机观看角色的动作。游戏人物的肖像一般为2D、2.5D(3D模型渲染而成的系列2D位图图像)或全3D 的。运行于索尼PlayStation I(PSX)游戏机上的Tekken(铁拳)将格斗类游戏在家庭游戏机市场上发扬光大。格斗类游戏在PC机上不是十分流行,这或许要归咎于游戏控制器的界面问题以及需要两人玩才更有乐趣。
街机/枪战/横版过关类——此类游戏就是类似于Asteroids、Pac-Man(吃豆)和Jazz Jackrabbit的游戏。它们基本上都是2D的老式游戏,但正在逐渐地被重新制作成3D游戏。3D版本的游戏规则和2D版本大致相同。
机械模拟类——此类游戏包含各种驾驶、飞行、赛艇、赛车、坦克战斗模拟以及读者能够想像到的任何其他种类。绝大多数此类游戏一直是3D的(虽然直到最近游戏的画面表现才算差强人意)。
生态模拟类——这个游戏类型相当新,除了现实世界本身外,再没有其他类似物了。我说的正是Populous(上帝也疯狂)、SimCity(模拟城市)、SimAnt(模拟蚂蚁)等系列游戏。此类游戏允许玩家扮演主宰各个物种的神,或是控制某种人工系统,无论是一个城市、一群蚂蚁、或是像Gazzillonaire(一个很酷的游戏)那样模拟财政金融。
战略或战争类——此类游戏已经被分为许多子类。可是我并不盲目同意那些分类方法,所以我将具有战略元素(有时是回合制的)的划入此类,如Warcraft(魔兽争霸)、Diablo(暗黑破坏神)、Final Fantasy VII(最终幻想7)等皆属此类。这里我可能有点偏颇,可是因为Diablo虽是即时游戏,它仍然含有大量的策略因素和思考。与Diablo相对照

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值