下载地址:
下载地址1资源简介:
中文名: 游戏编程精粹2原名: Game Programming Gems 2别名: 游戏编程, 游戏开发作者: (美)Mark A.Deloura译者: 袁国忠陈蔚资源格式: PDF版本: 扫描版出版社: 人民邮电出版社书号: 7115108714发行时间: 2003年12月地区: 大陆语言: 简体中文简介: 内容介绍: 本书是“游戏编程精粹”系列丛书的第二本,包括70多篇全新的、探讨各种游戏编程主题的文章,每篇文章要么提供了某个编程问题的实用解决方案,要么提出了一种创造性的减少编程时间和冗余的方法。本书涵盖了开发最尖端的游戏引擎所涉及的主要主题,全书由6章组成,包括通用编程技术、数学技巧、人工智能、几何体管理、图形显示和音频编程。 专家级开发人员可以立刻应用书中介绍的技巧,而初中级程序员通过阅读本书将增强其技能和知识。这是一本必备的参考资料,是40多位经验丰富的游戏开发人员智慧和经验的结晶。 作者介绍: Mark Deloura是Game Developer杂志的主编,也是《游戏编程精粹1》和《游戏编程精粹2》的编辑。加入Game Developer之前,Mark在任天堂(美国)公司工作过5年,担任开发人员关系小组的主力软件工程师,从事Gamecube和Nintendo 64开发。在此之前,Mark还从事过虚拟现实方面的研究,是多个Usenet虚拟现实新闻组的主持人之一。 目录: 第1章 通用编程技术绪论 Scott Bilas1.1 优化C++游戏 Andrew Kirmse1.1.1 对象的创建和销毁1.1.2 内存管理1.1.3 虚拟函数1.1.4 代码长度1.1.5 标准模板库1.1.6 高级特性1.1.7 参考文献1.2 内联函数和宏 Peter Dalton1.2.1 内联函数的优点1.2.2 何时使用内联函数1.2.3 何时使用宏1.2.4 微软特有的情况1.2.5 参考文献1.3 抽象接口编程 Noel Liopis1.3.1 抽象接口1.3.2 添加一个工厂(factory)1.3.3 抽象接口特性1.3.4 一切都是有代价的1.3.5 结论1.3.6 参考文献1.4 从DLL中导出C++类 Herb Marselas1.4.1 导出函数1.4.2 导出类1.4.3 导出类成员函数1.4.4 导出虚拟类成员函数1.4.5 总结1.5 避免DLL困境 Herb Marselas1.5.1 显式链接还是隐式链接1.5.2 LoadLibrary和GetProcAddress1.5.3 提防DirectX1.5.4 使用操作系统特有的特性1.5.5 总结1.6 动态类型信息 Scott Wakeling1.6.1 动态类型信息类简介1.6.2 暴露和查询DTI1.6.3 继承的含义是“是一个”1.6.4 处理通用对象1.6.5 实现永久性类型信息1.6.6 将永久性类型信息用于游戏保存数据库中1.6.7 结论1.6.8 参考文献1.7 用于通用C++成员访问的属性类 Charles Cafrelli1.7.1 代码1.7.2 其他用途1.7.3 推荐读物1.8 一个游戏实体工厂 Fran?ois Dominic Laramée1.8.1 组件1.8.2 flyweight类、行为类和导出类1.8.3 flyweight对象1.8.4 SAMMy,你在哪里?1.8.5 行为类层次1.8.6 使用模板方法模式来完成行为任务1.8.7 导出类1.8.8 实体工厂1.8.9 在运行阶段选择策略1.8.10 最后的注意事项1.8.11 参考文献1.9 在C++添加摒弃功能 Noel Llopis1.9.1 可能的解决方案1.9.2 理想的解决方案1.9.3 使用和指定被摒弃的函数1.9.4 使用C++实现摒弃功能1.9.5 可改进的地方1.9.6 致谢1.9.7 参考文献1.10 一个插入式调试内存管理器 Peter Dalton1.10.1 内存管理器初步1.10.2 内存管理器的记录工作1.10.3 报告信息1.10.4 注意事项1.10.5 进一步的改进1.10.6 参考文献1.11 一个内置的游戏剖析模块 Jeff Evertt1.11.1 有关剖析的基本知识1.11.2 商用工具1.11.3 为何要自己开发模块1.11.4 剖析模块(Profiling module)的需求1.11.5 架构和实现1.11.6 实现的细节1.11.7 分析数据1.11.8 有关实现的注意事项1.12 用于Windows游戏的线性编程模型 Javier F. Otaegui1.12.1 更新背景1.12.2 解决方案:多线程(Multithreading)1.12.3 参考文献1.13 栈缠绕 Bryon Hapgood1.13.1 简单的TempRet1.13.2 TempRet链1.13.3 Thunking1.13.4 递归1.14 自我修改的代码 Bryon Hapgood1.14.1 RAM代码的原理1.14.2 一个快速的Bit Blitter1.15 使用资源文件来管理文件 Bruno Sousa1.15.1 何为资源文件1.15.2 设计1.15.3 实现1.15.4 有关实现的最后一些说明1.15.5 结论1.15.6 参考文献1.16 游戏输入的记录和重放 Bruce Dawson1.16.1 记录输入有何用途1.16.2 原理1.16.3 测试输入记录功能1.16.4 结论1.16.5 参考文献1.17 一个灵活的文本分析系统 James Boer1.17.1 分析系统1.17.2 宏、头文件和预处理技术1.17.3 该分析系统的结构1.17.4 小结1.18 一个通用的调节器 Lasse Staff Jensen1.18.1 需求分析1.18.2 实现1.18.3 使用1.18.4 图形用户界面1.18.5 附注1.18.6 致谢1.19 生成真正的随机数 Pete Isensee1.19.1 伪随机1.19.2 真正随机1.19.3 随机输入源1.19.4 硬件源1.19.5 混合函数1.19.6 局限性1.19.7 实现1.19.8 GenRand的随机程度1.19.9 参考文献1.20 使用Bloom过滤器来提高计算性能 Mark Fischer1.20.1 Bloom的方式1.20.2 可能的情形1.20.3 工作原理1.20.4 定义1.20.5 范例11.20.6 范例21.20.7 最后的说明1.20.8 结论1.20.9 参考文献1.21 3Ds MAX中的Skin导出器和动画工具包 Marco Tombesi1.21.1 导出1.21.2 参考文献1.22 在视频游戏中使用Web摄像机 Nathan d'Obrenan1.22.1 初始化Web摄像机捕获窗口1.22.2 操纵Web摄像机数据1.22.3 结论1.22.4 参考文献第2章 数学技巧绪论 Eddie Edwards2.1 浮点计算技巧:使用IEEE浮点格式以提高性能 Yossarian King2.1.1 概述2.1.2 IEEE浮点格式2.1.3 浮点数技巧2.1.4 用于正弦和余弦函数的线性查找表2.1.5 平方根函数的对数优化2.1.6 优化任何函数2.1.7 性能测量2.1.8 结论2.1.9 参考文献2.2 矢量和平面技巧 John Olsen2.2.1 相对于碰撞面的高度2.2.2 找出碰撞点2.2.3 到碰撞点的距离2.2.4 反射式碰撞2.2.5 阻尼碰撞2.3 一种快速、健壮的计算3D线段交点的方法 Graham Rhodes2.3.1 这种算法健壮的原因2.3.2 问题描述2.3.3 推导闭式解决方案方程2.3.4 线段2.3.5 实现描述2.3.6 可优化的地方2.3.7 结论2.3.8 参考文献2.4 反向弹道计算 Aaron Nicholls2.4.1 一种特殊情况2.4.2 优化实现2.4.3 总结2.5 平行移动镜头 Carl Dougan2.5.1 技术2.5.2 结论2.5.3 参考文献2.6 平滑的基于四元数的C2飞行路径 Alex Vlachos2.6.1 导论2.6.2 位置插值2.6.3 朝向插值2.6.4 旋转方向和选择性求负2.6.5 四元数样条线插值2.6.6 有理映射中的奇异点2.6.7 镜头剪接2.6.8 代码2.6.9 参考文献2.7 递归逐维分组:一种快速的碰撞检测算法 Steve Rabin2.7.1 其他应用2.7.2 该算法的缺陷2.7.3 查找碰撞物体对2.7.4 时间复杂度2.7.5 结论2.7.6 参考文献2.8 不规则碎片编程 Jesse Laeuchli2.8.1 无规则碎片2.8.2 断层无规则碎片2.8.3 FBM2.8.4 实现2.8.5 使用FBM2.8.6 参考文献第3章 人工智能绪论 Steve Rabin3.1 AI优化策略 Steve Rabin3.1.1 策略1:使用事件驱动行为而非轮询3.1.2 策略2:减少重复计算3.1.3 策略3:由管理员集中进行协调3.1.4 策略4:不那么频繁地运行AI3.1.5 策略5:将处理工作分散到多帧中完成3.1.6 策略6:利用细节级AI3.1.7 策略7:只解决问题的一部分3.1.8 策略8:离线完成困难的工作3.1.9 策略9:使用突发行为以避免编写脚本3.1.10 策略10:通过连续记录来分摊查询成本3.1.11 策略11:重新考虑问题3.1.12 结论3.1.13 参考文献3.2 用于游戏对象AI的微线程 Bruce Dawson3.2.1 一个更简单的方法3.2.2 微线程3.2.3 栈管理3.2.4 并发症3.2.5 结论3.2.6 参考文献3.3 使用微线程管理AI Simon Carter3.3.1 拼凑3.3.2 良好的行为3.3.3 了然于胸3.3.4 并发症3.3.5 结论3.3.6 参考文献3.4 一种RTS命令排队体系结构 Steve Rabin3.4.1 RTS命令3.4.2 命令排队3.4.3 循环命令3.4.4 结论3.4.5 参考文献3.5 一种基于分片的高性能视域和搜索系统 Matt Pritchard3.5.1 概述3.5.2 定义3.5.3 组件1:各个玩家的可见性地图3.5.4 组件2:LOS模板3.5.5 组件3:合并的可视性地图3.5.6 改进搜索3.5.7 结论3.6 创建影响力地图 Paul Tozour3.6.1 影响力地图3.6.2 一个简单的影响力地图3.6.3 影响力地图中的单元格数据3.6.4 计算合意值3.6.5 确定最佳的单元格大小3.6.6 影响力传播3.6.7 考虑地形3.6.8 特别考虑3.6.9 刷新影响力地图3.6.10 3D环境中的影响力地图3.6.11 参考文献和推荐读物3.7 策略评估技术 Paul Tozour3.7.1 资源分配树3.7.2 计算希望的资源分配3.7.3 判断当前的分配情况3.7.4 策略决策3.7.5 值的估量3.7.6 依存图3.7.7 依存图节点3.7.8 经济规划3.7.9 查找脆弱的依存3.7.10 策略推理3.7.11 玩家个性3.7.12 总结3.7.13 参考文献3.8 3D游戏中的地形推理 William van der Sterren3.8.1 以方便推理的方式表示地形3.8.2 中继点(waypoint)3.8.3 范例地形和AI需求3.8.4 战术分析(tactical analysis)3.8.5 从战术价值到中继点属性3.8.6 计算中继点属性3.8.7 从经验中学习3.8.8 将地形推理加入到游戏中3.8.9 其他应用3.8.10 结论3.8.11 参考文献和推荐读物3.9 用于可视点寻径的扩展几何体 Thomas Young3.9.1 定义碰撞模型3.9.2 多边形寻径3.9.3 扩展并解决问题3.9.4 凸多边形的闵可夫斯基和3.9.5 扩展非凸几何体3.9.6 选择碰撞形状3.9.7 结论3.9.8 参考文献3.10 优化可视点寻径 Thomas Young3.10.1 可视点寻径(points-of-visibility pathfinding)3.10.2 存储到每个点的最短路径3.10.3 将凸角相连3.10.4 轮廓区3.10.5 将轮廓区用于空间分区系统3.10.6 结论3.10.7 参考文献3.11 有齿物群的模拟:捕食者和猎物 Steven Woodcock3.11.1 全新的世界3.11.2 有齿物群的模拟3.11.3 局限性和可改进的地方3.11.4 参考文献3.12 一个用C++编写的通用模糊状态机 Eric Dybsand3.12.1 为何在游戏中使用FuSM3.12.2 如何在游戏中使用FuSM3.12.3 复习《游戏编程精粹1》中的C++通用有限状态机3.12.4 将通用FSM修改为FuSM3.12.5 在游戏中使用模糊逻辑3.12.6 参考文献3.13 避免模糊系统中的组合激增 Michael Zarozinski3.13.1 问题3.13.2 解决方案3.13.3 范例3.13.4 结论3.13.5 参考文献3.14 一个在游戏中使用神经元网络的例子 John Manslow3.14.1 游戏3.14.2 多玩家感知器3.14.3 选择输入3.14.4 收集数据3.14.5 训练MLP3.14.6 结果3.14.7 结论3.14.8 参考文献第4章 几何体管理绪论 Eric Lengyel4.1 各种VIPM方法的比较 Tom Forsyth4.1.1 考虑因素4.1.2 Vanilla VIPM4.1.3 跳带4.1.4 多层跳带4.1.5 混合模式VIPM4.1.6 混合模式跳带4.1.7 滑窗4.1.8 小结4.1.9 参考文献4.2 使用联锁分片简化地形 Greg Snook4.2.1 分片的重访问4.2.2 生成地图4.2.3 分片模板4.2.4 消除难看的接缝4.2.5 更好、更快、更强4.2.6 结论4.2.7 参考文献4.3 快速可视剔除、射线跟踪以及范围搜索的球形树 John W. Ratcliff4.3.1 包围球4.3.2 使用球形树4.3.3 演示应用程序4.4 压缩的轴向包围盒树 Miguel Gomez4.4.1 概览层次排序方法4.4.2 AABB树4.4.3 构建AABB树4.4.4 压缩AABB树4.4.5 近似范围4.4.6 利用冗余4.4.7 运行时效4.4.8 将来的工作4.4.9 参考文献4.5 直接访问四叉树查找 Matt Pritchard4.5.1 性能剖析4.5.2 消除中间阻碍4.5.3 条件和要求4.5.4 判断树层4.5.5 位置映射4.5.6 判断位置4.5.7 遍历四叉树4.5.8 优化四叉树4.6 近似鱼缸折射 Alex Vlachos4.6.1 鱼缸观察现象4.6.2 提高其真实性4.6.3 结论4.7 渲染打印分辨率的屏幕快照 Alex Vlachos4.7.1 基本算法4.7.2 忠告及注意4.7.3 结论4.7.4 参考文献4.8 对任意表面应用贴花 Eric Lengyel4.8.1 算法4.8.2 三角形剪裁4.8.3 实现代码4.8.4 参考文献4.9 用天空包围盒渲染远景 Jason Shankel4.9.1 基本技术4.9.2 天空包围盒分辨率4.9.3 天空包围盒大小4.9.4 渲染场景4.9.5 立方体环境映射4.9.6 生成天空包围盒纹理4.9.7 结论4.9.8 源代码4.10 自阴影角色 Alex Vlachos, David Gosselin, Jason L. Mitchell4.10.1 研究回顾4.10.2 角色几何分割4.10.3 渲染纹理4.10.4 渲染角色4.10.5 结论4.10.6 参考文献4.11 经典的Super Mario 64游戏第三人称控制和动画 Steve Rabin4.11.1 设置4.11.2 转换控制器的输入4.11.3 旋转角色4.11.4 角色移动4.11.5 角色动画4.11.6 Super Mario 64动画分析4.11.7 结论4.11.8 参考文献第5章 图形显示绪论 D. Sim Dietrich Jr5.1 卡通渲染:实时轮廓边缘检测与渲染 Carl S. Marshall5.1.1 着墨器(Inker)5.1.2 重要的边5.1.3 轮廓边缘检测技术5.1.4 基于边的着墨5.1.5 可编程顶点着色器着墨5.1.6 高级纹理特征着墨5.1.7 结论5.1.8 参考文献5.2 使用纹理映射的卡通渲染与可编程顶点着色器 Adam Lake5.2.1 卡通着色技术5.2.2 上色5.2.3 可编程顶点着色器5.2.4 结论5.2.5 参考文献5.3 动态逐像素光照技术 Dan Ginsburg, Dave Gosselin5.3.1 动态光照贴图的3D纹理5.3.2 Dot3凹凸贴图(Bump Mapping)5.3.3 使用立方贴图规一化5.3.4 逐像素聚光灯(Per-Pixel Spotlight)5.3.5 参考文献5.4 使用3D硬件生成过程云彩 Kim Pallister5.4.1 云彩性质5.4.2 生成随机数5.4.3 噪音多个倍频的动画5.4.4 贴图到天空几何体5.4.5 功能延伸5.4.6 硬件限制5.4.7 可伸缩性5.4.8 结论5.4.9 参考文献5.5 针对较快镜头眩光的纹理屏蔽 Chris Maughan5.5.1 镜头眩光遮挡5.5.2 硬件问题5.5.3 纹理屏蔽5.5.4 性能考虑5.5.5 改进5.5.6 示例代码5.5.7 替代途径5.5.8 参考文献5.6 实用优先缓冲阴影 D. Sim Dietrich Jr.5.6.1 比较优先缓冲与深度缓冲5.6.2 解决锯齿化问题5.6.3 混合途径5.6.4 小结5.6.5 参考文献5.7 替用体技术:添加点缀 Tom Forsyth5.7.1 整个过程5.7.2 渲染替换体5.7.3 更新试探法5.7.4 效率5.7.5 预测5.7.6 小结5.8 硬件加速过程纹理动画中的运算 Greg James5.8.1 硬件运算5.8.2 将来的工作5.8.3 致谢5.8.4 示例源码5.8.5 参考文献第6章 音频编程绪论 James Boer6.1 游戏音频设计模式 Scott Patterson6.1.1 桥接(Bridge)6.1.2 外观(Fa?ade)6.1.3 合成(Composite)6.1.4 代理(Proxy)6.1.5 修饰器(Decorator)6.1.6 命令(Command)6.1.7 备忘录(Memento)6.1.8 观测器(Observer)6.1.9 大泥球(Big Ball of Mud)(也称做“意大利面条式”代码)6.1.10 结论6.1.11 参考文献6.2 在采样合成器中声音的同步重用技术 Thomas Engel6.2.1 存在的问题6.2.2 解决方案的思路6.2.3 解决方案6.2.4 结论6.3 软件DSP效果 Ian Lewis6.3.1 滤波6.3.2 卷积(convolution)6.3.3 延迟6.3.4 插值(interpolation)6.3.5 参考文献6.4 数字音频的交互式处理管线 Keith Weiner6.4.1 简介6.4.2 讨论6.4.3 代码6.4.4 额外注释6.4.5 结论6.5 游戏中的基本音乐音序器 Scott Patterson6.5.1 音乐流与音序6.5.2 核心计算机音乐概念6.5.3 计算机音序器实现6.5.4 音频合成(composite)控制6.5.5 源码6.5.6 结论6.5.7 参考文献6.6 用于游戏的交互式音序器 Scott Patterson6.6.1 音乐联想6.6.2 音乐意义6.6.3 过渡6.6.4 过渡类型6.6.5 控制粒度6.6.6 目标控制6.6.7 设计示例6.6.8 源码6.6.9 结论6.6.10 参考文献6.7 底层声音API Ian Lewis核心类索引
飞网下载站,免费下载共享资料,内容涉及教育资源、专业资料、IT资源、娱乐生活、经济管理、办公文书、游戏资料等。