【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 6124|回复: 18

【下载】《游戏编程精粹2》(Game Programming Gems 2)扫描版[PDF]简体

[复制链接]
发表于 2013-10-9 01:46:33 | 显示全部楼层 |阅读模式



内容介绍:

  本书是“游戏编程精粹”系列丛书的第二本,包括70多篇全新的、探讨各种游戏编程主题的文章,每篇文章要么提供了某个编程问题的实用解决方案,要么提出了一种创造性的减少编程时间和冗余的方法。本书涵盖了开发最尖端的游戏引擎所涉及的主要主题,全书由6章组成,包括通用编程技术、数学技巧、人工智能、几何体管理、图形显示和音频编程。
  
  专家级开发人员可以立刻应用书中介绍的技巧,而初中级程序员通过阅读本书将增强其技能和知识。这是一本必备的参考资料,是40多位经验丰富的游戏开发人员智慧和经验的结晶。

作者介绍:

  Mark Deloura是Game Developer杂志的主编,也是《游戏编程精粹1》和《游戏编程精粹2》的编辑。加入Game Developer之前,Mark在任天堂(美国)公司工作过5年,担任开发人员关系小组的主力软件工程师,从事Gamecube和Nintendo 64开发。在此之前,Mark还从事过虚拟现实方面的研究,是多个Usenet虚拟现实新闻组的主持人之一。

内容截图:


下载地址:

游客,如果您要查看本帖隐藏内容请回复
目录:

第1章 通用编程技术
绪论 Scott Bilas
1.1 优化C++游戏 Andrew Kirmse
1.1.1 对象的创建和销毁
1.1.2 内存管理
1.1.3 虚拟函数
1.1.4 代码长度
1.1.5 标准模板库
1.1.6 高级特性
1.1.7 参考文献
1.2 内联函数和宏 Peter Dalton
1.2.1 内联函数的优点
1.2.2 何时使用内联函数
1.2.3 何时使用宏
1.2.4 微软特有的情况
1.2.5 参考文献
1.3 抽象接口编程 Noel Liopis
1.3.1 抽象接口
1.3.2 添加一个工厂(factory)
1.3.3 抽象接口特性
1.3.4 一切都是有代价的
1.3.5 结论
1.3.6 参考文献
1.4 从DLL中导出C++类 Herb Marselas
1.4.1 导出函数
1.4.2 导出类
1.4.3 导出类成员函数
1.4.4 导出虚拟类成员函数
1.4.5 总结
1.5 避免DLL困境 Herb Marselas
1.5.1 显式链接还是隐式链接
1.5.2 LoadLibrary和GetProcAddress
1.5.3 提防DirectX
1.5.4 使用操作系统特有的特性
1.5.5 总结
1.6 动态类型信息 Scott Wakeling
1.6.1 动态类型信息类简介
1.6.2 暴露和查询DTI
1.6.3 继承的含义是“是一个”
1.6.4 处理通用对象
1.6.5 实现永久性类型信息
1.6.6 将永久性类型信息用于游戏保存数据库中
1.6.7 结论
1.6.8 参考文献
1.7 用于通用C++成员访问的属性类 Charles Cafrelli
1.7.1 代码
1.7.2 其他用途
1.7.3 推荐读物
1.8 一个游戏实体工厂 Fran?ois Dominic Laramée
1.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 Llopis
1.9.1 可能的解决方案
1.9.2 理想的解决方案
1.9.3 使用和指定被摒弃的函数
1.9.4 使用C++实现摒弃功能
1.9.5 可改进的地方
1.9.6 致谢
1.9.7 参考文献
1.10 一个插入式调试内存管理器 Peter Dalton
1.10.1 内存管理器初步
1.10.2 内存管理器的记录工作
1.10.3 报告信息
1.10.4 注意事项
1.10.5 进一步的改进
1.10.6 参考文献
1.11 一个内置的游戏剖析模块 Jeff Evertt
1.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. Otaegui
1.12.1 更新背景
1.12.2 解决方案:多线程(Multithreading)
1.12.3 参考文献
1.13 栈缠绕 Bryon Hapgood
1.13.1 简单的TempRet
1.13.2 TempRet链
1.13.3 Thunking
1.13.4 递归
1.14 自我修改的代码 Bryon Hapgood
1.14.1 RAM代码的原理
1.14.2 一个快速的Bit Blitter
1.15 使用资源文件来管理文件 Bruno Sousa
1.15.1 何为资源文件
1.15.2 设计
1.15.3 实现
1.15.4 有关实现的最后一些说明
1.15.5 结论
1.15.6 参考文献
1.16 游戏输入的记录和重放 Bruce Dawson
1.16.1 记录输入有何用途
1.16.2 原理
1.16.3 测试输入记录功能
1.16.4 结论
1.16.5 参考文献
1.17 一个灵活的文本分析系统 James Boer
1.17.1 分析系统
1.17.2 宏、头文件和预处理技术
1.17.3 该分析系统的结构
1.17.4 小结
1.18 一个通用的调节器 Lasse Staff Jensen
1.18.1 需求分析
1.18.2 实现
1.18.3 使用
1.18.4 图形用户界面
1.18.5 附注
1.18.6 致谢
1.19 生成真正的随机数 Pete Isensee
1.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 Fischer
1.20.1 Bloom的方式
1.20.2 可能的情形
1.20.3 工作原理
1.20.4 定义
1.20.5 范例1
1.20.6 范例2
1.20.7 最后的说明
1.20.8 结论
1.20.9 参考文献
1.21 3Ds MAX中的Skin导出器和动画工具包 Marco Tombesi
1.21.1 导出
1.21.2 参考文献
1.22 在视频游戏中使用Web摄像机 Nathan d'Obrenan
1.22.1 初始化Web摄像机捕获窗口
1.22.2 操纵Web摄像机数据
1.22.3 结论
1.22.4 参考文献
第2章 数学技巧
绪论 Eddie Edwards
2.1 浮点计算技巧:使用IEEE浮点格式以提高性能 Yossarian King
2.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 Olsen
2.2.1 相对于碰撞面的高度
2.2.2 找出碰撞点
2.2.3 到碰撞点的距离
2.2.4 反射式碰撞
2.2.5 阻尼碰撞
2.3 一种快速、健壮的计算3D线段交点的方法 Graham Rhodes
2.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 Nicholls
2.4.1 一种特殊情况
2.4.2 优化实现
2.4.3 总结
2.5 平行移动镜头 Carl Dougan
2.5.1 技术
2.5.2 结论
2.5.3 参考文献
2.6 平滑的基于四元数的C2飞行路径 Alex Vlachos
2.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 Rabin
2.7.1 其他应用
2.7.2 该算法的缺陷
2.7.3 查找碰撞物体对
2.7.4 时间复杂度
2.7.5 结论
2.7.6 参考文献
2.8 不规则碎片编程 Jesse Laeuchli
2.8.1 无规则碎片
2.8.2 断层无规则碎片
2.8.3 FBM
2.8.4 实现
2.8.5 使用FBM
2.8.6 参考文献
第3章 人工智能
绪论 Steve Rabin
3.1 AI优化策略 Steve Rabin
3.1.1 策略1:使用事件驱动行为而非轮询
3.1.2 策略2:减少重复计算
3.1.3 策略3:由管理员集中进行协调
3.1.4 策略4:不那么频繁地运行AI
3.1.5 策略5:将处理工作分散到多帧中完成
3.1.6 策略6:利用细节级AI
3.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 Dawson
3.2.1 一个更简单的方法
3.2.2 微线程
3.2.3 栈管理
3.2.4 并发症
3.2.5 结论
3.2.6 参考文献
3.3 使用微线程管理AI Simon Carter
3.3.1 拼凑
3.3.2 良好的行为
3.3.3 了然于胸
3.3.4 并发症
3.3.5 结论
3.3.6 参考文献
3.4 一种RTS命令排队体系结构 Steve Rabin
3.4.1 RTS命令
3.4.2 命令排队
3.4.3 循环命令
3.4.4 结论
3.4.5 参考文献
3.5 一种基于分片的高性能视域和搜索系统 Matt Pritchard
3.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 Tozour
3.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 Tozour
3.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 Sterren
3.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 Young
3.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 Young
3.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 Woodcock
3.11.1 全新的世界
3.11.2 有齿物群的模拟
3.11.3 局限性和可改进的地方
3.11.4 参考文献
3.12 一个用C++编写的通用模糊状态机 Eric Dybsand
3.12.1 为何在游戏中使用FuSM
3.12.2 如何在游戏中使用FuSM
3.12.3 复习《游戏编程精粹1》中的C++通用有限状态机
3.12.4 将通用FSM修改为FuSM
3.12.5 在游戏中使用模糊逻辑
3.12.6 参考文献
3.13 避免模糊系统中的组合激增 Michael Zarozinski
3.13.1 问题
3.13.2 解决方案
3.13.3 范例
3.13.4 结论
3.13.5 参考文献
3.14 一个在游戏中使用神经元网络的例子 John Manslow
3.14.1 游戏
3.14.2 多玩家感知器
3.14.3 选择输入
3.14.4 收集数据
3.14.5 训练MLP
3.14.6 结果
3.14.7 结论
3.14.8 参考文献
第4章 几何体管理
绪论 Eric Lengyel
4.1 各种VIPM方法的比较 Tom Forsyth
4.1.1 考虑因素
4.1.2 Vanilla VIPM
4.1.3 跳带
4.1.4 多层跳带
4.1.5 混合模式VIPM
4.1.6 混合模式跳带
4.1.7 滑窗
4.1.8 小结
4.1.9 参考文献
4.2 使用联锁分片简化地形 Greg Snook
4.2.1 分片的重访问
4.2.2 生成地图
4.2.3 分片模板
4.2.4 消除难看的接缝
4.2.5 更好、更快、更强
4.2.6 结论
4.2.7 参考文献
4.3 快速可视剔除、射线跟踪以及范围搜索的球形树 John W. Ratcliff
4.3.1 包围球
4.3.2 使用球形树
4.3.3 演示应用程序
4.4 压缩的轴向包围盒树 Miguel Gomez
4.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 Pritchard
4.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 Vlachos
4.6.1 鱼缸观察现象
4.6.2 提高其真实性
4.6.3 结论
4.7 渲染打印分辨率的屏幕快照 Alex Vlachos
4.7.1 基本算法
4.7.2 忠告及注意
4.7.3 结论
4.7.4 参考文献
4.8 对任意表面应用贴花 Eric Lengyel
4.8.1 算法
4.8.2 三角形剪裁
4.8.3 实现代码
4.8.4 参考文献
4.9 用天空包围盒渲染远景 Jason Shankel
4.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. Mitchell
4.10.1 研究回顾
4.10.2 角色几何分割
4.10.3 渲染纹理
4.10.4 渲染角色
4.10.5 结论
4.10.6 参考文献
4.11 经典的Super Mario 64游戏第三人称控制和动画 Steve Rabin
4.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 Jr
5.1 卡通渲染:实时轮廓边缘检测与渲染 Carl S. Marshall
5.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 Lake
5.2.1 卡通着色技术
5.2.2 上色
5.2.3 可编程顶点着色器
5.2.4 结论
5.2.5 参考文献
5.3 动态逐像素光照技术 Dan Ginsburg, Dave Gosselin
5.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 Pallister
5.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 Maughan
5.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 Forsyth
5.7.1 整个过程
5.7.2 渲染替换体
5.7.3 更新试探法
5.7.4 效率
5.7.5 预测
5.7.6 小结
5.8 硬件加速过程纹理动画中的运算 Greg James
5.8.1 硬件运算
5.8.2 将来的工作
5.8.3 致谢
5.8.4 示例源码
5.8.5 参考文献
第6章 音频编程
绪论 James Boer
6.1 游戏音频设计模式 Scott Patterson
6.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 Engel
6.2.1 存在的问题
6.2.2 解决方案的思路
6.2.3 解决方案
6.2.4 结论
6.3 软件DSP效果 Ian Lewis
6.3.1 滤波
6.3.2 卷积(convolution)
6.3.3 延迟
6.3.4 插值(interpolation)
6.3.5 参考文献
6.4 数字音频的交互式处理管线 Keith Weiner
6.4.1 简介
6.4.2 讨论
6.4.3 代码
6.4.4 额外注释
6.4.5 结论
6.5 游戏中的基本音乐音序器 Scott Patterson
6.5.1 音乐流与音序
6.5.2 核心计算机音乐概念
6.5.3 计算机音序器实现
6.5.4 音频合成(composite)控制
6.5.5 源码
6.5.6 结论
6.5.7 参考文献
6.6 用于游戏的交互式音序器 Scott Patterson
6.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
核心类
索引




发表于 2013-10-13 16:25:39 | 显示全部楼层
谢谢分享,虽然不是做游戏开发的,但是觉得内容很多都是通用的编程技巧,值得学习。
发表于 2013-10-13 16:37:13 | 显示全部楼层
good source code
发表于 2013-10-13 17:10:27 | 显示全部楼层
回复下 ,准备下载!不错的!
发表于 2013-10-13 17:23:50 | 显示全部楼层
最近正想好好看看
发表于 2013-10-13 19:04:59 | 显示全部楼层
能不能下载啊 。。试试看
发表于 2013-10-13 19:31:16 | 显示全部楼层
谢谢 楼主分享~
发表于 2013-10-13 22:22:13 | 显示全部楼层
谢谢 楼主分享~
发表于 2013-10-13 22:40:59 | 显示全部楼层
感谢楼主分享了哈
发表于 2013-10-13 22:41:25 | 显示全部楼层
{:soso_e102:}
发表于 2013-10-14 10:37:40 | 显示全部楼层
《游戏编程精粹2》(Game Programming Gems 2)扫描版[PDF]
发表于 2013-10-14 10:54:38 | 显示全部楼层
谢谢 楼主分享~
发表于 2013-10-15 09:56:24 | 显示全部楼层
好东西,伟大的楼主
发表于 2013-10-15 12:32:07 | 显示全部楼层
ccccccccccccccccccccccccccccccccc
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-11-23 18:43

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表