资源大小: 64.38MB
发布时间: 2013-01-31
文件格式: pdf
下载次数: 2
分享到:

下载地址:

下载地址1
(本站为飞网专业下载站,域名:down.cfei.net)

资源简介:

中文名: 游戏编程精粹4原名: Game Programming Gems 4别名: 游戏编程, 游戏开发作者: (美)Andrew Kirmse译者: 沙鹰等资源格式: PDF版本: 扫描版出版社: 人民邮电出版社书号: 7115136351发行时间: 2005年9月地区: 大陆语言: 简体中文简介: 内容简介:  本书是著名技术丛书"游戏编程精粹"的第4卷,由全球数十位优秀游戏程序员撰写的文章汇集而成。书中有62篇长度中等难度适中的技术文章,分为通用编程、数学、物理、人工智能、图形图像、网络和多人游戏、音频共7章,并在随书光盘中提供了源程序和演示实现。文章的选题既紧跟游戏开发的时代脉搏,内容亦不流于表面,先进性和实用性俱佳。     本书适合游戏开发专业人员阅读,专家级开发人员可以立刻用书中介绍的方法和技巧,而初中级程序员通过阅读本书将增强其技能和知识。    本书秉承了“游戏编程精粹”系列的一贯作风,挟60余篇崭新的技术文章以飨读者。它将再次无可争议地成为一本游戏开发者不可多得的参考书。由于全部作者都来自于亲手打造当今优秀游戏的经验丰富的开发者们,读者在文章中不但可以找到针对疑难问题的有效解决方案,而且常能找到令人玩味再三的深刻见解。它们将激起读者探索的欲望和创意的火花。    过去数年中,在游戏行业中发生的开拓与革新是有目共睹的。因此本系列丛书所覆盖的领域也随之而拓宽了。考虑到各种新型游戏平台的出现,书中增加了非主流程序设计语言以及第三方api方面的内容。虽然绝大部分的代码依然以c++写成,但是用到了一些解释语言(如java和python)。图形部分的文章则涉及opengl、directx及一些shader语言。在本书中还有全新的关于物理的章节,其中探讨了一些创建emergent gameplay 的新颖的实时物理实现方法。  新一卷的“游戏编程精粹”对于游戏程序员来说,无疑是一本宝贵的参考书!作者介绍:  Andrew Kirmse是Meridian 59(1996)的开发总监和设计者之一。他也是Star:Starfighter(2001)的图形程序员。他在麻省理工学院(Massachusetts lnstitute of Technology,MIT)获得物理、数学和计算机科学的学位。Andrew曾为每一卷“游戏编程精粹”撰稿。他目前在LucasArts工作。 目录: 第1章 通用编程简介 Chris Corry1.1 调试游戏程序的学问 Steve Rabin1.1.1 五步调试法1.1.2 第一步:始终如一地重现问题1.1.3 第二步:搜集线索1.1.4 第三步:查明错误的源头1.1.5 第四步:纠正问题1.1.6 第五步:对所作的修改进行测试1.1.7 高级调试技巧1.1.8 困难的调试情景和模式1.1.9 理解底层系统1.1.10 增加有助于调试的基础设施1.1.11 预防bug1.1.12 结论1.1.13 致谢1.1.14 参考文献1.2 一个基于HTML的日志和调试系统 James Boer1.2.1 于日志系统的优势1.2.2 究竟什么是事件日志?1.2.3 HTML和调用堆栈1.2.4 工作原理1.2.5 一些有用的心得1.2.6 结论1.3 时钟:游戏的脉搏尽在掌握 Noel Llopis1.3.1 关于时间的基础1.3.2 时钟系统的组成1.3.3 避免失真1.3.4 结论1.4 设计和维护大型跨平台库 David Etherton1.4.1 设计1.4.2 Build系统1.4.3 细节1.4.4 结论1.4.5 参考文献1.5 利用模版化的空闲块列表克服内存碎片问题 Paul Glinker1.5.1 内存操作1.5.2 解决方案1.5.3 实现细节1.5.4 有效地使用我们的Freelist1.5.5 结论1.5.6 参考文献1.6 一个用C++实现的泛型树容器类 Bill Budge1.6.1 可重用的库1.6.2 树的概念1.6.3 树的实现1.6.4 利用STL1.6.5 结论1.6.6 参考文献1.7 弱引用和空对象 Noel Llopis1.7.1 使用指针1.7.2 弱引用1.7.3 空对象1.7.4 结论1.7.5 参考文献1.8 游戏中的实体管理系统 Matthew Harmon1.8.1 概述1.8.2 实体消息1.8.3 实体代码1.8.4 类的代码1.8.5 实体管理器1.8.6 基于消息的游戏循环1.8.7 开始:消息类1.8.8 从小处着手:基本实体消息1.8.9 游戏和环境消息1.8.10 系统成长:一些高级消息1.8.11 处理碰撞1.8.12 扩展到多玩家1.8.13 开发和调试消息1.8.14 好处1.8.15 光盘中的内容1.8.16 总结1.9 Windows和Xbox平台上地址空间受控的动态数组 Matt Pritchard1.9.1 传统的动态数组管理1.9.2 深入观察1.9.3 地址空间管理 != 存储管理1.9.4 重新思考关于数组增大的问题1.9.5 新的增长规则1.9.6 使用地址空间受控的数组1.9.7 结论1.10 用临界阻尼实现慢入慢出的平滑 Thomas Lowe1.10.1 可用的技术1.10.2 阻尼弦与临界阻尼1.10.3 实践1.10.4 设置平滑速率的上限1.10.5 结论1.10.6 参考文献1.11 一个易用的对象管理器 Natalya Tatarchuk1.11.1 对象管理的传统做法1.11.2 灵活的对象管理器1.11.3 结论1.11.4 参考文献1.12 使用自定义的RTTI属性对对象进行流操作及编辑 Frederic My1.12.1 扩展的RTTI1.12.2 属性1.12.3 编辑属性1.12.4 保存1.12.5 载入1.12.6 与旧版本文件的兼容性问题:类的描述1.12.7 与旧版本文件的兼容性问题:匹配1.12.8 “函数”属性1.12.9 技巧和提示1.12.10 思考1.12.11 结论1.12.12 参考文献1.13 使用XML而不牺牲速度 Mark T. Price1.13.1 为什么要使用XML呢?1.13.2 简单介绍XDS Meta格式1.13.3 XDS工具集1.13.4 使用XDS工具集1.13.5 整合1.13.6 总结1.13.7 参考文献第2章 数学简介 Jonathan Blow2.1 使用马其赛特旋转的Zobrist散列法 Toby Jones2.1.1 Zobrist散列2.1.2 实现Zobrist散列2.1.3 马其赛特旋转(Mersenne Twister)2.1.4 马其赛特旋转的实现2.1.5 结论2.1.6 参考文献2.2 抽取截锥体和camera信息 Waldemar Celes2.2.1 平面变换(Plane Transformation)2.2.2 抽取锥体信息2.2.3 抽取camera信息2.2.4 任意投影变换2.2.5 实现2.2.6 结论2.2.7 参考文献2.3 解决大型游戏世界坐标中的精度问题 Peter Freese2.3.1 问题描述2.3.2 可能的解决方式2.3.3 偏移位置2.3.4 渲染流水线变化2.3.5 对性能的思考2.3.6 结论2.3.7 参考文献2.4 非均匀样条 Thomas Lowe2.4.1 样条的种类2.4.2 三次样条的基础理论2.4.3 圆形的非均匀样条2.4.4 平滑非均匀样条2.4.5 时控的非均匀样条2.4.6 计算起始和最终节点速率2.4.7 在样条上获取速率和加速度2.4.8 优化2.4.9 结论2.4.10 参考文献2.5 用协方差矩阵计算更贴切的包围对象 Jim Van Verth2.5.1 协方差矩阵2.5.2 特征值和特征向量2.5.3 计算协方差矩阵的特征向量2.5.4 创建包围对象2.5.5 结论2.5.6 参考文献2.6 应用于反向运动的雅可比转置方法 Marco Spoerl2.6.1 我们的测试环境2.6.2 雅可比矩阵是什么?2.6.3 雅可比转置矩阵简介2.6.4 实现算法2.6.5 结果和比较2.6.6 结论2.6.7 参考文献第3章 物理简介 Graham Rhodes3.1 死神的十指:战斗中的命中算法 Roger Smith、Don Stoner3.1.1 射击带状物(Ribbon)3.1.2 射击靶心3.1.3 射击矩形3.1.4 使用霰弹枪射击小目标3.1.5 移动炮兵的攻击命中3.1.6 死亡的4种主要形式3.1.7 化学武器、火球及区域性魔法3.1.8 弹片的楔入3.1.9 攻击丛林3.1.10 攻击有猎物分布的丛林3.1.11 结论3.1.12 参考文献3.2 在低速CPU系统中交通工具的物理模拟 Marcin Pancewicz、Paul Bragiel3.2.1 技术的概要和前提假设3.2.2 交通工具沿当前行驶方向上的加速及减速3.2.3 方向控制3.2.4 把所有要素结合起来3.2.5 地形的影响3.2.6 实现中遇到的问题3.2.7 可以改进的地方3.2.8 结论3.3 编写基于Verlet积分方程的物理引擎 Nick Porcino3.3.1 关于物理引擎3.3.2 刚体3.3.3 积分器3.3.4 物理引擎3.3.5 针对特定平台的考虑3.3.6 扩展引擎的功能3.3.7 结论3.3.8 参考文献3.4 刚体动力学中的约束器 Russ Smith3.4.1 基本要点3.4.2 约束器构造模块3.4.3 创建有用的游戏约束器3.4.4 光盘中的内容3.4.5 结论3.4.6 参考文献3.5 在动力学模拟中的快速接触消除法 ádám Moravánszky、Pierre Terdiman3.5.1 减少接触3.5.2 对预处理的详细分析3.5.3 对接触的分组群的详细分析3.5.4 对持续性的详细分析3.5.5 结论3.5.6 参考文献3.6 互动水面 Jerry Tessendorf3.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.7 用多层物理模拟快速变形 Thomas Di Giacomo、Nadia Magnenat-Thalmann3.7.1 基于物理的动画LOD及相关的工作3.7.2 使用分层的质量块弹簧物理的快速变形3.7.3 结论3.7.4 参考文献 2363.8 快速且稳定的形变之模态分析 James F. O'Brien3.8 快速且稳定的形变之模态分析3.8.1 模式分解3.8.2 模式的理解和丢弃3.8.3 模态模拟3.8.4 总结3.8.5 结论3.8.6 参考文献第4章 人工智能简介 Paul Tozour4.1 第三人称视角摄像镜头的运动规则 Jonathan Stone4.1.1 Camera定位及运动4.1.2 Camera与场景边界4.1.3 Camera遮断4.1.4 简化场景4.1.5 结论4.1.6 参考文献4.2 叙述战斗:利用AI增强动作游戏中的张力 Borut Pfeifer4.2.1 戏剧张力4.2.2 系统概述4.2.3 设计者的控制部分4.2.4 难度计算4.2.5 难度调节4.2.6 系统评价4.2.7 结论4.2.8 参考文献4.3 非玩家角色决策:处理随机问题 Karén Pivazyan4.3.1 概要4.3.2 动态规划算法4.3.3 代码4.3.4 优化4.3.5 DP算法的其他应用4.3.6 结论4.3.7 参考文献4.4 一个基于效用的面向对象决策架构 John Hancock4.4.1 决策树4.4.2 基于对象的更好的体系结构4.4.3 期望值4.4.4 其他的决策准则4.4.5 结论4.4.6 参考文献4.5 一个分布式推理投票架构 John Hancock4.5.1 分布式推理4.5.2 操纵仲裁者(Steering Arbiter)范例4.5.3 选择投票空间4.5.4 结论4.5.5 参考文献4.6 吸引子和排斥子 John M. Olsen4.6.1 合力4.6.2 引力曲线4.6.3 吸引曲线的和4.6.4 对应于特定配对的特定曲线4.6.5 动态曲线4.6.6 点、线、面4.6.7 AI控制的层次4.6.8 动画系统的交互4.6.9 移动(Steering)4.6.10 结论4.6.11 参考文献4.7 高级RTS游戏造墙算法 Mario Grimani4.7.1 算法4.7.2 算法改进4.7.3 输出链表的形式4.7.4 结论4.7.5 参考文献4.8 利用可编程图形硬件处理人工神经元网络 Thomas Rolfes4.8.1 CPU与GPU系统架构4.8.2 人工神经元网络4.8.3 实现4.8.4 结论4.8.5 参考文献第5章 图形图像简介 Alex Vlachos5.1 具有海报质量的屏幕截图 Steve Rabin5.1.1 提高分辨率5.1.2 提升像素质量5.1.3 使用一个磁盘均衡采样分布5.1.4 为抗锯齿调整像素的采样宽度5.1.5 增加分辨率同增加像素质量相结合5.1.6 结论5.1.7 参考文献5.2 非封闭网络模型的GPU容积阴影构架 Warrick Buchanan5.2.1 回到制图板5.2.2 在顶点阴影中实现这项技术5.2.3 需要注意的事项5.2.4 结论5.2.5 参考文献5.3 透视阴影贴图 Marc Stamminger5.3.1 引言5.3.2 后透视空间5.3.3 后透视空间中的光5.3.4 透视阴影贴图5.3.5 实现5.3.6 结论5.3.7 参考文献5.4 结合使用深度和基于ID的阴影缓冲 Kurt Pelzer5.4.1 已有的阴影映射技术5.4.2 深度和基于ID的阴影缓冲5.4.3 结合深度和ID缓冲5.4.4 组合的阴影缓冲概述5.4.5 第一次:从光照的视点渲染5.4.6 第二次:阴影检测5.4.7 在DX9 2.0级的阴影中的实现5.4.8 结论5.4.9 参考文献5.5 在场景中投射静态阴影 Alex Vlachos5.5.1 前期工作5.5.2 光束基本知识5.5.3 高级算法5.5.4 T型连接5.5.5 网格模型最优算法5.5.6 实现细节5.5.7 阴影中的动态物体5.5.8 结果5.5.9 结论5.5.10 参考文献5.6 为阴影体和优化的网格模型调整实时光照 Alex Vlachos、Chris Oat5.6.1 光照问题5.6.2 在面法线上操作5.6.3 调整漫射光照5.6.4 结论5.6.5 参考文献5.7 实时半调色法:快速而简单的样式化阴影 Bert Freudenberg、Maic Masuch、Thomas Strothotte5.7.1 引言5.7.2 原理5.7.3 实例的实现5.7.4 结论5.7.5 参考文献5.8 在3D模型中应用团队色的各种技术 Greg Seegert5.8.1 什么是团队色?5.8.2 团队色的算法5.8.3 一个实际的例子5.8.4 光盘中的内容5.8.5 结论5.9 快速的棕褐色色调转换 Marwan Y. Ansari5.9.1 背景5.9.2 常规的方法5.9.3 优化5.9.4 结论5.9.5 参考文献5.10 使用场景亮度采样实现动态的Gamma Michael Dougherty、Dave McCoy5.10.1 光照系数5.10.2 有限的动态范围5.10.3 图像的优化5.10.4 易变的光灵敏度5.10.5 转换5.10.6 算法5.10.7 结论5.11 热和薄雾的后处理效果 Chris Oat、Natalya Tatarchuk5.11.1 热和闪光的薄雾5.11.2 高级算法5.11.3 计算失真值5.11.4 失真值的解释5.11.5 结论5.11.6 参考文献5.12 用四元数的硬件蒙皮 Jim Hejl5.12.1 蒙皮的概念5.12.2 四元数参数化5.12.3 硬件实现5.12.4 结论5.12.5 参考文献5.13 动作捕捉数据的压缩 Sφren Hannibal5.13.1 处理的计划5.13.2 组织数据通道5.13.3 减少已储存的键的数量5.13.4 包装剩余的键5.13.5 运行时解压缩5.13.6 未来的改进5.13.7 结论5.13.8 参考文献5.14 基于骨骼的有关节的3D角色的快速碰撞检测 Oliver Heim、Carl S. Marshall、Adam Lake5.14.1 碰撞检测与碰撞分解5.14.2 术语5.14.3 将碰撞检测集成到3D游戏引擎中5.14.4 基于骨骼的快速碰撞检测算法5.14.5 结论5.14.6 感谢5.14.7 参考文献5.15 使用地平线进行地形的遮挡剔除 Glenn Fiedler5.15.1 引言5.15.2 地平线剔除基础5.15.3 蛮力地平线剔除5.15.4 近似值5.15.5 近似地平线直线5.15.6 一个更好的近似值5.15.7 最小二次方线5.15.8 将它放入到第三维中5.15.9 最小二次方平面5.15.10 用近似值的地平线剔除5.15.11 被地形遮挡的对象5.15.12 使它成为动态的5.15.13 未来的方向5.15.14 结论5.15.15 参考文献第6章 网络和多人游戏简介 Pete Isensee6.1 设计与开发游戏大厅 Shekhar Dhupelia6.1.1 状态-事件系统的设计6.1.2 探讨大厅的子系统6.1.3 高级大厅子系统6.1.4 结论6.1.5 参考文献6.2 支持成千上万个客户端的服务器 Adam Martin6.2.1 服务器设计中的门槛6.2.2 问题6.2.3 主要技术6.2.4 服务器设计6.2.5 结论6.2.6 参考文献6.3 大型多人游戏状态的有效存储 Justine Quimby6.3.1 MMP的问题6.3.2 Qualities理论6.3.3 Qualities API6.3.4 使用Qualities的好处6.3.5 结论6.3.6 参考文献6.4 在客户/服务器环境下运用并行状态机 Jay Lee6.4.1 独立状态6.4.2 角色状态管理器6.4.3 使用CharacterStateMgr6.4.4 保持客户端和服务器端的同步6.4.5 状态依赖的子系统6.4.6 结论6.4.7 参考文献6.5 位打包:一种网络压缩技术 Pete Isensee6.5.1 一个实例6.5.2 难点6.5.3 位打包6.5.4 用于可打包数据类型的通用接口6.5.5 用于可打包数据类型的具体接口6.5.6 编解码器6.5.7 评价折衷6.5.8 改进6.5.9 结论6.5.10 参考文献6.6 多服务器网络游戏的时间和同步管理 石卫东(Larry Shi)、Tao Zhang6.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 参考文献第7章 音频简介 Eddie Edwards7.1 OpenAL简介 Joe Valenzuela7.1.1 OpenAL API7.1.2 有关OpenAL的实现7.1.3 实现一致性指南7.1.4 未来OpenAL的发展蓝图7.1.5 总结7.1.6 参考文献7.2 简单的实时Lip-Synching系统 Jake Simpson7.2.1 实现7.2.2 动画方面需要注意的事项7.2.3 声音音量的水印标记7.2.4 注意7.2.5 总结7.3 动态变量和音频编程 James Boer7.3.1 动态变量是什么?7.3.2 动态变量类7.3.3 在音频编程中使用动态变量7.3.4 其他改进7.3.5 结论7.3.6 参考文献7.4 创建一个音频脚本系统 Borut Pfeifer7.4.1 游戏中音频的类别7.4.2 工具7.4.3 基于XML的音频标记库7.4.4 脚本系统组件7.4.5 进一步的工作7.4.6 总结7.4.7 参考文献7.5 使用EAX和ZoomFX API的环境音效解决方案 Scott Velasquez7.5.1 什么是环境音效7.5.2 音频引擎的系统要求7.5.3 潜在可听集(PAS,Potentially Audible Set)7.5.4 EAX介绍7.5.5 总结7.5.6 参考文献7.6 在游戏的物理引擎中控制实时声音 Frank Luchs7.6.1 游戏引擎7.6.2 混合声音合成7.6.3 可听见对象的属性7.6.4 对象形状的影响7.6.5 对象材质的影响7.6.6 撞击和碰撞7.6.7 演示7.6.8 总结7.6.9 参考文献附录


飞网下载站,免费下载共享资料,内容涉及教育资源、专业资料、IT资源、娱乐生活、经济管理、办公文书、游戏资料等。