img
share 分享

Python游戏编程快速上手(第4版)

作者:[美]Al Sweigart(斯维加特)

出版社:人民邮电出版社

ISBN:9787115466419

VIP会员免费 (仅需0.8元/天) ¥ 44.16

温馨提示: 价值40000元的1000本电子书,VIP会员随意看哦!

电子书推荐

更多资源 展开

游戏编程精粹3-随书光盘源代码 评分:

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《游戏编程精粹3》一书的随书光盘代码 游戏编程精粹3 基本信息 原书名: Game Programming Gems 3 原出版社: CHARLES RIVER MEDIA 作者: Dante Treglia 译者: 张磊 丛书名: 游戏编程精粹 出版社:人民邮电出版社 ISBN:7115108706 上架时间:2003-7-25 出版日期:2003 年7月 开本:16开 页码:616 版次:1-1 所属分类:计算机 > 游戏 > 游戏编程 编辑推荐   本书是“游戏编程精粹”系列的最新一卷,充满了即学即用的大师技巧、创意、建议和代码,并且提供了成功商业游戏中的许多解决方案。本书覆盖了游戏开发的所有关键阶段,融合了70位顶尖高手的开发心得,每章还由一位该领域的专家编辑把关,以确保内容的原创性、准确性和实用性。 内容简介   本书汇集了近70篇最新的游戏编程大师的技术文章。这些文章都来自于实际经验的积累,各有独到之处,依其所属领域不同,全书划分为通用编程技术、数学技巧、人工智能、图形、网络和多玩家游戏、音频处理六章,覆盖了当今游戏开发中的所有关键技术领域。   本书适合游戏开发专业人员阅读。对于入门级的读者,本书指出了您将要面临的各方面挑战,并提供大量的参考资料和资源助您提高专业知识和技术;对于专家级的读者,本书中实用的新思想与新技巧将帮助您节省大量游戏开发的宝贵时间。 作译者   Thor Alexander thor@hardcodedgames.com Thor Alexander在过去的10年中致力于为游戏界创造更为可信的智能人物角色。最近,他创建了Hard Coded Games公司(位于德克萨斯州奥斯汀),为在线游戏创造具有艺术效果的人工智能和机器学习。在此之前,他在Electronic Arts、微软还有Xatrix Entertainment担任过资深人工智能开发和设计人员,同时他还是Asgard Interactive的创始人之一,并且是Harbinger Technologies的CEO。他是hyperSim智能人物系统和GoCap(Game Observation Capture)的发明者,后者是一个机器学习过程,它可以通过观察真人玩游戏的过程来训练人工智能的人物. Jason Beardsley jbeardsley@ncaustin.com Jason自从1996年以来就在为在线多玩家的游戏编写网络和服务器程序.他在麻省理工学院(MIT)和Binghamton大学获得了计算机科学的学位.现在,Jason在NCsoft/Austin工作,致力于下一代在线游戏. Oscar Blasco oscar@asidesoft.com Oscar从孩童时代起就开始编程了,并一直坚持自学,提高自己的技能.他在Crytek Studios工作,致力于角色开发,同时担当研发程序员.现在他主要关注的是完成学业和其在Aside软件公司中新的Titan2引擎上的开发工作. Ben Board ben_boaid@yahoo.com Ben走上编程这条路主要得归功于其父亲,一个喜欢ZX81、BBC Model B与Amstrad 8086个人电脑的人.随着乳牙而去的是Ben的BASIC编程经历,从12岁起,他就开始学习C,直到他在剑桥大学学到了OOP.经过一次与现实世界不那么愉快的接触以后,Ben找到了自己的人生目标,他在1997年加入了Bullfrog Production的Theme小组,编写了Theme Park World的人工智能代码.在2000年后半年,他和别人一起组建了Dogfish Entertainment公司,担任了公司处女作的主力开发员.但是命运受挫,2002年初公司倒闭了.不过失败是成功之母,他现在很自豪能为Godalming最好的游戏Big Blue Box出力,完成Project Ego的后期制作,他认为这个游戏甚至比3D怪兽迷宫还要好. Martin Brownlow mbrownlow@shiny.com Martin10岁时就在朋友的ZX81上开始编程.之后,Martin开始在英国的Virtuality公司工作,编写虚拟现实街机的游戏.三年之后,他搬到了美国,开始为Shiny Entertainment公司工作.在那里,他经手开发了好几个游戏,包括MDK与Sacrifice,现在他正在忙于Matrix视频游戏. Phil Burk philburk@softsynth.com Phil Burk既是一个计算机编程人员,23也是一个设计人员,23他精通的领域是人机交互与试验型的音乐系统.a刚开始的时候,23他制作的是家造模拟合成器与计算机,23主要关注于吉他的处理.a1981年,23在Mills大学的现代音乐中心,23他开始与LarrycPolansky以及DavidcRosenboom合作.a他们一同开发了HMSL(HierarchicalcMusiccSpecificationcLanguage,23结构化音乐规范语言),23全世界的作曲家都通过它来进行实时计算机音乐的开发.aHMSL是一个基于Forth的面向对象的合成语言,23支持MIDI与基于DSP的合成.a后来Phil进入了3DO公司,23为一个视频游戏平台开发了第一个基于DSP的声音合成器.a在CagEnt,233DO的一个子公司,23他设计了一个定制的、RISC风格的DSP(数字信号处理器),23专门用来处理基于单元生成器的合成与音效.a现在,23他正在开发JSyn,23这是一套针对Java的合成API,23它可以让作曲家将交互的电脑音乐片断添加到网页上去.aPhil曾在很多项目中当过咨询顾问,23包括为数字电视ASIC设计音频模块以及使用Java开发MIDI工具和与电话相关的应用程序.a 0125 0126JohncByrd 0127jbyrd@well.com 0128JohncByrd现在在ElectroniccArts公司工作,27在Freekstyle项目中担任资深项目经理.a在此之前,27他在Sega公司担任开发人员的技术总监,27在那里,27他创建了SegacDreamcastc(Katana)c的SDK,27支持了数以百计的游戏开发项目.a他也在3DO担任过资深工程师的职位.aJohn是Bosslevel(一个网上游戏业界论坛)的创始人.aJohn在哈佛得到了计算机科学学位,27并能弹得一手好的班卓琴.a 0129 0130DrewcCard 0131dcard@ati.com 0132DrewcCard在ATI工作,31是3D应用研究组的软件工程师,31他的主攻方向是基于着色器的渲染技术的应用.a他参与了SDK的开发,31同时在演示引擎上也做出过贡献.aDrew是南卡罗来纳大学的研究生.a 0133 0134ChristophercChristensen 0135cchristensen@naughtydog.com 01361982年,35Christopher在一台ApplecII+机器上开始了自己的编程生涯.a1994年,35在获得了计算机工程硕士学位之后,35他找到了一份工作,35在InterplaycProductions公司开发PC机上的角色扮演游戏.a从那以后,35他就一头扎进了游戏业界.a今天,35他在加利福尼亚州圣莫尼卡市的NaughtycDog公司担任程序员.a 0137 0138WagnercCorrêa 0139wtcorrea@research.att.com 0140WagnercCorrêa是普林斯顿大学计算机科学系的博士.a他在计算机图形方面已研究了近10年,39其硕士论文是关于面向对象的游戏引擎.aWagner已经发表了好些学术论文,39其中有两篇被近期的SIGGRAPH收录.a他是普林斯顿大学里图形与几何模型研究组的一名成员,39现在正在开发一套真实世界环境的游览系统.a 0141 0142MarkcDeLoura 0143madsax@satori.org 0144Mark是“游戏编程精粹”系列丛书的创始人.a他现在任职于索尼(美国)计算机娱乐公司,43职位是开发人员协调经理,43正在努力引导开发人员达到SIMD的理想境界.a他也曾在任天堂(美国)公司当过主力软件工程师,43“耕耘”代码,43亦有过在GamecDeveloper杂志担任主编,43剪裁文章的经历.aMark现在仍然是虚拟现实的“铁杆球迷”,43他仍将实时在线,43在多玩家第一人称视角游戏里面与你对战.a 0145 0146ThomascDemachy 0147thomas@abunth.com 0148当Thomas还是一个小孩的时候,47他母亲就在他的枕头下面发现过程序清单.a学习了几年科学与高性能计算之后,47他离开了阳光明媚的法国里维埃拉地区,47开始在巴黎附近的TituscInteractive工作室担任程序员.a最近,47他参与了基于PlayStationc2开发的Robocop的项目.a除了视频游戏以外,47他主要的兴趣大都与大海有关,47例如航行或者是在世界的各个岛屿之间旅游.a 0149 0150MikecDucker 0151mike@ducker.org.uk 0152Mikec16岁才开始编程,51开始一直用TurbocPascal,51直到在埃塞克斯大学的人工智能学位攻读期间发现了C++.a毕业以后,51正在他茫然不知该选择什么职业的时候,51天上掉下了一个工作馅饼,51他在1997年的晚期在AncocSoftware公司找到了第一份游戏开发的工作.a做了3年图形用户界面、图形与人工智能的开发以后,51Mike重返校园,51进入了苏塞克斯大学,51攻读人工生命的硕士学位.a之后他作为人工智能程序员重返游戏界,51主要在DogfishcEntertainment公司与BencBoard一起工作,51直到公司倒闭.a在进入Lionhead工作室之前,51他与RichardcEvans一起工作,51开发着一个迄今尚未公布的游戏.a 0153 0154EddiecEdwards 0155eddie@tinyted.net 0156Eddie在剑桥大学克里斯特学院学的是数学.a在1994年进入视频游戏的领域给Wolfensteinc3D做移植之前,55他一直在软件工程的领域里工作.a从那以后,55他加入过好些工作室,55参与过好几个游戏的制作,55包括(最近的)NaughtycDog公司的JakcandcDaxter.a他现在正在英国筹建自己的工作室.a 0157 0158CharlescFarris 0159charlesf@vr1.com 0160CharlescFarris在VR1cEntertainment(Boulder,59CO)公司担任资深软件工程师.a自从1998年加入游戏业界以后,59Farris就当过HiredcGuns与Nightcaster的人工智能指导,59现在他正在忙于NightcastercII的人工智能系统.a他获得过佛罗里达理工学院的海洋工程与应用数学的学士学位,59在科罗拉多矿业大学获得了应用数学的硕士学位.a 0161 0162TomcForsyth 0163tomf@muckyfoot.com 0164自从在他的ZXcSpectrum上看过Elite之后,63Tom就一直沉迷于3D图形,63而且总是可以把硬件的最后一滴油水给轧出来.a他为Spectrum、SinclaircQL、AtaricST、Segac32X、Saturn、Dreamcast与PC都编写过绘制三角形的程序,63以至后来他一看到它们就恶心.a谢天谢地,63现在总算可以让硬件来帮我们画这些玩意了.a自从在3Dlabs度过了编写3D图形卡驱动程序的惬意的两年生涯之后,63Tom转到了MuckycFootcProductions公司——这是一个在英国Guildford的游戏公司,63现在正沉迷于位移地图(displacementcmaps)与WesleycSnipes皮肤的BRDF.a 0165 0166DavidcFox 0167dfox@citycom.com 0168David为NextcGame公司服务,67致力于创建Web游戏与无线多玩家游戏.a他是好几本畅销书(这些书是与因特网技术有关的)的作者,67而且也经常在Gamelan、Salon.com与Developer.com上面发表文章.a过去3年中,67David一直在Sun微系统公司的JavaOne大会上发表关于Java游戏编程主题的讲话,67在过去两年中,67他还曾经获得过Motorola-NextelcDeveloper'scChallenge的奖励.a 0169 0170ByoncGarrabrant 0171byon@byon.com 0172ByoncGarrabrant从1988年开始成为职业游戏开发员,71他刚开始的工作是将街机的游戏移植到PC上面去.aByon在Interplay公司开发了Castles、CastlesⅡ与ConquestcofcthecNewcWorldc游戏.a在1997年他加入了Westwood工作室,71参与领导开发了Commandc&cConquer;:cRenegade.a 0173MiguelcGomez 0174kikomu@seanet.com 0175MiguelcGomez是SAAM研究所的一个软件工程师,74是一个医学研究建模与分析软件的开发人员.a他以前的工作经历包括PGAcTour‘96(ElectroniccArts公司)的图形与物理编程,74在Activision公司开发Hyperblade,74在微软开发Baseballc3D,74以及在Psygnosis开发DestructioncDerbyc64,74他在华盛顿大学获得了物理学士学位与应用数学的硕士学位.a 0176 0177RobincGreen 0178robin_green@playstation.sony.com 0179Robin在游戏业界工作了7年了.a起先是在ElectroniccArts(英国)公司,78然后进入了BullfrogcProductionsc的研发部门,78最后加入了索尼(美国)计算机娱乐公司的研发部门.a他为DungeoncKeeperc2与SimcThemecPark做出过技术贡献与支持,78另外还在SIGGRAPHc2000上发表过控制行为(steeringcbehaviors)的教材.a同时他也是C++cLanguagecPolice(ConstcCorrectness分部)的一名全职成员.a 0180 0181JimcGreer 0182jamesfgreer@mindspring.com 0183JimcGreer在1991年加入了OrigincSystems公司,82投身于游戏业界,82在那里他参加了UltimacⅦc与UltimacⅧc的开发.a随后,82在1995年,82他在德克萨斯的奥斯汀与人一同创建了一个游戏工作室,82为Activision公司开发了Netstorm:cIslandscatcWar游戏.aNetstorm是一个在线的实时策略游戏,82据C-Net的游戏评论者说,82享有“有史以来无人购买的游戏之最”的美誉.a自从那以后,82他就开始为shockwave.com与ea.com制作网上游戏,82此外,82他还参与了ShadowcGarden,82这是一个交互式艺术的项目(请参见网站http://www.mine-control.com,82上面有更多的相关信息),82同时他还是一个扑克竞赛迷.a 0184 0185SorencHannibal 0186sorenhan@yahoo.com 018711岁的时候,86S?ren就在一台Commodorec64机上开始了自己的编程生涯,86在接下来的8年中,86他把大部分晚上都花在开发演示程序上了,86频繁参加了各个演示场景.a1993年,86他的爱好最终成为了他的职业生涯,86当时他从丹麦搬了出来,86加入了游戏业界.a自从那时起,86他在CorecDesign公司与Scavenger公司当过主力程序员,86同时也得到了自己的学士学位.a现在,86他正在兴致勃勃地在ShinycEntertainment公司为自己的第二部作品开发人物技术(characterctechnology),86这是一个得到Matrix电影授权的游戏.a 0188 0189MichaelcHarvey 0190michael.harvey@intel.com 0191Mike是英特尔实验室里面图形与3D技术方面的资深软件工程师.a现在,90他正在研制下一代基于Web的3D引擎中的仿真技术.a 0192 0193BriancHawkins 0194winterdark@sprynet.com 0195BriancHawkins在卡内基·梅隆大学获得了数学学士与计算机科学学士的学位,94然后在Justsystem匹兹堡研究中心投入计算机图形方面的研究.a两年之后,94他希望能自主开发一个成品,94于是便横跨美国大陆,94到了洛杉矶,94加入了Activision公司,94在这里他是StarcTrek:cArmada游戏的核心人员与用户界面指导.a此外,94他还参与过Civilization:cCallcTocPowercandcCallcTocPowerc2的开发.aBrian现在是Seven工作室Defender游戏的主力开发人员,94此游戏是其经典版的一次重新开发.a他的兴趣爱好非常广泛,94你可以与他海阔天空地大侃.a 0196 0197GarincHiebert 0198ghiebert@creativelabs.com 0199GarincHiebert是创新实验室公司的一名开发人员,98在那里他参与了多个项目.a他曾经参与过几个游戏中的音频编码开发,98是OpenAL的一个积极参与者.a他一直在开发苹果机上的OpenAL代码库,98进行跨平台的代码测试,98同时也在编写OpenAL开发人员指南.a 0100 0101DancHiggins 0102dan@stainlesssteelstudios.com 0103身为EmpirecEarth中人工智能小组的开发成员之一,102Dan深感自豪,102因为这个小组里面有天才的BobcScott与聪明的ChadcDawson.a他的曾为历史频道、艺术与娱乐频道以及传记频道开发高性能的搜索引擎.a在此之前,102Dan做过一些COM集成架构方面的开发,102但是只有在喝了几杯之后,102他才会带泪回忆当时的经历.a在EmpirecEarth中,102他负责的是寻径、地形分析、电脑玩家的军队以及动物的人工智能.a他是Frostburg州立大学(马里兰)的计算机科学研究生毕业,102对C++、游戏、STL以及优化都有着强烈的兴趣.a 0104 0105GregcHjelstrom 0106greg@westwood.com 0107GregcHjelstrom自从1995年以来就在Westwood工作室工作了,106他参与制作的游戏包括Commandc&cConquercTiberiancSun;等.a他最近的工作是参与领导Commandc&cConquer;.cRenegade游戏开发.a 0108 0109NatycHoffman 0110naty@westwood.com 0111NatycHoffman在Westwood工作室是一个资深图形开发员,110在那里他花了5年的时间为EarthcandcBeyond,110这个巨量多玩家空间游戏制作漂亮的空间爆炸(spacecexplosions).a在此之前,110他在英特尔做微处理器的工作,110在那里他是带有MMX指令的奔腾处理器的架构师,110而且为MMX、SSE与SSE2这些扩展指令集做出了很多贡献.a他曾在GDC上发言,110也曾在GamecDeveloper杂志上面发表过文章.a 0112 0113DoncHopkins 0114xardox@mindspring.com 0115DoncHopkins是一个程序员兼用户界面设计员,114他曾经在多个平台上研究和开发过交互式图形系统.aDon曾在马里兰大学并行处理实验室、异质系统实验室、人机交互实验室、图灵研究所、卡内基·梅隆大学计算机科学系、Kaleidac实验室以及IntervalcResearchc公司,114担任过临时研究开发人员与用户界面的开发人员.a此外,114他还当过商业软件开发人员,114实现过ThecSims的人物动画系统与用户界面,114将SimCity移植到了Unix平台上,114用ScriptX为Kaleida实验室创建了交互式的电视与Web的开发工具包,114与DavidcLevitt一同为Levityc和IntervalcResearch开发与使用过实时可视化数据流的开发语言.aLevitt与Hopkins建立了一家叫做ConnectedMedia的新公司,114在那里他们正在开发一个称为ConnectedTV的消费产品,114这是一个个性化的电视娱乐指南,114另外还带有为Palm与其他设备准备的电视遥控装置.a 0116 0117KennethcHurley 0118khurley@nvidia.com 0119Kenneth于1985年在一家叫做Dynamix的公司开始了他的游戏生涯.a他也曾经在Activision、ElectroniccArts与英特尔工作过,118现在则在NVIDIA公司从事开发人员关系协调的工作.a当前他的工作是开发与研究以及指导开发人员如何使用NVIDIA的新技术.a在游戏业界,118他参与开发的游戏有SwordcofcKadashc(AtaricST)、Rampagec(PC,cAmiga,cApplecII)、CopycIIcST、ChuckcYeager'scAircCombatcSimulatorc(PC)、ThecImmortalc(PC),118以及WingcCommandercIIIc(PlayStation).a在NVIDIA的这段时间里面,118他参与过以下包与演示系统的开发:NVASMc(Geforce3c顶点/像素着色器的汇编器)、NVTunec(NVIDIA的性能分析工具包)、DX7的折射演示、cMinnaert光照演示、粒子物理的演示、刷过了金属色效果、云层覆盖的演示以及具有照片效果的表面演示.a他在马里兰大学获得了计算机科学的学士学位.a 0120 0121PetecIsensee 0122peteis@xbox.com 0123Pete从事开发生涯已经快整整10年了.a他参与发行的游戏有CD-ROM上发布的动作类与冒险类的游戏,122也有一般的网上游戏,122其工作过的平台有PC机、MAC机与XBox.a他现在是Xbox高级技术小组中的一员.a他获得过计算机工程的学位,122而且远在C++的模板流行之前,122他就是一个模板高手了.a 0124 0125JohncIsidoro 0126jisidoro@csa.bu.edu 0127JohncIsidoro是ATI里3D应用研究组的成员,126同时也在波士顿大学攻读计算机科学的博士学位.a在ATI,126他参与开发了Radeonc8500技术的演示与屏幕保护程序以及很多其他的应用程序.a他的研究兴趣是实时图形、着色器开发、基于图像的渲染、多视图重建、非固定化的区域跟踪以及通过新颖的方法来使用图形硬件.a他在ICCV'98、CVPR'00、《游戏编程精粹2》与ShaderX(Wordware出版公司)上都发表过文章.a 0128 0129JancKautz 0130kautz@mpi-sb.mpg.de 0131Jan正在德国Saarbrücken的Max-Planck-InstitutcfürcInformatik攻读博士学位,130其主要研究领域是使用图形硬件实现交互式的真实光照与着色.a 0132 0133PaulcKelly 0134paul_kelly2000@yahoo.com 0135PaulcKelly在中佛罗里达大学获得了计算机科学的硕士学位.a他曾经参加过NCAAcFootballc'99、DiecHardcTrilogyc2:cVivacLascVegas以及DukecNukem:cLandcofcthecBabes这些游戏的开发.a他在开发方面的兴趣是3D图形与人工智能.a在不编程序的时候,134Paul比较喜欢踢足球.a 0136 0137AndrewcKirmse 0138ark@alum.mit.edu 0139Andrew是Meridianc59c(1996)的指导者与发明者之一,138也是StarcWars:cStarfighterc(2001)的图形开发人员.a他在麻省理工学院(MIT)获得了物理、数学与计算机科学的学位.aAndrew现在在LucasArtscEntertainment公司工作.a 0140 0141JamescKlosowski 0142jklosow@us.ibm.com 0143JamescKlosowski是IBMcThomascJ.cWatson研究中心的一名研究员.a他的主要研究方向是计算机图形、视觉与计算几何应用.a1992年,142James在Fairfield大学获得了计算机科学与数学学士的学位,142在1994年与1998年,142他分别获得了纽约州立大学石溪分校的应用数学硕士与博士的学位.a他在计算机图形方面的兴趣包括大型数据的交互视觉、碰撞检测、体渲染以及自适应网络图形.a最近,142他主要在研究可视裁减、复杂几何模型的简化以及分布式数据的并行渲染.a 0144 0145AdamcLake 0146adam.t.lake@intel.com 0147AdamcLake是英特尔架构实验室(Hillsboro,cOR)的一名资深软件工程师.a在加入英特尔之前,146他在ChapelcHill的北卡罗莱纳(UNC)大学获得了计算机科学的硕士学位,146其方向是计算机图形与虚拟现实.a他在使用MicrosoftcVisualcStudio进行C++开发与GNUcC/C++开发上面具有超过10年的经验.a在进入UNC-ChapelcHill学习之前,146他在LoscAlamos国家实验室工作,146具体是在应用理论物理与计算科学方法(XCM)组里.aAdam在Evansville大学获得了计算机科学的学士学位与数学的第二学位.a在那里,146他的工作是为物理学家开发计算机辅助设计的应用程序,146程序的名字叫“Justine”.a你可以通过网址http://www.cs.unc.edu/~lake/vitae.html获得一些关于他的信息.a 0148 0149JeffcLander 0150jeffl@darwin3D.com 0151JeffcLander是Darwinc3D公司的创始者,150此公司的目标是将实时3D图形推向更广的市场.aJeff在视频游戏、电视与电影舞台领域当程序员的历史已经长达10年了,150在这些地方他开发了很多实时图形应用程序.aDarwinc3D有很多游戏与娱乐方面的客户,150包括Activision、MGMcAnimation、QuantumWorkscCorporation,150以及Rhythm与Hues工作室.aJeff曾在GamecDeveloper杂志上大量投稿,150也曾经在很多业界贸易展览会与会议上面发表过演讲.a 0152WilliamcLeeson 0153Wleeson@indigo.ie 0154自从1996年开始,153William就以自己在全局照明(globalcillumination)与并行渲染方面的论文让学术界感到震惊了.a他在2001年从都柏林的三一学院获得了博士学位,153在其后的几年里,153他一直在研究人物动画.a 0155 0156EriccLengyel 0157lengyel@terathon.com 0158EriccLengyel是TerathoncEntertainment公司(位于加利福尼亚的Sacramento)的创始人之一,157也是该公司的技术总监.a他同时还是Mathematicscforc3DcGamecProgrammingc&cComputercGraphics;(CharlescRivercMedia出版公司,1572002)的作者.aEric在维吉尼亚理工学院获得了自己的数学硕士学位.a 0159 0160FrankcLuchs 0161frank@visiomedia.com 0162早在1983年,161FrankcLuchs就已经为Atari计算机编写了自己的第一个音乐程序,161开始了“自己音乐+开发”的双面生涯.a他参与的项目包括为电影与电视制作音乐,161也包括为定制的应用程序与多媒体软件进行音响的设计与开发.a他曾经创作过数以百计的歌曲、小曲以及电影中的插曲(例如德国电影中著名的犯罪片Tatort的插曲).a他是Visiomedia软件公司的创始人之一,161此公司的目标是制作虚拟乐器.a在Visiomedia的时候,161他设计了SphinxcModular媒体系统,161这是软件合成器Saccara、Chephren与Cheops的基础.aSphinx的一个轻量级版本成为了本书中开放的源码.aFrank现在正在德国慕尼黑的一个电影中心工作.a 0163 0164CarlcS.cMarshall 0165Carl.S.Marshall@intel.com 0166CarlcS.cMarshall是英特尔实验室3D图形与技术小组的一位资深软件工程师.a他在Clemson大学获得了计算机科学的硕士学位,165在那里他的研究方向是虚拟现实.a他曾经在《游戏编程精粹2》中发表过文章,165也曾经在Shockwave3D图形引擎的NPR与其他部分做过工作.a现在,165Carl的研究兴趣正在转向智能寻径与实时的、具有照片效果或非照片效果的3D图形算法.a 0167 0168JamescMcNeill 0169james_mcneill@ameritech.net 0170JamescMcNeill是一位顾问程序员,169其专研方向是3D图形,169现在,169他住在伊利诺斯的芝加哥.a他曾经在SinistercGames这家位于北卡罗来纳州的Ubisoft公司工作过,169曾经在Westwood工作室工作过,169在那里他为PC游戏BladecRunner开发了图形的部分.a游戏玩家们应该在Westwood的一些游戏里面听过他的声音,169他曾经为Dunec2000的HousecAtreides步兵配过音,169还在Commandc&cConquerc2;中也为很多车辆配过音.a 0171 0172MikecMilliger 0173mikem@2015.com 0174Mike最近这两年一直在MedalcofcHonor:cAlliedcAssault游戏的诺曼底登陆战中苦苦挣扎,173在他眼前晃悠的尽是蓝色的漩涡、拿刀的美工、带着猴子的漫画家——更别说还落下了睡觉流口水的毛病.a现在,173他可成为了2015的主力程序员,173正在开发他们的下一个第一人称视角射击类游戏.a给他发个email,173和他在游戏里开战吧.a 0175 0176JackcMoffitt 0177jack@xiph.org 0178JackcMoffitt于1998年晚期创建了Icecast项目,177而且在好几个早期因特网广播创业公司充当过重要角色,177其中包括GreencWitchcInternetcRadio与iCast,177它是一个CMGi公司.a他被广泛认为是流媒体业界的先驱专家之一.a他在软件开发、数据库、负载管理与扩展、流媒体、系统管理、架构以及安全方面的经验堪称丰富.aJack还是Xiph.org组织的执行总监.aXiph.org是一个非赢利性质的技术与研究组织,177其关注的方向是互操作性、无专利限制的多媒体技术与标准,177例如Icecast流媒体服务器与OggcVorbis编解码器的项目.a 0179 0180AaroncNicholls 0181aaron_feedback@hotmail.com 0182AaroncNicholls是在微软公司华盛顿州雷特蒙德市的一名主力开发员.a从年轻时起,181他就特别喜欢图形编程、人工智能、物理仿真,181再加上他对伟大的游戏的爱好,181导致了他最终对游戏开发产生了兴趣.a最近几年,181他在软件的国际化中应用到了自己的外语技能.aAaron曾在《游戏编程精粹2》上发表过文章,181他期待着读者的回应与反馈.a 0183 0184ChriscOat 0185coat@ati.com 0186ChriscOat是ATI中3D应用研究组的一名软件工程师,185在那里他正在研究针对实时3D图形应用程序的最新渲染技术.a他当前关注的是针对PC游戏的像素着色器与顶点着色器.aChris是波士顿大学的研究生.a 0187 0188KimcPallister 0189kim.pallister@intel.com 0190KimcPallister是英特尔软件与解决方案小组中的一名技术市场经理.a他现在主要关注的是实时3D图形技术与游戏的开发.a 0191 0192ScottcPatterson 0193scottp@tonebyte.com 0194ScottcPatterson是《游戏编程精粹2》的一名作者,193现在则是本书,193《游戏编程精粹3》中第6章音频处理的编辑,193而且也是一名辅助编辑.a在过去的12年中,193他曾经做过游戏开发中的音频系统、图形系统以及逻辑系统,193此外还为音频开发与图形开发制作过工具和其具体内容.a过去,193他曾经在NaughtycDog、Midway与Microprose工作过.a现在,193他正在为NextcGenerationcEntertainment公司设计与开发一个游戏系统,193并在其中担当研发小组长.a他在《游戏编程精粹3》中的工作得到了妻子Alison、儿子Nick与女儿Grace给予的耐心、爱与支持.a幸运的是,193他们也都喜欢计算机带来的乐趣.a 0195 0196StevecRabin 0197steve@aiwisdom.com 0198StevecRabinc已经在任天堂(美国)公司工作了10年,197是一个游戏业界的老手了.a他曾经为三个发布的游戏开发人工智能的代码,197而且是《游戏编程精粹1》与《游戏编程精粹2》的作者之一.a他是《游戏编程精粹2》中人工智能一章的编辑,197也是AIcGamecProgrammingcWisdom(CharlescRivercMedia出版公司,1972002)的创始者与主编.aSteve在游戏开发者会议上曾经就人工智能发表过演讲.a他从华盛顿大学获得了计算机工程的学位,197其专业方向是机器人.a 0199 0100JustincRandall 0101jrandall@soe.sony.com 0102JustincRandall现在是索尼在线娱乐公司(位于德克萨斯州奥斯汀)的一名程序员.a他正在开发游戏StarcWarscGalaxies,201这是一个属于StarcWars系列的巨量多玩家角色扮演游戏.a他曾经在数个已经发布了的游戏中工作过,201包括实时策略游戏与第一人称视角的动作游戏.a 0103 0104EriccRobert 0105eric.robert@videotron.ca 0106Eric是UbicSoftcEntertainment公司核心技术小组中的一名软件工程师,205此小组位于加拿大的蒙特利尔市.a现在,205他正在开发一个下一代的多平台引擎.a有些时候,205他喜欢在源代码里面加上一些看起来很像程序错误的“特性”,205以测试一下同事的技术.a 0107 0108GabrielcRohweder 0109grohwed@hotmail.com 0110Gabriel在13岁的时候用苹果机的BASIC编出了自己的第一个游戏.a几年以后,209他正式从BallcState大学获得了计算机科学的学位.a紧巴巴地过了一阵数据库程序员与网络工程师的日子之后,209他立刻就明白了,209自己马上可以圆上儿时的梦想,209成为游戏业界中的一员了.a他现在加入了微软,209是DirectPlay开发小组中的一名软件设计工程师.a 0111 0112GregcSeegert 0113gseegert@alum.wpi.edu 0114GregcSeegert是StainlesscSteel工作室的一名程序员,213在那里他曾为知名的游戏EmpirecEarth做出过很多贡献.a在不编程的时候,213Greg会思考编程、阅读编程书籍,213甚至会梦到编程.a自从10岁开始起,213他就开始编程了,213虽然直到现在Greg还没有在社会中成熟起来,213但是他现在依然决定继续编程.a在此期间,213他希望自己能成为真正的高手.a 0115 0116JasoncShankel 0117JShankel@maxis.com 0118JasoncShankel自从1992年以来就是一名职业游戏程序员了.a现在,217他是ElectroniccArts/Maxis的一名资深软件工程师,217但是他希望自己有一天能成为一个真正的男孩.a 0119 0120CláudiocSilva 0121csilva@research.att.com 0122CláudiocSilva是AT&T实验室研究部的一名资深技术员.a他当前的研究兴趣主要集中在建构可扩展显示的架构与算法、大型数据集的渲染技术、3D扫描与图形硬件的算法上.aClaudio从纽约大学石溪分校获得了自己的计算机科学博士学位.a当还是一个学生的时候,221他曾在Sandia国家实验室工作过,221在那里他开发出了大型可视化算法与处理巨型数据集的工具.aClaudio在国际会议与期刊上发表论文超过40篇,221而且曾在不同的会议上课,221包括ACMcSIGGRAPH、Eurographics与IEEEcVisualization.a 0123 0124ZackcBoothcSimpson 0125zsimpson@sprynet.com 0126ZackcBoothcSimpson于1991年加入了Origin/ElectroniccArts公司,225成为了Ultima中的一名程序员,225在1995年他离开的时候,225已经是技术总监了(他后来变成了一名研究员).a1995年,225他与他人一同创建了TitaniccEntertainment公司,225此公司发布过NetStorm:cIslandscatcWar游戏.a1997年,225Zack退出了游戏业界,225现在喜欢创作一些交互式的艺术作品、环球旅行,225以及教授数学课程.a他的主页是http://www.totempole.net.a 0127 0128GregcSnook 0129gregsn@microsoft.com 0130Greg在游戏业界已经工作8年多了,229他曾经在ViacomcNewcMedia、Kinesoft、TerraGlyph,229以及PastcTree工作过,229为他们制作过游戏.a现在他在微软的Bungie工作室工作,229制作机密的Xbox游戏,229你至少要灌他三杯好酒才能从他嘴里套出话来.aGreg也常常为自己倾注了心血的史诗般的角斗士这个作品而感叹,229其中一幕正是《游戏编程精粹2》的封底插图.a 0131 0132WilliamcvancdercSterren 0133william@cgf-ai.com 0134WilliamcvancdercSterren为计算机游戏与仿真开发战术式的人工智能技术.a他是CGF-AI公司的创建者之一,233也是该公司的开发人员与顾问.aWilliam曾经在游戏开发者大会上发表过演讲,233也曾经在AIcProgrammingcWisdom(CharlescRivercMedia出版公司,2332002)与“游戏编程精粹”系列丛书中发表过文章.aWilliam曾经在嵌入式系统与防御仿真的领域作过研究科学家,233他现在是一个下一代游戏机上游戏的人工智能部分的主力开发员.a 0135 0136JancSvarovsky 0137jan@svarovsky.com 0138Jan的编程生涯已经有将近20年了.a他是在1995年从英国的剑桥大学毕业,237加入Bullfrog公司的,237在那里他进入了研发部,237编写人工智能的程序、试验性的3D引擎、网络程序、还有两个最早的3D加速器的PC移植版.a他在Bullfrog的两个技术领先的项目中充当着主力开发员或是唯一开发员的角色.a之后,237他加入了MuckycFootcProductions公司,237成为了StarTopia的主力开发人员,237这是一个在2001年6月发布的游戏.a他的网页是http://www.csvarovsky.com/jan.a 0139 0140DantecTreglia 0141treglia@yahoo.com 0142Dante现在还记得年少时的日子,241那时他还在使用自己的Ataric400,241用BASIC语言画出一个个模糊的点.a几年之后,241他发现自己可以使用Mathematica创作出眩目的图形,241而不必在屏幕上费劲地画点了——其结果就是,241他一下子从乔治亚大学获得了数学学士学位.a但是,241面临了现实世界之后,241他立刻发现自己走错了路,241于是决定到Clemson大学去学习编程.a在Clemson,241他花费了很多时间带着5磅重的连着价值百万美元的虚拟现实硬件头套显示器,241查看OpenGL的代码.a获得了硕士学位以后,241Dante重返现实世界,241幸运地得到了任天堂(美国)公司的一份工作.a他现在是开发技术支持的一名主力软件工程师,241同时还在继续自己充满兴趣的虚拟现实研究——这次使用的设备可就便宜多了.a 0143 0144AlexcVlachos 0145Alex@Vlachos.com 0146AlexcVlachos自从1998年起就是ATI公司3D应用研究小组中的一名资深软件工程师了,245他主要关注3D引擎的开发.aAlex是ATI图形演示与屏幕保护程序的主力开发员,245而且他一直在编写3D引擎以用来展示下一代的硬件特性.a此外,245他还开发了N-贴片(一种曲面表示形式,245它是微软DirectX8中的一部分),245也称为PN三角形或者是TRUFORM.a在加入ATI之前,245他是SpaceteccIMC的一名软件工程师,245其任务是开发SpaceOrbc360,245一个具有6°自由度的游戏控制器.a他曾经在《游戏编程精粹1》、《游戏编程精粹2》、ACM交互式3D图形研讨会以及ShaderXc(WordwarecPublishing,cInc.)上发表过文章.aAlex是波士顿大学的研究生毕业.a他的网页是http://alex.vlachos.com.a 0147 0148CarlocVogelsang 0149cvogelsang@creativelabs.com 0150CarlocVogelsang自从1998年初期就开始开发游戏了.a他曾经在许多公司开发过音乐与音频以及游戏的其他部分,249这些公司包括:EpiccMegaGames、DigitalcExtremes,cTriumphcStudios,cOrangecGames以及SecretcLevel.aCarlo现在在创新实验室工作.a 0151 0152JasoncWeber 0153jason.p.weber@intel.com 0154JasoncWeber最开始在军方研究实验室从事3D夜视景地形仿真开发包的编程工作,253后来他做出了具有动画效果的树木与草丛.a现在,253他在英特尔图形与3D技术小组工作,253开发在Macromedia'scShockwave3D中使用到的运动与骨架变形技术.aJason曾经在SIGGRAPH与游戏开发者大会上面发表过文章.a他的网页是http://www.imonk.com/baboon.a 0155 0156StephencWhite 0157swhite@naughtydog.com 0158StephencWhite是NaughtycDog的开发总监,257具有15年之久的在多种平台上开发视频游戏的职业生涯.aStephen的著名之作有JakcandcDaxter:cThecPrecursorcLegacy、CrashcBandicoot:cWarped、CrashcBandicoot:cCortexcStrikescBack、Brilliance,257以及DeluxecPaintcST.a他特别喜欢制作视频游戏,257而且曾经参与过视频游戏开发的方方面面.a 0159 0160StevencWoodcock 0161ferretman@gameai.com 0162StevencWoodcock在人工智能方面的背景知识是从18年的弹道导弹防御工事建筑与大量的实时战争游戏以及仿真的制作中得来的.a他在www.gameai.com网址上保留了一张网页专门用来宣传游戏中的人工智能,261而且他也是此课题上许多论文与出版物的作者.a他现在为许多签订的合同制作游戏中的人工智能,261并在游戏开发者大会上帮助他人调整游戏中的人工智能策略,261他还是此领域几本书籍与杂志的作者与技术编辑之一.a 0163 0164ThomascYoung 0165thomas.young@bigfoot.com 0166Thomas多年前在一台Amiga机器上开发硬件游戏的时候牺牲了一颗牙齿.a从Sussex大学获得了一个人工智能的学位以后,265他加入了英国谢菲尔德的GremlincInteractive公司,265成为了一名人工智能程序员.a这些年来他在人工智能方面的两个研究兴趣是让人物理解其环境中的障碍物以及让人物的走动更加真实.a2000年,265他离开了Gremlin(现为Infogames,265SheffieldcHouse),265成为了一名独立签约者,265同时创建了一个公司,265在中间件许可证的形式下发送自己复杂的寻径系统(http://www.pathengine.com).a 0167 0168MarkcZarb-Adami 0169Mark@muckyfoot.com 0170MarkcAdami从10岁就开始编写游戏了,269当时他只有一台配有BASIC解释器的Ataric800,269这是他的圣诞礼物,269不过电脑上没有安装游戏.a8年后,269他在剑桥大学学习计算机科学,269之后曾在Bullforg公司工作,269现在任职于MuckycFoot公司.a他的游戏作品有SyndicatecWars和UrbancChaos.a 0171c$$$c 目录 封面 -54 封底 -53 彩插 -52 内容提要 -44 光盘内容介绍 -43 序 -42 前言 -39 致谢 -36 关于封面图案 -35 作者简介 -34 目录 -17 第1章 通用编程技术 1 简介 (作者:Kim Pallister) 2 1.1 调度游戏中的事件 (作者:Michael Harvey,Carl S.Marshall) 4 1.1.1 调度器的组成 5 1.1.2 一个简单的调度器 8 1.1.3 高级概念 10 1.1.4 结论 11 1.1.5 参考文献 12 1.2 一个基于对象组合的游戏架构 (作者:Scott Patterson) 13 1.2.1 游戏开发的各个阶段 13 1.2.2 游戏架构设计 14 1.2.3 游戏架构实现 17 1.2.4 源代码 20 1.2.5 参考文献 21 1.3 让C中的宏重现光辉 (作者:Steve Rabin) 23 1.3.1 声明 23 1.3.2 第1个宏技巧: 把枚举值转化为字符串 23 1.3.3 第2个宏技巧: 利用二进制表达式得到编译期常量 25 1.3.4 第3个宏技巧:给标准断言添加描述性注释 26 1.3.5 第4个宏技巧:编译期断言 26 1.3.6 第5个宏技巧:得到一个数组里面的元素个数 27 1.3.7 第6个宏技巧: 在一个字符串中间加入__LINE__ 27 1.3.8 第7个宏技巧:防止进入无限循环 28 1.3.9 第8个宏技巧:小型的特制语言 29 1.3.10 第9个宏技巧:简化类接口 30 1.3.11 结论 33 1.3.12 参考文献 33 1.4 平台无关的函数绑定代码生成器 (作者:Allen Pouratian) 34 1.4.1 年轻与智慧 34 1.4.2 概要 35 1.4.3 细节 36 1.4.4 脚本 38 1.4.5 网络 38 1.4.6 结论 39 1.4.7 参考文献 39 1.5 基于句柄的智能指针 (作者:Brian Hawkins) 40 1.5.1 用法 40 1.5.2 句柄 41 1.5.3 智能指针 42 1.5.4 结论 43 1.5.5 参考文献 43 1.6 定制STL分配器 (作者:Pete Isensee) 44 1.6.1 一个范例 44 1.6.2 分配器的基础 45 1.6.3 分配器的要求 45 1.6.4 缺省的分配器对象 49 1.6.5 编写自己的分配器 49 1.6.6 潜在的用途 51 1.6.7 分配器状态数据 51 1.6.8 一些建议 52 1.6.9 实现细节 52 1.6.10 结论 52 1.6.11 参考文献 53 1.7 立即存盘 (作者:Martin Brownlow) 54 1.7.1 为何如此困难 54 1.7.2 SAVEMGR类 55 1.7.3 SAVEOBJ类 55 1.7.4 数据类型与扩展 56 1.7.5 重载缺省函数 56 1.7.6 一个简单的例子 57 1.7.7 结论 58 1.8 自动列表设计模式 (作者:Ben Board) 59 1.8.1 实现 59 1.8.2 实现时的注意事项 61 1.8.3 结论 63 1.9 浮点异常处理 (作者:Soren Hannibal) 64 1.9.1 为什么要崩溃 64 1.9.2 你的程序处理浮点异常么 65 1.9.3 异常的类型 65 1.9.4 代码 65 1.9.5 调试浮点错误 66 1.9.6 结论 66 1.10 使用UML开发一个配合设计的游戏引擎 (作者:Thomas Demachy) 67 1.10.1 对象就在游戏之中 67 1.10.2 动态的类——正如动态的棋子 70 1.10.3 协作与迭代 72 1.10.4 实现上的问题 73 1.10.5 结论 74 1.10.6 参考文献 75 1.11 使用Lex和Yacc分析自定义数据文件 (作者:Paul Kelly) 76 1.11.1 Lex 77 1.11.2 Yacc 77 1.11.3 优点与缺陷 77 1.11.4 Yacc和Lex中的交互 78 1.11.5 针对游戏子系统的自定义数据文件 79 1.11.6 把数据输出工具与Lex和Yacc结合起来 80 1.11.7 一个完整的例子 80 1.11.8 结论 84 1.11.9 如何得到Flex和Bison 84 1.11.10 参考文献 84 1.12 为世界市场开发游戏 (作者:Aaron Nicholls) 85 1.12.1 市场潜力 85 1.12.2 门面事,先处理——显示和输入 86 1.12.3 字符集 88 1.12.4 界面和设计方面的考虑 90 1.12.5 本地化 93 1.12.6 设计和规划中的考虑 94 1.12.7 测试 95 1.12.8 结论 98 1.12.9 参考文献 98 1.13 3D游戏中的实时输入和用户界面 (作者:Greg Seegert) 99 1.13.1 实现用户界面 99 1.13.2 指定用户界面元素 100 1.13.3 本地化问题 101 1.13.4 输入系统 102 1.13.5 鼠标与操纵杆 103 1.13.6 在处理延迟方面用户界面的作用 104 1.13.7 结论 105 1.13.8 参考文献 105 1.14 自然的选择:饼状菜单的演化 (作者:Don Hopkins) 106 1.14.1 Feng GUI的饼状菜单 106 1.14.2 对饼状菜单的研究与评估 107 1.14.3 饼状菜单插件 108 1.14.4 未来发展方向 112 1.14.5 走进SimCity中的城镇 112 1.14.6 Sims中的起居室 114 1.14.7 结论 115 1.14.8 参考文献 115 1.15 轻量级的、基于规则的日志记录 (作者:Brian Hawkins) 117 1.15.1 规则 117 1.15.2 调试标志 117 1.15.3 配置文件 118 1.15.4 可配置的标志值 119 1.15.5 日志记录 119 1.15.6 用法 121 1.15.7 结论 122 1.15.8 参考文献 122 1.16 日志服务 (作者:Eric Robert) 123 1.16.1 管理信息 123 1.16.2 系统层次 124 1.16.3 Journal接口 127 1.16.4 创建日志服务 129 1.16.5 结论 132 1.16.6 参考文献 132 1.17 实时的层次化性能评测 (作者:Greg Hjeistrom,Byon Garrabrant) 133 1.17.1 性能评测树 134 1.17.2 用法 134 1.17.3 实现 136 1.17.4 结论 139 1.17.5 参考文献 139 第2章 数学技巧 141 简介 (作者:John Byrd) 142 2.1 对数与随机数生成的2基快速函数 (作者:James McNeill) 144 2.1.1 整数的2基对数 144 2.1.2 位掩码与随机数生成 144 2.1.3 函数是如何工作的 146 2.1.4 参考文献 146 2.2 使用分数矢量得到更精确的几何图形 (作者:Thomas Young) 147 2.2.1 问题 147 2.2.2 一个解决方法:分数矢量 150 2.2.3 使用分数矢量 151 2.2.4 数字的范围 152 2.2.5 实现上的细节 153 2.2.6 结论 154 2.2.7 参考文献 154 2.3 三角函数的更多近似计算方法 (作者:Robin Green) 155 2.3.1 衡量误差 155 2.3.2 正弦与余弦函数 156 2.3.3 多项式逼近 163 2.3.4 有关收敛性的注意事项 167 2.3.5 结论 168 2.3.6 参考文献 168 2.4 四元数的压缩 (作者:Mark Zarb-Adami) 169 2.4.1 四元数 169 2.4.2 三个最小数方法 169 2.4.3 极点方法 170 2.4.4 实现 170 2.4.5 性能 171 2.4.6 结论 172 2.4.7 答谢 172 2.4.8 参考文献 172 2.5 受限的逆向运动学 (作者:Jason Weber) 173 2.5.1 骨节层次 173 2.5.2 循环坐标推演 174 2.5.3 旋转限制 175 2.5.4 调整每个骨节,同时保持限制 176 2.5.5 结论 178 2.5.6 参考文献 178 2.6 针对物理建模的单元自动机 (作者:Tom Forsyth) 180 2.6.1 CA基础 180 2.6.2 八叉树 183 2.6.3 实际的物理 183 2.6.4 核心处理模型 184 2.6.5 气体 185 2.6.6 水流 185 2.6.7 流速 186 2.6.8 热量 187 2.6.9 火焰 189 2.6.10 动态更新速率 190 2.6.11 结论 191 2.6.12 参考文献 192 2.7 在动态仿真中处理摩擦 (作者:Miguel Gomez) 193 2.7.1 库仑摩擦力 193 2.7.2 数值方法 197 2.7.3 一个三维公式 200 2.7.4 几何图形问题 201 2.7.5 结论 202 2.7.6 参考文献 202 第3章 人工智能 203 简介 (作者:Steven WoodCock) 204 3.1 经GoCap优化过的机器学习 (作者:Thor Alexander) 206 3.1.1 GoCap架构一览 206 3.1.2 训练开车 208 3.1.3 学习规则 209 3.1.4 结论 213 3.1.5 参考文献 213 3.2 区域游览:对寻径模式的扩展 (作者:Ben Board,Mike Ducker) 214 3.2.1 辞旧 215 3.2.2 迎新 216 3.2.3 分而治之 219 3.2.4 路径遍历 221 3.2.5 对此模式的扩展 225 3.2.6 结论 225 3.2.7 参考文献 225 3.3 基于函数指针的内嵌式有限状态机 (作者:Charles Farris) 226 3.3.1 什么是有限状态机 226 3.3.2 FSM的实现 227 3.3.3 实现CFSM 229 3.3.4 使用CFSM 233 3.3.5 结论 235 3.3.6 参考文献 236 3.4 在RTS中的地形分析——一个隐藏的重要因素 (作者:Daniel Higgins) 238 3.4.1 区域 237 3.4.2 凸包 241 3.4.3 重要的匹配器 244 3.4.4 关隘 247 3.4.5 进行地形分析 250 3.4.6 结论 251 3.4.7 参考文献 251 3.5 一个针对AI代理、对象,以及任务的可扩展触发器系统 (作者:Steve Rabin) 252 3.5.1 触发器系统简介 252 3.5.2 对象自有的触发器系统 253 3.5.3 定义条件 253 3.5.4 使用布尔逻辑组合条件 253 3.5.5 定义响应 255 3.5.6 求取触发器的值 255 3.5.7 一次性触发与载入次数 256 3.5.8 使用标志和计数器将触发器结合起来 257 3.5.9 触发器系统与脚本语言的对比 258 3.5.10 局限性 259 3.5.11 结论 259 3.5.12 参考文献 259 3.6 基于A*算法的战术式寻径 (作者:William van der Sterren) 260 3.6.1 有风险的A* 261 3.6.2 对于有缺陷路径的战术式改良 263 3.6.3 暴露时间与对敌人建模 263 3.6.4 威胁并不仅仅是静态的 265 3.6.5 更战术化的改进 266 3.6.6 性能 266 3.6.7 有效的火力线以及视野的探测 267 3.6.8 扩展的A*算法的代价 268 3.6.9 ASE程序 269 3.6.10 结论 269 3.6.11 参考文献 270 3.7 快速游览网格的方法 (作者:Stephen White,Christopher Christensen) 271 3.7.1 静态障碍与动态障碍 271 3.7.2 游览网格 271 3.7.3 门户 273 3.7.4 建表 275 3.7.5 其他的门户相关问题 276 3.7.6 表示生物 277 3.7.7 动态障碍 278 3.7.8 在静态障碍与动态障碍之间进行游览 280 3.7.9 有关游览网格的其他想法 280 3.7.10 结论 281 3.8 在寻径与碰撞之间选择一种关系 (作者:Thomas Young) 282 3.8.1 在碰撞控制下的运动 282 3.8.2 对于寻径的碰撞模型 282 3.8.3 方法1:具有容错性的AI 283 3.8.4 方法2:在无障碍空间一个子集内的寻径 285 3.8.5 方法3:使用寻径器本身处理人物碰撞 287 3.8.6 实现沿路的运动 289 3.8.7 结论 290 3.8.8 参考文献 290 第4章 图形 293 简介 (作者:Jeff Lander) 294 4.1 消除T形连接与重新三角化 Eric Lengyel 297 4.1.1 T形连接的消除 298 4.1.2 重新三角化 299 4.1.3 实现 300 4.1.4 结论 301 4.2 快速高程场法线的计算 (作者:Jason Shankel) 302 4.2.1 一个任意网格上的法线 302 4.2.2 高程场法线 303 4.2.3 结论 305 4.2.4 例子程序 305 4.2.5 参考文献 306 4.3 快速计算面片法线 (作者:Martin Brownlow) 307 4.3.1 定义 307 4.3.2 传统方法 307 4.3.3 相关问题 308 4.3.4 一个更简单的方法 308 4.3.5 其他的优点 308 4.3.6 此方法的精确度有多大 309 4.3.7 结论 309 4.3.8 参考文献 309 4.4 快速、简单的遮蔽剪裁 (作者:Wagner T.Corrêa,Princeton University) 310 4.4.1 可见性问题 310 4.4.2 PLP算法 311 4.4.3 cPLP算法 312 4.4.4 讨论 312 4.4.5 实验结果 313 4.4.6 结论 314 4.4.7 参考文献 314 4.5 三角形条带的创建、优化以及渲染 (作者:Carl S.Marshall) 316 4.5.1 三角形条带 316 4.5.2 三角形条带的创建 317 4.5.3 优化 320 4.5.4 渲染 321 4.5.5 倾向于缓存的三角形条带 321 4.5.6 连续分层细节的三角形条带 321 4.5.7 结论 322 4.5.8 参考文献 322 4.6 针对复杂数据集计算优化阴影体 (作者:Alex Vlachos,Drew Card) 323 4.6.1 前期工作 323 4.6.2 算法 323 4.6.3 优化算法 325 4.6.4 参考文献 326 4.7 针对人物运动的表面细分 (作者:William Leeson) 327 4.7.1 各种细分模式 327 4.7.2 骨节的层次化结构以及顶点积累缓冲 331 4.7.3 优化 332 4.7.4 系统集成 334 4.7.5 源代码 335 4.7.6 结论 336 4.7.7 参考文献 336 4.8 改良的骨节变换计算 (作者:Jason Weber) 337 4.8.1 背景知识 337 4.8.2 简单的方法 338 4.8.3 添加骨节 339 4.8.4 改变权重 340 4.8.5 系统集成与优化 342 4.8.6 结论 344 4.8.7 参考文献 344 4.9 针对真实人物运动的架构 (作者:Thomas Young) 345 4.9.1 问题:针对任意目标的运动 345 4.9.2 问题:运动之间的平滑过渡 347 4.9.3 解决问题的一个架构:局部修正器与独立的插值系数 348 4.9.4 应用:处理任意目标的运动 349 4.9.5 位移修正器 350 4.9.6 应用:变换 351 4.9.7 其他细节 351 4.9.8 结论 352 4.9.9 参考文献 352 4.10 可编程顶点着色器的编译器 (作者:Adam Lake) 353 4.10.1 可编程顶点着色器 353 4.10.2 编译器 355 4.10.3 编译器的组成部分 355 4.10.4 结论 359 4.10.5 致谢 359 4.10.6 参考文献 359 4.11 画板光束 (作者:Brian Hawkins) 361 4.11.1 矩阵 361 4.11.2 顶点 362 4.11.3 UV映射 363 4.11.4 结论 363 4.12 针对等测引擎的3D技术 (作者:Greg Snook) 364 4.12.1 进入第三个维度 365 4.12.2 方法1:画板越多,效果越好 365 4.12.3 方法2:变换纹理 366 4.12.4 方法3:垂直插值的纹理 368 4.12.5 结论 369 4.12.6 参考文献 369 4.13 使用法向地图进行曲面模拟 (作者:Oscar Blasco) 370 4.13.1 法向地图 370 4.13.2 整个过程的纵览 371 4.13.3 数据准备 371 4.13.4 投影线 372 4.13.5 得到细节信息 373 4.13.6 后处理 374 4.13.7 已知的问题 374 4.13.8 其他方法 375 4.13.9 结论 375 4.13.10 致谢 376 4.13.11 参考文献 376 4.14 动态的、具有照片效果的地形光照 (作者:Naty Hoffman,Kenny Mitchell) 377 4.14.1 背景知识 377 4.14.2 解的分类 379 4.14.3 日照:地平角、椭圆阴影以及PTM 379 4.14.4 天空光照:辐射透过量的近似与分块 381 4.14.5 活动的云层阴影 382 4.14.6 基于视频的解决方案 384 4.14.7 非地形对象 385 4.14.8 结论 385 4.14.9 参考文献 385 4.15 立体图光照技术 (作者:Kenneth L.Hurley) 387 4.15.1 立体图的物理属性 387 4.15.2 如何与立体图进行数据交换 388 4.15.3 使用立体图进行渲染 388 4.15.4 对云层进行编码 389 4.15.5 在一个立体图中对光源进行编码 392 4.15.6 在立体图中渲染散射光照 392 4.15.7 将日夜循环编码进立体图中 393 4.15.8 结论 393 4.15.9 参考文献 393 4.16 程序纹理 (作者:Mike Milliger) 394 4.16.1 参数与函数 394 4.16.2 进入游戏世界 395 4.16.3 硬件加速 397 4.16.4 结论 398 4.16.5 致谢 399 4.16.6 参考文献 399 4.17 独一无二的纹理 (作者:Tom Forsyth) 400 4.17.1 程序纹理 400 4.17.2 智能纹理缓存 401 4.17.3 合成模型 401 4.17.4 层的映射与变换 401 4.17.5 层的源与过滤器 402 4.17.6 合成方法 402 4.17.7 对数字的控制 403 4.17.8 动态纹理 403 4.17.9 可扩展性 404 4.17.10 使用CPU还是图形芯片进行合成运算 405 4.17.11 演示程序 405 4.17.12 结论 406 4.17.13 参考文献 406 4.18 使用纹理作为查找表进行逐像素光照计算 (作者:Alex Vlachos, John Isidoro,Chris Oat) 407 4.18.1 不使用立体图进行h归一化(n.h/h.h映射)的镜面逐像素光照 407 4.18.2 使用一个(n.h)k图的逐像素镜面指数 409 4.18.3 色彩偏移的光晕 411 4.18.4 拥有正确的逐像素衰减的逐像素点光照 412 4.18.5 拥有正确的逐像素衰减的逐像素聚光灯与方向性光照 413 4.18.6 结论 415 4.18.7 参考文献 415 4.19 使用手工制作的着色模型进行渲染 (作者:Jan Kautz) 416 4.19.1 着色模型 416 4.19.2 基于微表面的着色模型 417 4.19.3 NDF着色 417 4.19.4 使用NDF的凸凹贴图 419 4.19.5 扩展 420 4.19.6 结论 420 4.19.7 参考文献 420 第5章 网络和多玩家游戏 423 简介 (作者:Andrew Kirmse) 424 5.1 将实时策略游戏中的延迟最小化 (作者:Jim Greer, EA.com,Zachary Booth Simpson, Mine Control) 425 5.1.1 帧锁定与事件锁定 425 5.1.2 时间同步 429 5.1.3 结论 431 5.1.4 参考文献 431 5.2 实时策略网络协议 (作者:Jan Svarovsky) 432 5.2.1 其他的协议 432 5.2.2 我们的协议 433 5.2.3 精炼 435 5.2.4 有用的模块 437 5.2.5 在StarTopia中容易犯的错误 438 5.2.6 示例游戏 439 5.2.7 结论 439 5.2.8 参考文献 439 5.3 一个针对巨量多玩家游戏的灵活的仿真架构 (作者:Thor Alexander) 440 5.3.1 架构一览 440 5.3.2 支持类 441 5.3.3 核心类 443 5.3.4 管理器与工厂 446 5.3.5 把它们都组合起来 448 5.3.6 结论 451 5.3.7 参考文献 451 5.4 对多玩家游戏进行扩展 (作者:Justin Randall) 452 5.4.1 改善游戏公平度的策略 452 5.4.2 设计可扩展的服务器 454 5.4.3 分布负载 459 5.4.4 优化 461 5.4.5 结论 463 5.4.6 参考文献 464 5.5 基于模板的对象序列化 (作者:Jason Beardsley) 465 5.5.1 现存的解决方案 465 5.5.2 可移植性 467 5.5.3 Serializer 类 468 5.5.4 扩展与优化 473 5.5.5 未来的工作 475 5.5.6 结论 475 5.5.7 参考文献 475 5.6 安全套接字 (作者:Pete Isensee) 476 5.6.1 IPSec 476 5.6.2 警告 477 5.6.3 安全连接 477 5.6.4 包格式 478 5.6.5 发送数据 479 5.6.6 接收数据 480 5.6.7 示例实现 481 5.6.8 CryptoAPI 483 5.6.9 性能 483 5.6.10 安全性 484 5.6.11 结论 484 5.6.12 参考文献 485 5.7 一个网络监控与模拟工具 (作者:Andrew Kirmse) 486 5.7.1 界面 486 5.7.2 网络监控 487 5.7.3 TCP模拟 487 5.7.4 UDP模拟 487 5.7.5 主机带宽模拟 488 5.7.6 结论 488 5.8 使用DirectPlay 8.1创建多玩家游戏 (作者:Gabriel Rohweder) 489 5.8.1 DirectPlay内幕 489 5.8.2 数据传输 490 5.8.3 可重入的回调函数 493 5.8.4 使用DirectPlay发送语音 496 5.8.5 相关资源 499 5.9 使用Java微型版开发无线游戏 (作者:David Fox) 500 5.9.1 网络特性 500 5.9.2 Java微型版 501 5.9.3 J2ME网络精髓 502 5.9.4 HTTP的限制 503 5.9.5 优化数据包 504 5.9.6 从服务器获取图像 505 5.9.7 结论 506 5.9.8 参考文献 507 第6章 音频处理 509 简介 (作者:Scott Patterson) 510 6.1 使用Ogg Vorbis进行音频压缩 (作者:Jack Moffitt) 512 6.1.1 心理声学压缩 512 6.1.2 使用压缩的情况 514 6.1.3 使用Ogg的代码示例 515 6.1.4 结论 518 6.1.5 参考文献 518 6.2 创建一个美妙的3D音频环境 (作者:Garin Hiebert) 519 6.2.1 3D音频的核心概念 519 6.2.2 有效地使用你的音频引擎 520 6.2.3 实现 521 6.2.4 结论 522 6.2.5 参考文献 522 6.3 使用轴对齐的边界框设置音障 (作者:Carlo Vogelsang) 524 6.3.1 问题 524 6.3.2 解决方法 525 6.3.3 实现 528 6.3.4 结论 528 6.3.5 参考文献 528 6.4 使用双二次共振滤波器 (作者:Phil Burk) 529 6.4.1 数字滤波器的工作原理 529 6.4.2 IIR与FIR滤波器 530 6.4.3 双二次滤波器的实现 530 6.4.4 改变变量 531 6.4.5 避免异常情况 531 6.4.6 控制滤波器 532 6.4.7 计算此滤波器的系数 532 6.4.8 低通滤波器 533 6.4.9 高通滤波器 533 6.4.10 带通滤波器 533 6.4.11 将滤波器进行串联 534 6.4.12 将滤波器进行并联 534 6.4.13 软件 534 6.4.14 结论 534 6.4.15 参考文献 534 6.5 语音压缩与音效的线性预测编码 (作者:Eddie Edwards) 535 6.5.1 对语音建模 536 6.5.2 软件仿真 537 6.5.3 取代声带 539 6.5.4 控制重新合成器 540 6.5.5 增加扬声器的深度 541 6.5.6 对数据编码 541 6.5.7 速度 542 6.5.8 实验 542 6.5.9 参考文献 542 6.6 复杂声音的随机合成方法 (作者:Phil Burk) 543 6.6.1 线性同余算法 543 6.6.2 噪声种类 544 6.6.3 软件示例 545 6.6.4 软件 549 6.6.5 结论 549 6.6.6 参考文献 549 6.7 针对游戏的实时模块化音频处理 (作者:Frank Luchs) 550 6.7.1 模块化音频处理 550 6.7.2 通过程序生成声音 551 6.7.3 Sphinx MMOS系统 551 6.7.4 处理器 552 6.7.5 模块文件简介 552 6.7.6 模块文件的应用 554 6.7.7 源代码 556 6.7.8 结论 557 6.7.9 参考文献 557 索引 559 前言   Dante Treglia   Nintendo of America, Inc.   treglia@yahoo.com      欢迎各位来到《游戏编程精粹3》的世界!我们已经出版了一整套系列丛书,这套丛书面向高级游戏开发人员,在许多游戏开发技术上提供了宝贵而有深度,同时又是实际可用的经验之谈。此书正是本系列丛书中的第3卷。我们向大家介绍资深游戏开发人员的知识,其目的就是为了鼓励游戏开发界的同仁们共同努力,以达到最终目标,创造出更优秀的作品。我们希望读者通过学习书中的技巧,能节省自己的时间,同时也能深受鼓舞,投身于此项事业,创造出更新颖、更有趣的游戏来。   如果你是一个初学者,本书为你提供了一套覆盖面极广的资料,通过它们,你可以得知当今游戏开发中的进展与面临的挑战。我们同时还提供了各种参考文献,以帮助读者得到相应的资料,对提及的话题有更深的了解。如果你是一个富有经验的游戏开发人员,本书的真正价值就在于它能帮助你节省很多时间,少走许多弯路。本书的各位作者都花费了数月的时间来组织他们的思想、代码与相应的说明,以在相应的问题上辅以具体的材料,提出自己的真知灼见。因此即使你不是相关问题方面的专家,也可以很容易地吸取他们的智慧。这样,你就可以省下更多的时间,着手为自己的游戏添加更眩目的特性了。   随着前两卷的出版,本系列丛书已经在游戏业界中得到了认同,这从我们收到的215篇征稿上面就可以看出来,作者们都希望与同仁一同分享自己的经验。而这些稿件的质量与数量也同样令人感到惊喜,因此要在其中做出抉择真是一项非常困难的任务。为了保证本书的质量,我们邀请了各个方面的专家来参与评审,以保证这些文章真正是读者,即职业游戏开发人员所需要的。《游戏编程精粹3》各章的编辑分别是:    通用编程技术——Kim Pallister,来自Intel公司;    数学技巧——John Byrd,来自Electronic Arts;    人工智能——Steve Woodcock,来自Wyrd Wyrk;    图形——Jeff Lander,来自Darwin 3D, LLC.;    网络和多玩家游戏——Andrew Kirmse,来自LucasArts Entertainment Company;    音频处理——Scott Patterson,来自Next Generation Entertainment。   我们挑选文章的标准是要有长远的保存价值、能与实际紧密结合、视角独特,并且生动有趣。我们主要关注的是那些能给游戏开发人员带来长远效益的问题。本书很多文章所提供的宝贵内容都是读者可以立即采用,得到立竿见影的效果的;另一些文章则较为复杂,牵涉甚广,它们提供了必要的细节与知识,以帮助读者将之融入真实的游戏开发过程之中。   章节说明   带有网络互联、支持多玩家特性的PC游戏市面上已经有很多了——随手拈来,就有无尽的任务(Everquest)、阿斯龙的召唤(Asheron's Call)、网络创世纪(Ultima Online)、反恐精英(Counter-Strike)以及虚幻锦标赛(Unreal Tournament)。正当本书出版之时,三大主流游戏机制造商(Sony、Nintendo与Microsoft)都正在忙于向大众市场推出自己的联网游戏,紧随Sega公司具有联网功能的Dreamcast。与此同时,随着手机技术的发展与市场的普及,无线游戏的市场也正在涌现。其相关技术上至基于模板的对象序列化,下至网络监控与仿真器,甚至还有无线游戏。   前些天,当我正在与一个朋友看电视的时候,看到一个商业广告,在里面有一只可以与人对话的狗。随后,那位朋友对我说:“嘿!这个动画制作得还真够酷的。”就在那时,我正半梦半醒的时候,我才意识到自己刚才真是没有注意到,原来说话的竟是一只狗呢。无疑,我当时已经完全沉浸到了动画与图形的世界中去。我真地梦想能有那么一天,我们创造出来的游戏能达到这种如梦如幻的效果,能让自己沉醉其中。随着图形处理器的更新换代,我们离这个目标越来越近。而在这些使得梦想成真的技术中,就包括了顶点着色器与像素着色器。在本书的图形一章中,我们精选了很多文章来帮助读者营造出一个更真实的环境,创造出更真实的人物。其话题包含了:高层的可编程顶点着色器,它能帮你充分挖掘现代图形芯片的能力;法线分布函数(NDF)以帮你创造有趣的表面效果;另外还有使用纹理作为查找函数以基于每个像素轻松实现高级的图形算法。   网络与图形是游戏编程中非常专业化的两个领域。然而,为了使用它们,我们还需要创建游戏的框架。下面就让我们进入通用编程技术一章吧!在这一章中,我们探讨了方方面面的话题,从游戏设计管理的技巧一直到高效的调试技术。在这一章中,每个游戏开发人员都可以获益极多。   每个算法的背后都隐藏着数学的身影。在教学技巧一章中,我们囊括了一组极佳的数学文章。你可以在其中找到一些通用的数学方法,例如快速2基对数与三角函数的处理;以及某些更具专业性的问题,例如有约束条件的逆向动力学与摩擦仿真处理。最妙的一点就是,这些作者已经为你把问题后面所有数学背景相关的问题都给解决了。   每个游戏的背后都隐藏着人工智能(AI)的身影。人工智能一章中覆盖了众多的话题——有如何改善寻径算法的技巧,也有探讨寻径算法与碰撞模型之间关系的文章。读者可以轻易地使用这里谈到的技术来创建一个更聪明的游戏。 .  视觉效果与游戏智能只是游戏的一部分,耳朵在我们的感官中也占有重要的一席之地。你曾经听过真实的枪响么?亲自听一下比在电影里听到的效果要真实得多。风帽的爆炸声足以使你的身体自动进入警觉状态。为什么?因为我们的耳朵是一个非常精细的器官,它可以提醒我们是否遇到了危险、危险的方向以及危险的距离。因此,作为一个音频开发人员,我鼓励你去在自己的游戏中创造出吸引玩家的音响效果。相应的音频

...展开详情
上传时间:2012-09 大小:32.48MB
热门图书