游戏编程精粹.7.pdf

游戏编程精粹.7.pdf
 

书籍描述

编辑推荐
欢迎来到《游戏编程精粹7》的精彩世界游戏编程精粹系列图书定义了游戏编程的标准,而且也是创新技术的重要来源,《游戏编程精粹.7》提供了游戏开发人员有必要娴熱应用的工具和灵感,汇集了游戏业界资深人士和专家精心撰写的易于使用的前沿技术,是激发游戏开发人员的灵感、提升洞悉力的重要资源,而且游戏开发人员通过应用书中现成的方法可以节省其宝贵的时间。
《游戏编程精粹.7》满足了充满激情的游戏开发人员、急切的开发新手、如饥似渴的产品需求的需要.也满足了创新性和娱乐性游戏的需要《游戏编程精粹.7》涵盖了游戏开发的所有关键领域,包括数学和物理、人工智能、音频,甚至脚本和数据驱动系统《游戏编程精粹.7》每一章均由该领域的专家编辑,以确保其中的理念是独创的、正确的以及实用的书中有些知识对提升游戏玩家的体验有直接帮助,比如音频制作和人机交互你的开发团队有DBA么?从《游戏编程精粹.7》中可以学到将目标系统与相关数据库集成起来的建议方法认识到用于管理曰益扩张的团队规模的解决方案的需求,促进有效的内部和外部交流,书中的网络编程知识可以将网络管理人员已经熟知,但是在游戏开发界还没有广泛应用的工具应用到多人游戏开发中去。
深入理解《游戏编程精粹.7》中有用而且实用的理念和技术,可以帮助你开发出令人欣喜的可玩性较强的独创游戏
《游戏编程精粹.7》主题
通用编程——用网络摄像头玩的视频游戏的光流;多平台线程引擎的设计与实现;推迟函数唤醒系统:高级调试技术数学和物理——快速通用光线查询:使用投影空间来提高几何计算精度:复杂碰撞的简化;三角样条、人工智能——用行为克隆创建有趣的代理;管理AI算法复杂度;面向目标的计划合并;超越A:IDA和边缘搜索音频——基于可编程图形硬件的音频信号处理,多流:编写次世代音频引擎的艺术;实时音频效果;上下文驱动,层叠混合图形学——先进的粒子沉积;高效的细分表面:一个先进的贴花系统;基于艺术品的嫁接贴图渲染网络和多人游戏——游戏世界同步的高层抽象;网络游戏的身份验证:调试游戏网络脚本和数据驱动系统——Lua自动绑定系统;数据端口;为你的引擎增加shader,Python的AST。

作者简介
译者:项周臻 陶绍武 等 编者:(美国)Scott Jacobs 合著者:沙鹰 陈虎 等

沙鹰,目前在腾讯互动娱乐部门工作,之前曾在EA上海、EA加拿大、JAMDAT加拿大和UbiSoft上海工作,毕业于南京大学计算机系,是本次翻译特邀监制。
Scott Jacobs从1995年起就在游戏行业工作了。当前他是Destineer的高级软件工程师。在进入Destineer之前,他作为软件工程师在严肃游戏公司Virtual Heroes,以及包括Redstorm Entertainment在内的两家Ubisoftm作室工作,并在Interactive Magic.E.式进入游戏开发行业。他也是《游戏编程精粹6》中网络和多人游戏章节的编辑。他现在与他的妻子以及一些小动物住在北卡罗来纳。

目录
第1章 通用编程
简介 2
Adam Lake, 图形软件架构师,高级视觉计算(AVC)小组,英特尔
1.1 使用年龄和成本指标的高效率缓存替换 3
Colt“MainRoach”McAnlis,微软Ensemble工作室
1.1.1 概述 3
1.1.2 缓存替换算法 4
1.1.3 年龄和成本指标 5
1.1.4 结论 9
1.1.5 致谢 10
1.1.6 参考文献 10
1.2 高性能堆分配器 11
Dimitar Lazarov, Luxoflux
1.2.1 简介 11
1.2.2 相关工作 11
1.2.3 我们的解决方案 12
1.2.4 参考文献 18
1.3 用网络摄像头玩的视频游戏的光流 19
1.3.1 简介 19
1.3.2 OpenCV代码 20
1.3.3 第一种方法:图像差异 21
1.3.4 第二种方法:运动历史 21
1.3.5 第三种方法:Lucas-Kanade算法 22
1.3.6 光流游戏 23
1.3.7 参考文献 25
1.4 一个多平台线程引擎的设计与实现 26
1.4.1 一个实用线程架构的系统设计 26
1.4.2 线程 28
1.4.3 线程分配策略 30
1.4.4 对象的线程 31
1.4.5 线程的安全性、重新进入、对象同步和数据访问 32
1.4.6 使用缓存线(或缓存的一致性) 32
1.4.7 如何使用GLRThreading库 32
1.4.8 结论 34
1.4.9 参考文献 34
1.5 给蜜蜂和游戏玩家:如何处理六边形贴片 35
1.5.1 简介 35
1.5.2 六边形贴片的利弊 35
1.5.3 掌握六边形网格 38
1.5.4 实现技巧 39
1.5.5 应用 40
1.5.6 结论 42
1.5.7 参考文献 42
1.6 服务于即时战略游戏的基于细胞多孔机器(Cellular Automaton)的线条主界面 43
1.6.1 关注上下文的控制等级 44
1.6.2 实现细节 45
1.6.3 结论 49
1.6.4 参考文献 49
1.7 第一人称射击游戏的脚步导航技术 50
1.7.1 介绍 50
1.7.2 用脚来导航 51
1.7.3 一个简单的游戏 55
1.7.4 玩家测试 56
1.7.5 结论 57
1.7.6 以后的工作 57
1.7.7 致谢 57
1.8 推迟函数调用的唤醒系统 58
1.8.1 时间问题 58
1.8.2 案例分析 59
1.8.3 对函数调用分类 60
1.8.4 检视这个系统 60
1.8.5 结论 61
1.8.6 参考文献 61
1.9 多线程任务和依赖系统 62
1.9.1 介绍 62
1.9.2 任务系统 63
1.9.3 依赖性管理器 66
1.9.4 后续的工作 68
1.9.5 结论 69
1.9.6 参考文献 70
1.10 高级调试技术 71
1.10.1 程序崩溃 71
1.10.2 内存泄露 74
1.10.3 Windows错误汇报(WER) 75
1.10.4 框架 76
1.10.5 结论 77
1.10.6 参考文献 78

第2章 数学和物理
简介 80
2.1 随机数生成 82
2.1.1 背景:随机数生成 82
2.1.2 随机性测试 84
2.1.3 软件漂白 84
2.1.4 不加密随机数生成算法 85
2.1.5 加密RNG方法 89
2.1.6 创造随机数生成器的常见错误 90
2.1.7 代码 91
2.1.8 结论 91
2.1.9 参考文献 91
2.2 游戏中的快速通用光线查询 93
2.2.1 光线追踪介绍 93
2.2.2 K维树概念和存储考虑 94
2.2.3 动态物体 101
2.2.4 示例程序 101
2.2.5 结论 102
2.2.6 参考文献 102
2.3 使用最远特性图的快速刚体碰撞检测 103
2.3.1 背景 103
2.3.2 预处理 104
2.3.3 运行时查询 106
2.3.4 性能分析和结束语 107
2.3.5 致谢 107
2.3.6 参考文献 108
2.4 使用投影空间来提高几何计算精度 109
2.4.1 投影空间 109
2.4.2 R2空间中的基本对象 110
2.4.3 RP2空间中的点和直线 110
2.4.4 在RP2空间中的基本运算 111
2.4.5 在RP2空间中使用整数坐标进行精确的几何运算 112
2.4.6 在RP2空间中几何运算的数值范围限制 112
2.4.7 RP2空间运算的例子程序 114
2.4.8 拓展到第三维 116
2.4.9 结论 117
2.4.10 参考文献 117
2.5 使用XenoCollide算法简化复杂的碰撞 118
2.5.1 介绍 118
2.5.2 用支撑映射来表示形体 119
2.5.3 使用闵可夫斯基(Minkowski)差异来简化碰撞检测 121
2.5.4 使用闵可夫斯基入口简化(Minkowski Portal Refinement, MPR)来检测碰撞 122
2.5.5 使用MPR算法得到相交信息 125
2.5.6 结论 126
2.5.7 致谢 126
2.5.8 参考文献 126
2.6 使用变换语义的高效碰撞检测 128
2.6.1 仿射变换和游戏 128
2.6.2 从矩阵中抽取语义 129
2.6.3 在碰撞检测中使用变换语义 131
2.6.4 结论 134
2.6.5 参考文献 135
2.7 三角样条 136
2.7.1 背景知识 136
2.7.2 讨论 139
2.7.3 结论 139
2.7.4 参考文献 140
2.8 使用高斯随机性来拟真发射轨迹的变化 141
2.8.1 高斯分布 141
2.8.2 生成高斯随机性 142
2.8.3 其他应用 144
2.8.4 自然中的高斯分布 144
2.8.5 结论 144
2.8.6 参考文献 145

第3章 人工智能
第4章 音频
第5章 图形学
第6章 网络和多人游戏
第7章 脚本和数据驱动系统

序言
游戏编程精粹丛书出到现在已经有6卷了。每一卷都包含许多有用且实际的思路和技术。根据网上的讨论、好奇读者的期望、业余以及专业游戏开发者的咨询,我相信前作起到了让游戏更富有创意,更富有娱乐性和更加令人满意的促进效果。在第7卷里面,我们投入了大量努力来继承这一传统。游戏开发的激情
游戏开发正越来越成为一个充满幻想的历程。它是一个真正的能让激情与才华闪耀的知识精英的竞技。学位和经验也许能让你进入这个大门,但最终还是要看结果。你的代码容易维护吗?它的效率达到甚至超过目标了吗?视觉和听觉效果令人震撼吗?游戏玩法有趣吗?在这些方面超越别人的挑战毫无疑问让游戏开发令人兴奋,我猜想这也是激发书中文献作者们分享想法和经验的动机。我希望同样是这种向往超越的渴望把你引向这本书,因为这一卷的意义,同时事实上也是这整个系列的意义,就是提供给你提供工具和灵感来做到这一点。
没有几个行业能够像游戏业这样,开发者工作的激情如此之高,以至于在经历了5天的工作后,专业开发者们还会与业余爱好者聚集一起,为了周末的“果酱”继续做和工作曰一模一样的事情。也许我在电视上看到的伐木工竞赛和这有点近似。但是有多少伐木工会在家里安排一个伐木计划,却只是为了尝试一些新点子来获得乐趣和经验呢?

文摘
插图:

游戏编程精粹.7

共享状态信息。如果单元需要共享状态信息,它可能是不高效和不灵活的。看上去对于这个应用,这不是什么严重的问题,因为大多数单元不需要直接共享任何状态信息。在一些例外的情况下,你可以放开管道过滤器的限制,允许单元以特别高效的方式来进行通信,避开正式的单元输入和输出。但是那些例外应该十分罕见。通信和数据传输的开销。单元必须交换数据,这可能会引起一些开销。可能需要一些不直接对实现算法做出贡献的数据处理。如果单元是可以互换的,它们必须商定共有的通信协议,有些时候只是一个字符流大小。序列化和解析的过程可能会因太过昂贵而导致这个模式不可用。我们准备解决这个问题,并且最小化或者彻底去掉这个开销。可能是因为通信开销,但是我们已经承诺会最小化它们。也可能是因为架构依赖的原因,比如,上下文切换和同步开销。我们现在先不考虑这些问题,因为它们看上去在所有的并行处理方案中都很常见。也可能是因为处理的性质或者不良代码,比如,单元在给出任何输出数据前就消耗掉了所有的输入数据。这个单元可能变成整个工作流程的瓶颈。为了避免这个问题,无论何时只要有可能,你都应该让处理变为递增的,复杂的流程控制逻辑。工作流程的处理性质大多数是按顺序的,所以实现分支、循环和其他复杂的结构就变得很难。但是,在这个应用中,我们几乎可以从次序化处理方面重新思考和定义算法。这些新的定义会对自身十分有益。当一个看上去需要复杂控制执行流程的复杂任务被改变为更简单步骤的序列时,无疑会提高实现的内部质量,在少数情况下,当你不能做到时,可以使用传统管道过滤器模式之外的特殊结构。错误处理。总的来说,在管道过滤器模式中,错误处理可能会十分复杂,但是AdiflcialContendcr决策算法不需要任何错误后的恢复。所以,整个错误处理问题对于这个应用来说不是十分重要。复杂度、增加的可维护性尝试。这个模式采用了它自己的复杂度和可维护性尝试。因为将一个单独的实现分解为多个组件增加了组件和依赖性的数量,这个问题并不是只针对于这个模式的,而是任何分解的结果。我们的解决方案是尽可能地保持简单和轻量级。

内容简介
《游戏编程精粹.7》是游戏编程精粹系列的最新一本,内容涉及通用编程、数学和物理、人工智能、音频、图形学、网络和多人游戏、脚本和数据驱动系统等内容,具有较强的先进性和通用性。随书附带光盘中提供了《游戏编程精粹.7》的源程序、演示程序以及需要的各种游戏开发的第三方工具。
因此,无论你是一个刚刚起步的游戏开发新手,还是资深业界专家,都能够在《游戏编程精粹.7》中找到灵感,增强洞察力及开发的技能。将书中介绍的开发经验和技巧应用于实际项目中,将缩短开发时间,提高效率。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多