图书介绍

游戏编程精粹 2PDF|Epub|txt|kindle电子书版本网盘下载

游戏编程精粹 2
  • (美)Mark A.Deloura编;袁国忠,陈蔚译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115108714
  • 出版时间:2003
  • 标注页数:486页
  • 文件大小:47MB
  • 文件页数:527页
  • 主题词:游戏-应用程序-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

游戏编程精粹 2PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 通用编程技术1

绪论3

Scott Bilas5

1.1 优化C++游戏5

Andrew Kirmse5

1.1.1对象的创建和销毁5

1.1.2内存管理8

1.1.3虚拟函数9

1.1.4代码长度10

1.1.5标准模板库11

1.1.6高级特性12

1.1.7参考文献13

1.2内联函数和宏14

PeterDalton14

1.2.1 内联函数的优点14

1.2.2何时使用内联函数15

1.2.3何时使用宏16

1.2.4微软特有的情况16

1.2.5参考文献17

1.3抽象接口编程18

Noel Liopis18

1.3.1抽象接口18

1.3.2添加一个工厂(factory)19

1.3.3抽象接口特性21

1.3.4一切都是有代价的23

1.3.5结论24

1.3.6参考文献24

1.4 从DLL中导出C++类25

HerbMarselas25

1.4.1导出函数25

1.4.2导出类25

1.4.3导出类成员函数27

1.4.4导出虚拟类成员函数27

1.4.5 总结28

1.5避免DLL困境29

HerbMarselas29

1.5.1 显式链接还是隐式链接29

1.5.2 LoadLibrary和GetProcAddress30

1.5.3提防DirectX30

1.5.4使用操作系统特有的特性31

1.5.5 总结32

1.6动态类型信息34

ScottWakeling34

1.6.1动态类型信息类简介34

1.6.2暴露和查询DTI35

1.6.3继承的含义是“是一个”36

1.6.4处理通用对象37

1.6.5实现永久性类型信息38

1.6.6将永久性类型信息用于游戏保存数据库中39

1.6.7结论40

1.6.8参考文献40

1.7用于通用C++成员访问的属性类41

Charles Cafrelli41

1.7.1代码41

1.7.2其他用途44

1.7.3推荐读物44

1.8一个游戏实体工厂45

Francois Dominic Laramée45

1.8.1 组件45

1.8.2 flyweight类、行为类和导出类45

1.8.3 flyweight对象46

1.8.4 SAMMy,你在哪里46

1.8.5行为类层次47

1.8.6使用模板方法模式来完成行为任务48

1.8.7导出类49

1.8.8实体工厂50

1.8.9在运行阶段选择策略52

1.8.10最后的注意事项53

1.8.11参考文献53

1.9 在C++添加摒弃功能55

Noel Llopis55

1.9.1可能的解决方案55

1.9.2理想的解决方案55

1.9.3使用和指定被摒弃的函数56

1.9.4使用C++实现摒弃功能56

1.9.5可改进的地方58

1.9.6致谢58

1.9.7参考文献58

1.10一个插入式调试内存管理器59

PeterDalton59

1.10.1 内存管理器初步59

1.10.2 内存管理器的记录工作60

1.10.3报告信息62

1.10.4注意事项63

1.10.5进一步的改进64

1.10.6参考文献64

1.11一个内置的游戏剖析模块66

JeffEvertt66

1.11.1 有关剖析的基本知识66

1.11.2商用工具67

1.11.3 为何要自己开发模块67

1.11.4剖析模块(Profiling module)的需求68

1.11.5架构和实现68

1.11.6实现的细节69

1.11.7分析数据69

1.11.8有关实现的注意事项70

1.12用于Windows游戏的线性编程模型71

JavierE. Otaegui71

1.12.1 更新背景71

1.12.2解决方案:多线程(Multithreading)72

1.12.3参考文献75

1.13栈缠绕76

Bryon Hapgood76

1.13.1简单的TempRet76

1.13.2TempRet链77

1.13.3 Thunking78

1.13.4递归80

1.14 自我修改的代码82

Bryon Hapgood82

1.14.1 RAM代码的原理82

1.14.2一个快速的Bit Blitter83

1.15使用资源文件来管理文件91

Bruno Sousa91

1.15.1何为资源文件91

1.15.2设计92

1.15.3 实现93

1.15.4有关实现的最后一些说明94

1.15.5 结论95

1.15.6参考文献95

1.16游戏输入的记录和重放96

Bruce Dawson96

1.16.1记录输入有何用途96

1.16.2原理97

1.16.3测试输入记录功能100

1.16.4结论100

1.16.5参考文献101

1.17一个灵活的文本分析系统102

JamesBoer102

1.17.1 分析系统102

1.17.2宏、头文件和预处理技术103

1.17.3该分析系统的结构104

1.17.4 小结106

1.18一个通用的调节 器107

Lasse StaffJensen107

1.18.1 需求分析107

1.18.2实现107

1.18.3使用112

1.18.4图形用户界面112

1.18.5附注114

1.18.6致谢114

1.19生成真正的随机数115

PeteIsensee115

1.19.1伪随机115

1.19.2真正随机115

1.19.3随机输入源116

1.19.4硬件源116

1.19.5混合函数117

1.19.6局限性117

1.19.7实现117

1.19.8 GenRand的随机程度119

1.19.9参考文献119

1.20使用Bloom过滤器来提高计算性能120

MarkFischer120

1.20.1 Bloom的方式120

1.20.2可能的情形120

1.20.3 工作原理121

1.20.4定义121

1.20.5范例1121

1.20.6范例2125

1.20.7最后的说明125

1.20.8结论126

1.20.9参考文献126

1.21 3Ds MAX中的Skin导出器和动画工具包127

Marco Tombesi128

1.21.1 导出128

1.21.2参考文献137

1.22在视频游戏中使用Web摄像机138

Nathan d'Obrenan138

1.22.1初始化Web摄像机捕获窗口138

1.22.2操纵Web摄像机数据143

1.22.3结论147

1.22.4参考文献147

第2章 数学技巧1

绪论151

Eddie Edwards152

2.1浮点计算技巧:使用IEEE浮点格式以提高性能152

YossarianKing132

2.1.1概述132

2.1.2 IEEE浮点格式152

2.1.3浮点数技巧133

2.1.4用于正弦和余弦函数的线性查找表158

2.1.5平方根函数的对数优化160

2.1.6优化任何函数161

2.1.7性能测量163

2.1.8结论163

2.1.9参考文献164

2.2矢量和平面技巧165

John Olsen165

2.2.1相对于碰撞面的高度165

2.2.2找出碰撞点166

2.2.3到碰撞点的距离167

2.2.4反射式碰撞168

2.2.5 阻尼碰撞170

2.3一种快速、健壮的计算3D线段交点的方法172

Graham Rhodes172

2.3.1这种算法健壮的原因172

2.3.2问题描述172

2.3.3推导闭式解决方案方程174

2.3.4线段179

2.3.5实现描述181

2.3.6可优化的地方181

2.3.7结论182

2.3.8参考文献182

2.4反向弹道计算183

Aaron Nicholls184

2.4.1一种特殊情况184

2.4.2优化实现189

2.4.3总结190

2.5平行移动镜头191

Carl Dougan191

2.5.1 技术191

2.5.2结论194

2.5.3参考文献194

2.6 平滑的基于四元数的C2飞行路径195

Alex Vlachos195

2.6.1导论195

2.6.2位置插值195

2.6.3朝向插值196

2.6.4旋转方向和选择性求负197

2.6.5四元数样条线插值198

2.6.6有理映射中的奇异点199

2.6.7镜头剪接199

2.6.8代码199

2.6.9参考文献200

2.7递归逐维分组:一种快速的碰撞检测算法201

Steve Rabin202

2.7.1其他应用202

2.7.2 该算法的缺陷205

2.7.3查找碰撞物体对206

2.7.4时间复杂度208

2.7.5结论209

2.7.6参考文献209

2.8不规则碎片编程210

Jesse Laeuchli210

2.8.1无规则碎片210

2.8.2断层无规则碎片211

2.8.3 FBM211

2.8.4实现212

2.8.5使用FBM215

2.8.6参考文献216

第3章 人工智能219

绪论219

SteveRabin221

3.1 AI优化策略221

Steve Rabin221

3.1.1 策略1:使用事件驱动行为而非轮询221

3.1.2策略2:减少重复计算222

3.1.3策略3:由管理员集中进行协调222

3.1.4策略4:不那么频繁地运行AI222

3.1.5策略5:将处理工作分散到多帧中完成223

3.1.6策略6:利用细节 级AI223

3.1.7策略7:只解决问题的一部分223

3.1.8策略8:离线完成困难的工作224

3.1.9策略9:使用突发行为以避免编写脚本224

3.1.10策略10:通过连续记录来分摊查询成本224

3.1.11策略11:重新考虑问题225

3.1.12结论225

3.1.13参考文献226

3.2用于游戏对象AI的微线程227

Bruce Dawson228

3.2.1一个更简单的方法228

3.2.2微线程229

3.2.3栈管理230

3.2.4并发症231

3.2.5 结论232

3.2.6参考文献232

3.3使用微线程管理AI233

Simon Carter233

3.3.1拼凑233

3.3.2良好的行为233

3.3.3了然于胸234

3.3.4并发症236

3.3.5结论238

3.3.6参考文献239

3.4一种RTS命令排队体系结构240

Steve Rabin240

3.4.1 RTS命令240

3.4.2命令排队240

3.4.3循环命令242

3.4.4结论244

3.4.5参考文献244

3.5一种基于分片的高性能视域和搜索系统245

MattPritchard245

3.5.1概述245

3.5.2定义245

3.5.3组件1:各个玩家的可见性地图246

3.5.4组件2:LOS模板246

3.5.5组件3:合并的可视性地图248

3.5.6改进搜索249

3.5.7结论251

3.6创建影响力地图252

Paul Tozour252

3.6.1影响力地图252

3.6.2一个简单的影响力地图253

3.6.3影响力地图中的单元格数据254

3.6.4计算合意值255

3.6.5确定最佳的单元格大小256

3.6.6影响力传播256

3.6.7考虑地形257

3.6.8特别考虑258

3.6.9刷新影响力地图259

3.6.10 3D环境中的影响力地图259

3.6.11参考文献和推荐读物260

3.7策略评估技术261

Paul Tozour261

3.7.1资源分配树261

3.7.2计算希望的资源分配262

3.7.3判断当前的分配情况263

3.7.4策略决策263

3.7.5值的估量264

3.7.6依存图264

3.7.7依存图节 点265

3.7.8经济规划265

3.7.9查找脆弱的依存266

3.7.10策略推理266

3.7.11 玩家个性267

3.7.12总结267

3.7.13参考文献267

3.8 3D游戏中的地形推理269

William van derSterren269

3.8.1 以方便推理的方式表示地形269

3.8.2中继点(waypoint)270

3.8.3范例地形和AI需求270

3.8.4战术分析(tactical analysis)270

3.8.5从战术价值到中继点属性271

3.8.6计算中继点属性272

3.8.7从经验中学习274

3.8.8将地形推理加入到游戏中275

3.8.9其他应用275

3.8.10结论276

3.8.11参考文献和推荐读物276

3.9用于可视点寻径的扩展几何体277

Thomas Young277

3.9.1定义碰撞模型277

3.9.2多边形寻径278

3.9.3扩展并解决问题278

3.9.4凸多边形的闵可夫斯基和279

3.9.5扩展非凸几何体280

3.9.6选择碰撞形状281

3.9.7结论281

3.9.8参考文献281

3.10优化可视点寻径283

Thomas Young283

3.10.1可视点寻径(points-of-visibility pathfinding)283

3.10.2存储到每个点的最短路径283

3.10.3将凸角相连284

3.10.4轮廓区285

3.10.5将轮廓区用于空间分区系统287

3.10.6结论287

3.10.7参考文献287

3.11有齿物群的模拟:捕食者和猎物288

Steven Woodcock289

3.11.1全新的世界289

3.11.2有齿物群的模拟291

3.11.3局限性和可改进的地方291

3.11.4参考文献292

3.12一个用C++编写的通用模糊状态机293

EricDybsand294

3.12.1 为何在游戏中使用FuSM294

3.12.2如何在游戏中使用FuSM294

3.12.3 复习《游戏编程精粹1》中的C++通用有限状态机295

3.12.4将通用FSM修改为FuSM295

3.12.5在游戏中使用模糊逻辑296

3.12.6参考文献296

3.13避免模糊系统中的组合激增297

Michael Zarozinski297

3.13.1 问题297

3.13.2解决方案298

3.13.3范例299

3.13.4结论303

3.13.5参考文献303

3.14一个在游戏中使用神经元网络的例子304

JohnManslow304

3.14.1游戏304

3.14.2多玩家感知器304

3.14.3选择输入306

3.14.4收集数据306

3.14.5训练MLP307

3.14.6结果308

3.14.7 结论308

3.14.8参考文献309

第4章 几何体管理313

绪论313

EricLengyel314

4.1各种VIPM方法的比较314

Tom Forsyth314

4.1.1考虑因素314

4.1.2 Vanilla VIPM316

4.1.3跳带319

4.1.4多层跳带319

4.1.5混合模式VIPM320

4.1.6混合模式跳带321

4.1.7滑窗321

4.1.8小结324

4.1.9参考文献325

4.2使用联锁分片简化地形326

GregSnook327

4.2.1分片的重访问327

4.2.2生成地图328

4.2.3分片模板328

4.2.4消除难看的接缝329

4.2.5更好、更快、更强330

4.2.6结论331

4.2.7参考文献331

4.3快速可视剔除、射线跟踪以及范围搜索的球形树332

John W.Ratcliff332

4.3.1包围球332

4.3.2使用球形树332

4.3.3演示应用程序333

4.4压缩的轴向包围盒树335

Miguel Gomez335

4.4.1概览层次排序方法335

4.4.2 AABB树336

4.4.3构建AABB树336

4.4.4压缩AABB树337

4.4.5近似范围337

4.4.6利用冗余338

4.4.7运行时效339

4.4.8 将来的工作339

4.4.9参考文献339

4.5直接访问四叉树查找340

MattPritchard340

4.5.1性能剖析340

4.5.2消除中间阻碍341

4.5.3条件和要求341

4.5.4判断树层341

4.5.5位置映射343

4.5.6判断位置344

4.5.7遍历四叉树344

4.5.8优化四叉树344

4.6近似鱼缸折射347

Alex Vlachos347

4.6.1鱼缸观察现象347

4.6.2提高其真实性349

4.6.3结论349

4.7渲染打印分辨率的屏幕快照350

Alex Vlachos350

4.7.1基本算法350

4.7.2 忠告及注意353

4.7.3结论353

4.7.4参考文献353

4.8对任意表面应用贴花354

EricLengyel354

4.8.1算法354

4.8.2三角形剪裁356

4.8.3实现代码357

4.8.4参考文献357

4.9用天空包围盒渲染远景358

Jason Shankel358

4.9.1基本技术358

4.9.2天空包围盒分辨率359

4.9.3天空包围盒大小359

4.9.4渲染场景360

4.9.5立方体环境映射360

4.9.6生成天空包围盒纹理361

4.9.7结论361

4.9.8源代码361

4.10自阴影角色362

Alex Vlachos,David Gosselin,Jason L.Mitchell362

4.10.1 研究回顾362

4.10.2角色几何分割362

4.10.3渲染纹理362

4.10.4渲染角色363

4.10.5结论364

4.10.6参考文献364

4.11经典的SuperMario64游戏第三人称控制和动画365

Steve Rabin365

4.11.1设置365

4.11.2转换控制器的输入365

4.11.3旋转角色367

4.11.4角色移动368

4.11.5角色动画368

4.11.6 SupelMario64动画分析370

4.11.7结论371

4.11.8参考文献371

第5章 图形显示375

绪论375

D.SimDietrichJr376

5.1卡通渲染:实时轮廓边缘检测与渲染376

CarlS.Marshall376

5.1.1着墨器(Inker)376

5.1.2重要的边377

5.1.3轮廓边缘检测技术377

5.1.4基于边的着墨377

5.1.5可编程顶点着色器着墨379

5.1.6高级纹理特征着墨381

5.1.7结论381

5.1.8参考文献382

5.2使用纹理映射的卡通渲染与可编程顶点着色器383

Adam Lake383

5.2.1卡通着色技术383

5.2.2上色383

5.2.3可编程顶点着色器386

5.2.4结论388

5.2.5参考文献388

5.3动态逐像素光照技术389

Dan Ginsburg,Dave Gosselin389

5.3.1动态光照贴图的3D纹理389

5.3.2 Dot3凹凸贴图(Bump Mapping)391

5.3.3使用立方贴图规一化395

5.3.4逐像素聚光灯(Per-Pixel Spotlight)396

5.3.5参考文献396

5.4使用3D硬件生成过程云彩398

Kim Pallister398

5.4.1 云彩性质398

5.4.2生成随机数399

5.4.3噪音多个倍频的动画401

5.4.4贴图到天空几何体403

5.4.5功能延伸404

5.4.6硬件限制404

5.4.7可伸缩性405

5.4.8结论405

5.4.9参考文献406

5.5针对较快镜头眩光的纹理屏蔽407

Chris Maughan407

5.5.1镜头眩光遮挡407

5.5.2硬件问题407

5.5.3纹理屏蔽409

5.5.4性能考虑410

5.5.5改进411

5.5.6示例代码411

5.5.7替代途径412

5.5.8参考文献412

5.6实用优先缓冲阴影413

D.Sim DietrichJr.415

5.6.1 比较优先缓冲与深度缓冲415

5.6.2解决锯齿化问题416

5.6.3混合途径417

5.6.4小结418

5.6.5参考文献418

5.7替用体技术:添加点缀419

Tom Forsyth419

5.7.1 整个过程419

5.7.2渲染替换体420

5.7.3更新试探法423

5.7.4效率424

5.7.5预测424

5.7.6小结425

5.8硬件加速过程纹理动画中的运算426

Greg James426

5.8.1硬件运算426

5.8.2将来的工作435

5.8.3致谢435

5.8.4示例源码435

5.8.5参考文献435

第6章 音频编程439

绪论439

JamesBoer440

6.1游戏音频设计模式440

Scott Patterson440

6.1.1桥接(Bridge)440

6.1.2外观(Facade)441

6.1.3合成(Composite)441

6.1.4代理(Proxy)442

6.1.5修饰器(Decorator)442

6.1.6命令(Command)443

6.1.7备忘录(Memento)443

6.1.8观测器(Observer)443

6.1.9大泥球(BigBallofMud)(也称做“意大利面条式”代码)444

6.1.10结论445

6.1.11参考文献445

6.2在采样合成器中声音的同步重用技术446

Thomas Engel446

6.2.1存在的问题446

6.2.2解决方案的思路447

6.2.3解决方案447

6.2.4结论448

6.3软件DSP效果450

IanLewis450

6.3.1滤波450

6.3.2卷积(convolution)451

6.3.3延迟451

6.3.4插值(interpolation)452

6.3.5参考文献453

6.4数字音频的交互式处理管线454

Keith Weiner454

6.4.1简介454

6.4.2讨论456

6.4.3代码458

6.4.4额外注释461

6.4.5结论462

6.5游戏中的基本音乐音序器463

Scott Patterson463

6.5.1音乐流与音序463

6.5.2核心计算机音乐概念464

6.5.3计算机音序器实现466

6.5.4音频合成(composite)控制472

6.5.5源码473

6.5.6结论473

6.5.7参考文献473

6.6用于游戏的交互式音序器474

Scott Patterson474

6.6.1音乐联想474

6.6.2音乐意义474

6.6.3过渡476

6.6.4过渡类型476

6.6.5控制粒度477

6.6.6目标控制477

6.6.7设计示例479

6.6.8源码480

6.6.9结论480

6.6.10参考文献480

6.7底层声音API481

IanLewis481

核心类481

索引483

热门推荐