图书介绍

游戏编程精粹 42025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

游戏编程精粹 4
  • (美)Andrew Kirmse编;沙鹰等译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115136351
  • 出版时间:2005
  • 标注页数:537页
  • 文件大小:47MB
  • 文件页数:593页
  • 主题词:游戏-软件设计-文集

PDF下载


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

下载说明

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

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

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

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

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

图书目录

5.3.1 引言 331

简介 Chris Corry 2

目录2

第1章 通用编程2

1.1.2 第一步:始终如一地重现问题4

1.1 调试游戏程序的学问 Steve Rabin 4

1.1.1 五步调试法4

1.1.3 第二步:搜集线索5

1.1.4 第三步:查明错误的源头6

1.1.6 第五步:对所作的修改进行测试7

1.1.5 第四步:纠正问题7

1.1.7 高级调试技巧8

1.1.8 困难的调试情景和模式10

1.1.10 增加有助于调试的基础设施12

1.1. 9理解底层系统12

1.1.11 预防bug13

1.1.12 结论14

1.1.14 参考文献15

1.1.13 致谢15

1.2.2 究竟什么是事件日志?16

1.2 一个基于HTML的日志和调试系统 James Boer  16

1.2.1 于日志系统的优势16

1.2.3 HTML和调用堆栈17

1.2.4 工作原理18

1.2.6 结论21

1.2.5 一些有用的心得21

1.3.1 关于时间的基础23

1.3 时钟:游戏的脉搏尽在掌握 Noel Llopis 23

1.3.2 时钟系统的组成24

1.3.3 避免失真25

1.3.4 结论29

1.4.1 设计30

1.4 设计和维护大型跨平台库 David Etherton30

1.4.2 Build系统32

1.4.3 细节33

1.4.5 参考文献35

1.4.4 结论35

1.5.1 内存操作36

1.5 利用模板化的空闲列表克服内存碎片问题 Paul Glinker 36

1.5.3 实现细节37

1.5.2 解决方案37

1.5.5 结论40

1.5.4 有效地使用我们的Freelist40

1.5.6 参考文献41

1.6.1 可重用的库42

1.6 一个用C++实现的泛型树容器类 Bill Budge 42

1.6.3 树的实现43

1.6.2 树的概念43

1.6.4 利用STL46

1.6.6 参考文献49

1.6.5 结论49

1.7.1 使用指针51

1.7 弱引用和空对象 Noel Llopis 51

1.7.2 弱引用52

1.7.3 空对象55

1.7.4 结论56

1.7.5 参考文献57

1.8.1 概述58

1.8 游戏中的实体管理系统 Matthew Harmon 58

1.8.2 实体消息60

1.8.3 实体代码61

1.8.5 实体管理器63

1.8.4 类的代码63

1.8.7 开始:消息类65

1.8.6 基于消息的游戏循环65

1.8.8 从小处着手:基本实体消息66

1.8.10 系统成长:一些高级消息67

1.8.9 游戏和环境消息67

1.8.12 扩展到多玩家69

1.8.11 处理碰撞69

1.8.14 好处70

1.8.13 开发和调试消息70

1.8.16 总结71

1.8.15 光盘中的内容71

1.9.1 传统的动态数组管理72

1.9 Windows和Xbox平台上地址空间受控的动态数组 Matt Pritchard 72

1.9.3 地址空间管理!=存储管理73

1.9.2 深入观察73

1.9.5 新的增长规则74

1.9.4 重新思考关于数组增大的问题74

1.9.6 使用地址空间受控的数组75

1.9.7 结论79

1.10.1 可用的技术80

1.10 用临界阻尼实现慢入慢出的平滑 Thomas Lowe 80

1.10.3 实践82

1.10.2 阻尼弦与临界阻尼82

1.10.4 设置平滑速率的上限84

1.10.6 参考文献85

1.10.5 结论85

简介 Eddie Edwards4 86

1.11 一个易用的对象管理器 Natalya Tatarchuk 86

1.11.1 对象管理的传统做法86

第7章 音频86

1.11.2 灵活的对象管理器87

1.11.3 结论91

1.11.4 参考文献92

1.12 使用自定义的RTTI属性对对象进行流操作及编辑 Frederic My 93

1.12.1 扩展的RTTI93

1.12.2 属性95

1.12.3 编辑属性97

1.12.4 保存99

1.12.5 载入100

1.12.6 与旧版本文件的兼容性问题:类的描述101

1.12.7 与旧版本文件的兼容性问题:匹配102

1.12.8 “函数”属性103

1.12.9 技巧和提示103

1.12.10 思考104

1.12.12 参考文献104

1.12.11 结论104

1.13 使用XML而不牺牲速度 Mark T.Price 106

1.13.1 为什么要使用XML呢?106

1.13.2 简单介绍XDS Meta格式107

1.13.3 XDS 工具集108

1.13.4 使用XDS 工具集109

1.13.6 总结115

1.13.7 参考文献115

1.13.5 整合115

第2章 数学118

简介 Jonathan Blow 118

2.1 使用马其赛特旋转的Zobrist散列法 Toby Jones 120

2.1.1 Zobrist散列120

2.1.2 实现Zobrist散列121

2.1.3 马其赛特旋转(MersenneTwister)122

2.1.4 马其赛特旋转的实现123

2.1.6 参考文献124

2.1.5 结论124

2.2 抽取截锥体和camera信息 Waldemar Celes 125

2.2.1 平面变换(Plane Transformation)125

2.2.2 抽取锥体信息127

2.2.3 抽取camera信息128

2.2.4 任意投影变换130

2.2.5 实现131

2.2.6 结论132

2.2.7 参考文献132

2.3 解决大型游戏世界坐标中的精度问题 Peter Freese 133

2.3.1 问题描述133

2.3.2 可能的解决方式135

2.3.3 偏移位置137

2.3.4 渲染流水线变化140

2.3.6 结论143

2.3.5 对性能的思考143

2.3.7 参考文献144

2.4.1 样条的种类145

2.4 非均匀样条 Thomas Lowe 145

2.4.2 三次样条的基础理论146

2.4.3 圆形的非均匀样条147

2.4.4 平滑非均匀样条149

2.4.5 时控的非均匀样条151

2.4.6 计算起始和最终节点速率152

2.4.8 优化153

2.4.9 结论153

2.4.7 在样条上获取速率和加速度153

2.4.10 参考文献154

2.5.1 协方差矩阵155

2.5 用协方差矩阵计算更贴切的包围对象 Jim Van Verth 155

2.5.2 特征值和特征向量158

2.5.4 创建包围对象159

2.5.3 计算协方差矩阵的特征向量159

2.5.5 结论161

2.5.6 参考文献162

2.6 应用于反向运动的雅可比转置方法 Marco Spoerl 163

2.6.1 我们的测试环境163

2.6.2 雅可比矩阵是什么?164

2.6.3 雅可比转置矩阵简介165

2.6.4 实现算法166

2.6.5 结果和比较168

2.6.6 结论171

2.6.7 参考文献171

第3章 物理174

简介 Graham Rhodes 174

3.1 死神的十指:战斗中的命中算法 Roger Smith、Don Stoner176

3.1.1 射击带状物(Ribbon)176

3.1.2 射击靶心177

3.1.3 射击矩形178

3.1.4 使用霰弹枪射击小目标179

3.1.5 移动炮兵的攻击命中179

3.1.6 死亡的4种主要形式180

3.1.8 弹片的楔入182

3.1.7 化学武器、火球及区域性魔法182

3.1.9 攻击丛林183

3.1.10 攻击有猎物分布的丛林183

3.1.11 结论184

3.1.12 参考文献184

3.2 在低速CPU系统中交通工具的物理模拟 Marcin Pancewicz、Paul Bragiel 185

3.2.1 技术的概要和前提假设185

3.2.2 交通工具沿当前行驶方向上的加速及减速186

3.2.3 方向控制188

3.2.4 把所有要素结合起来189

3.2.5 地形的影响189

3.2.6 实现中遇到的问题190

3.2.7 可以改进的地方191

3.2.8 结论192

3.3.1 关于物理引擎193

3.3 编写基于Verlet积分方程的物理引擎 Nick Porcino 193

3.3.2 刚体194

3.3.3 积分器194

3.3.4 物理引擎196

3.3.6 扩展引擎的功能199

3.3.5 针对特定平台的考虑199

3.3.7 结论200

3.3.8 参考文献200

3.4 刚体动力学中的约束器 Russ Smith 201

3.4.1 基本要点201

3.4.2 约束器构造模块202

3.4.3  创建有用的游戏约束器205

3.4.4 光盘中的内容209

3.4.6 参考文献209

3.4.5 结论209

3.5 在动力学模拟中的快速接触消除法 ?dám Moravánszky、Pierre Terdiman 210

3.5.1 减少接触210

3.5.2 对预处理的详细分析213

3.5.3 对接触的分组群的详细分析214

3.5.4 对持续性的详细分析217

3.5.5 结论217

3.5.6 参考文献218

3.6 互动水面 Jerry Tessendorfrf 219

3.6.1 线性的波浪220

3.6.2 垂直导数操作符221

3.6.3 波浪的传播222

3.6.4 可以互动的障碍物及其发生源224

3.6.5 环境波浪225

3.6.6 网格的边界225

3.6.7 表面张力226

3.6.9 参考文献226

3.6.8 结论226

3.7 用多层物理模拟快速变形 Thomas Di Giacomo、Nadia Magnenat-Thalmann 228

3.7.1 基于物理的动画LOD及相关的工作228

3.7.2 使用分层的质量块弹簧物理的快速变形230

3.7.3 结论235

3.7.4 参考文献236

3.8 快速且稳定的形变之模态分析 James F.O’Brien 237

3.8.1 模式分解239

3.8.2 模式的理解和丢弃241

3.8.3 模态模拟242

3.8.5 结论244

3.8.4 总结244

3.8.6 参考文献245

简介 Paul Tozour 248

第4章 人工智能248

4.1 第三人称视角摄像镜头的运动规则 Jonathan Stone 250

4.1.1 Camera定位及运动250

4.1.2 Camera与场景边界253

4.1.3 Camera遮断256

4.1.5 结论258

4.1.6 参考文献258

4.1.4 简化场景258

4.2 叙述战斗:利用AI增强动作游戏中的张力 Borut Pfeifer 260

4.2.1 戏剧张力260

4.2.2 系统概述263

4.2.3 设计者的控制部分263

4.2.4 难度计算264

4.2.5 难度调节265

4.2.6 系统评价266

4.2.8 参考文献267

4.2.7 结论267

4.3 非玩家角色决策:处理随机问题 Karén Pivazyan 268

4.3.1 概要268

4.3.2 动态规划算法269

4.3.3 代码273

4.3.4 优化275

4.3.5 DP算法的其他应用275

4.3.6 结论276

4.3.7 参考文献276

4.4 一个基于效用的面向对象决策架构 John Hancock 277

4.4.2 基于对象的更好的体系结构278

4.4.1 决策树278

4.4.3 期望值280

4.4.4 其他的决策准则281

4.4.5 结论282

4.4.6 参考文献283

4.5 一个分布式推理投票架构 John Hancock 284

4.5.1 分布式推理284

4.5.2 操纵仲裁者(Steering Arbiter)范例286

4.5.3 选择投票空间289

4.5.4 结论290

4.5.5 参考文献291

4.6 吸引子和排斥子 John M.Olsen 292

4.6.1 合力292

4.6.2 引力曲线293

4.6.3 吸引曲线的和294

4.6.4 对应于特定配对的特定曲线295

4.6.5 动态曲线295

4.6.6 点、线、面297

4.6.8 动画系统的交互298

4.6.7 AI控制的层次298

4.6.9 移动(Steering)299

4.6.11 参考文献299

4.6.10 结论299

4.7 高级RTS游戏造墙算法 Mario Grimani 301

4.7.1 算法301

4.7.2 算法改进302

4.7.3 输出链表的形式306

4.7.4 结论307

4.7.5 参考文献307

4.8 利用可编程图形硬件处理人工神经元网络 Thomas Rolfes 308

4.8.1 CPU与GPU系统架构308

4.8.2 人工神经元网络309

4.8.3 实现310

4.8.4 结论311

4.8.5 参考文献311

第5章 图形图像314

简介 Alex Vlachos 314

5.1 具有海报质量的屏幕截图 Steve Rabin 316

5.1.1 提高分辨率316

5.1.2 提升像素质量318

5.1.3 使用一个磁盘均衡采样分布320

5.1.4 为抗锯齿调整像素的采样宽度321

5.1.5 增加分辨率同增加像素质量相结合321

5.1.6 结论323

5.1.7 参考文献324

5.2 非封闭网络模型的GPU容积阴影构架 Warrick Buchanan 325

5.2.1 回到制图板325

5.2.2 在顶点阴影中实现这项技术326

5.2.3 需要注意的事项329

5.2.4 结论330

5.2.5 参考文献330

5.3 透视阴影贴图 Marc Stamminger 331

5.3.2 后透视空间332

5.3.3 后透视空间中的光334

5.3.4 透视阴影贴图335

5.3.5 实现338

5.3.6 结论339

5.3.7 参考文献340

5.4 结合使用深度和基于ID的阴影缓冲 Kurt Pelzer 341

5.4.1 已有的阴影映射技术341

5.4.2 深度和基于ID的阴影缓冲342

5.4.3 结合深度和ID缓冲343

5.4.4 组合的阴影缓冲概述344

5.4.5 第一次:从光照的视点渲染345

5.4.6 第二次:阴影检测347

5.4.7 在DX9 2.0级的阴影中的实现351

5.4.8 结论353

5.4.9 参考文献353

5.5 在场景中投射静态阴影 Alex Vlachos 355

5.5.1 前期工作355

5.5.2 光束基本知识355

5.5.3 高级算法356

5.5.4 T形连接357

5.5.5 网格模型最优算法358

5.5.6 实现细节359

5.5.7 阴影中的动态物体360

5.5.8 结果360

5.5.9 结论361

5.5.10 参考文献361

5.6 为阴影体和优化的网格模型调整实时光照 Alex Vlachos、Chris Oat 362

5.6.1 光照问题362

5.6.2 在面法线上操作362

5.6.3 调整漫射光照364

5.6.4 结论366

5.6.5 参考文献366

5.7 实时半调色法:快速而简单的样式化阴影 Bert Freudenberg、Maic Masuch、Thomas Strothotte 367

5.7.1 引言367

5.7.2 原理368

5.7.3 实例的实现371

5.7.4 结论372

5.7.5 参考文献372

5.8 在3D模型中应用团队色的各种技术 Greg Seegert 373

5.8.1 什么是团队色?373

5.8.2 团队色的算法373

5.8.3 一个实际的例子378

5.8.4 光盘中的内容379

5.8.5 结论379

5.9 快速的棕褐色色调转换 Marwan Y.Ansari 380

5.9.1 背景380

5.9.2 常规的方法380

5.9.3 优化381

5.9.4 结论382

5.9.5 参考文献382

5.10 使用场景亮度采样实现动态的Gamma Michael Dougherty、Dave McCoy 383

5.10.1 光照系数383

5.10.2 有限的动态范围383

5.10.3 图像的优化384

5.10.4 易变的光灵敏度385

5.10.5 转换386

5.10.6 算法388

5.10.7 结论392

5.11 热和薄雾的后处理效果 Chris Oat、Natalya Tatarchuk 393

5.11.1 热和闪光的薄雾393

5.11.2 高级算法393

5.11.3 计算失真值394

5.11.4 失真值的解释397

5.11.5 结论400

5.11.6 参考文献400

5.12 用四元数的硬件蒙皮 Jim Hejl 401

5.12.1 蒙皮的概念402

5.12.2 四元数参数化404

5.12.3 硬件实现405

5.12.4 结论407

5.12.5 参考文献407

5.13 动作捕捉数据的压缩 S?ren Hannibal 409

5.13.1 处理的计划409

5.13.2 组织数据通道410

5.13.3 减少已储存的键的数量410

5.13.4 包装剩余的键412

5.13.5 运行时解压缩412

5.13.6 未来的改进413

5.13.7 结论413

5.13.8 参考文献413

5.14 基于骨骼的有关节的3D角色的快速碰撞检测 Oliver Heim、Carl S.Marshall、Adam Lake 414

5.14.1 碰撞检测与碰撞分解414

5.14.2 术语414

5.14.3 将碰撞检测集成到3D游戏引擎中415

5.14.4 基于骨骼的快速碰撞检测算法416

5.14.5 结论423

5.14.6 感谢423

5.14.7 参考文献423

5.15 使用地平线进行地形的遮挡剔除 Glenn Fiedler 424

5.15.1 引言424

5.15.2 地平线剔除基础425

5.15.3 蛮力地平线剔除426

5.15.4 近似值426

5.15.5 近似地平线直线427

5.15.6 一个更好的近似值427

5.15.7 最小二次方线428

5.15.8 将它放入到第三维中429

5.15.9 最小二次方平面430

5.15.10 用近似值的地平线剔除431

5.15.11 被地形遮挡的对象432

5.15.12 使它成为动态的432

5.15.13 未来的方向433

5.15.14 结论433

5.15.15 参考文献433

第6章 网络和多人游戏436

简介 Pete Isensee 436

6.1 设计与开发游戏大厅 Shekhar Dhupelia 437

6.1.1 状态—事件系统的设计437

6.1.2 探讨大厅的子系统438

6.1.3 高级大厅子系统439

6.1.4 结论441

6.1.5 参考文献442

6.2 支持成千上万个客户端的服务器 Adam Martin 443

6.2.1 服务器设计中的门槛443

6.2.2 问题444

6.2.3 主要技术446

6.2.4 服务器设计451

6.2.5 结论452

6.2.6 参考文献452

6.3 大型多人游戏状态的有效存储 Justine Quimby 454

6.3.1 MMP的问题454

6.3.2 Qualities理论455

6.3.3 Qualities API456

6.3.4 使用Qualities的好处459

6.3.5 结论459

6.3.6 参考文献460

6.4 在客户/服务器环境下运用并行状态机 Jay Lee 461

6.4.1 独立状态461

6.4.2 角色状态管理器463

6.4.3 使用CharacterStateMgr464

6.4.4 保持客户端和服务器端的同步464

6.4.5 状态依赖的子系统466

6.4.6 结论467

6.4.7 参考文献467

6.5 位打包:一种网络压缩技术 Pete Isensee 468

6.5.1 一个实例468

6.5.2 难点469

6.5.3 位打包469

6.5.4 用于可打包数据类型的通用接口471

6.5.5 用于可打包数据类型的具体接口471

6.5.6 编解码器472

6.5.7 评价折衷473

6.5.8 改进473

6.5.9 结论473

6.5.10 参考文献474

6.6 多服务器网络游戏的时间和同步管理 石卫东(Larry Shi)、Tao Zhang 475

6.6.1 为什么需要时间和同步管理475

6.6.2 时钟同步475

6.6.3 同步和响应476

6.6.4 用多时间管理来一石二鸟地实现同步和响应476

6.6.5 实现476

6.6.6 何时应使用多时管理482

6.6.7 总结482

6.6.8 致谢482

6.6.9 参考文献482

7.1 OpenAL简介 Joe Valenzuela487

7.1.1 OpenAL API487

7.1.2 有关OpenAL的实现493

7.1.3 实现一致性指南495

7.1.6 参考文献496

7.1.5 总结496

7.1.4 未来OpenAL的发展蓝图496

7.2.1 实现497

7.2 简单的实时Lip-Synching系统 Jake Simpson 497

7.2.2 动画方面需要注意的事项498

7.2.3 声音音量的水印标记499

7.2.5 总结500

7.2.4 注意500

7.3.2 动态变量类501

7.3.1 动态变量是什么?501

7.3 动态变量和音频编程 James Boer 501

7.3.3 在音频编程中使用动态变量503

7.3.6 参考文献506

7.3.5 结论506

7.3.4 其他改进506

7.4 创建一个音频脚本系统 Borut Pfeifer 507

7.4.1 游戏中音频的类别508

7.4.3 基于XML的音频标记库510

7.4.2 工具510

7.4.4 脚本系统组件512

7.4.5 进一步的工作515

7.4.6 总结515

7.4.7 参考文献515

7.5 使用EAX和ZoomFX API的环境音效解决方案 Scott Velasquez 516

7.5.1 什么是环境音效516

7.5.2 音频引擎的系统要求517

7.5.3 潜在可听集(PAS,Potentially Audible Set)518

7.5.4 EAX介绍520

7.5.5 总结528

7.5.6 参考文献528

7.6 在游戏的物理引擎中控制实时声音 Frank Luchs 529

7.6.1 游戏引擎529

7.6.2 混合声音合成531

7.6.3 可听见对象的属性532

7.6.4 对象形状的影响532

7.6.6 撞击和碰撞533

7.6.7 演示533

7.6.5 对象材质的影响533

7.6.8 总结534

7.6.9 参考文献534

附录536

热门推荐