| 图书基本信息 | |||
| 图书名称 | 游戏编程算法与技巧 | 作者 | Sanjay Madhav,刘瀚阳 |
| 定价 | 89.00元 | 出版社 | 电子工业出版社 |
| ISBN | 9787121276453 | 出版日期 | 2016-10-01 |
| 字数 | 页码 | ||
| 版次 | 1 | 装帧 | 平装 |
| 开本 | 16开 | 商品重量 | 0.4Kg |
| 内容简介 | |
| 本书详细综述了应用在许多重要视频游戏编程中的算法和技术。书中采用了一种独立于平台和结构的方法,能协助开发几乎任何风格、语言和框架的游戏,并展现2D和3D图像、物理、人工智能、相机等工作的基本技术。书中的每个概念都是用C#、Java或 C 程序员直观明白的伪代码阐述的,并且作者已经改进和证实过这些伪代码。本书后作者详细分析了两个完整的游戏,清楚展现了前面章节讲到的很多技术和算法。 |
| 作者简介 | |
| Sanjay Madhav 是南加利福尼亚大学的讲师,在那里他教授了几门与游戏编程相关的课程。而在全职加入南加利福尼亚大学之前,他作为程序员在许多公司工作过,包括Electronic Arts、Neverso�� 及Pandemic Studios。虽然他在很多系统上都有着丰富的开发经验,但是他感兴趣的还是游戏机制的开发。他所参与的游戏包括《荣誉勋章:太平洋突袭》(Tony Hawk’s Project 8)、《指环王:征服》(Lord of the Rings: Conquest)和The Saboteur。 刘瀚阳,互娱高级工程师,Life-long级别的游戏玩家。兴趣使然,大学本科就选择了游戏专业,毕业后一直专注于游戏研发。参与过游戏引擎、大型商业MMORPG、中小型手游的开发。擅长游戏架构设计与开发,代码写得贼溜,略懂产品。一直在游戏行业中默默前进,希望有一天也能做出一款的游戏。 |
| 目录 | |
| 目录 章 游戏编程概述1 游戏编程的发展2 Atari时期(1977—1985年) 2 NES和SNES 时期(1985—1995年) 3 PS和PS2时期(1995—2005年) 3 Xbox360、PS3和Wii时期(2005—2013年) 3 游戏的未来4 游戏循环4 传统的游戏循环4 多线程下的游戏循环6 时间和游戏8 真实时间和游戏时间8 通过处理时间增量来表示游戏逻辑8 游戏对象10 游戏对象的类型10 游戏循环中的游戏对象11 总结13 习题13 相关资料14 游戏编程的发展14 游戏循环14 游戏对象14 第2章 2D 图形 15 2D渲染基础16 CRT显示器基础16 像素缓冲区和垂直同步17 精灵18 绘制精灵18 动画精灵20 精灵表单23 滚屏24 单轴滚屏24 无限滚屏26 平行滚屏27 四向滚屏28 砖块地图29 简单的砖块地图29 斜视等视角砖块地图31 总结32 习题32 相关资料33 Cocos2D 33 SDL 33 第3章 游戏中的线性代数 34 向量35 加法36 减法37 长度、单位向量和正规化38 标量乘积39 点乘40 问题举例:向量反射41 叉乘43 问题举例:旋转一个2D 角色45 线性插值46 坐标系47 矩阵48 加法/减法48 标量乘法49 乘法49 逆矩阵50 转置50 用矩阵变换3D 向量51 总结52 习题52 相关资料53 第4章 3D图形54 基础55 多边形55 坐标系55 模型坐标系56 世界坐标系56 视角/摄像机坐标系60 投影坐标系62 光照与着色64 颜色64 顶点属性65 光照67 Phong光照模型68 着色70 可见性71 再探画家算法72 深度缓冲区73 再探世界变换74 四元数75 3D游戏对象的表示77 总结77 习题77 相关资料78 第5章 游戏输入 79 输入设备80 数字输入80 模拟输入82 基于事件的输入系统84 基础事件系统85 一个更复杂的系统87 移动设备输入89 触屏和手势89 加速器和陀螺仪91 其他移动设备输入92 总结92 习题92 相关资料93 第6章 声音94 基本声音95 原始数据95 声音事件95 3D声音98 监听者和发射者98 衰减100 环绕声100 数字信号处理101 常见数字信号处理效果102 区域标记102 其他声音话题103 多普勒效应103 声音遮挡104 总结105 习题106 参考资料106 第7章 物理107 平面、射线和线段108 平面108 射线和线段109 碰撞几何体110 包围球110 轴对齐包围盒111 朝向包围盒111 胶囊体112 凸多边形113 组合碰撞几何体113 碰撞检测113 球与球的交叉113 AABB与AABB交叉114 线段与平面交叉115 线段与三角片交叉117 球与平面交叉119 球形扫掠体检测120 响应碰撞124 优化碰撞125 基于物理的移动126 线性力学概览127 可变时间步长带来的问题128 力的计算128 欧拉和半隐式欧拉积分129 Verlet积分法129 其他积分方法130 角力学130 物理中间件130 总结131 习题131 相关资料131 第8章 摄像机 132 摄像机的类型133 固定摄像机133 人称摄像机134 跟随摄像机134 场景切换摄像机135 透视投影135 视场136 宽高比137 摄像机的实现138 基础的跟随摄像机138 弹性跟随摄像机139 旋转摄像机142 人称摄像机144 样条摄像机146 摄像机支持算法149 摄像机碰撞149 拣选149 总结151 习题151 相关资料151 第9章 人工智能152 “真”AI 与游戏AI 153 寻路153 搜索空间的表示154 可接受的启发式算法156 贪婪佳优先算法157 A*寻路161 Dijkstra算法163 基于状态的行为164 AI的状态机164 基础的状态机实现165 状态机设计模式167 策略和计划168 策略168 计划169 总结170 习题170 相关资料172 通用AI 172 寻路172 状态172 0章 用户界面 173 菜单系统174 菜单栈174 按钮175 打字176 HUD元素177 路点箭头177 准心180 雷达181 其他需要考虑的UI 问题186 支持多套分辨率186 本地化187 UI中间件189 用户体验189 总结189 习题189 相关资料190 1章 脚本语言和数据格式191 脚本语言192 折中192 脚本语言的类型193 Lua194 UnrealScript 195 可视化脚本系统196 实现一门脚本语言197 标记化197 正则表达式198 语法分析199 代码的执行和生成200 数据格式202 折中202 二进制格式203 INI 203 XML 203 JSON 204 案例学习:《魔兽世界》中的UI Mod 205 布局和事件205 行为206 问题:玩家自动操作206 问题:UI 兼容性206 结论207 总结207 习题207 相关资料208 2章 网络游戏 209 协议210 IP 210 ICMP 211 TCP 212 UDP 214 网络拓扑215 服务器/客户端216 点对点218 作弊219 信息作弊219 游戏状态作弊220 中间人攻击220 总结221 习题221 相关资料222 3章 游戏示例:横向滚屏者(iOS)223 概览224 Objective-C 224 Cocos2D 225 代码分析226 AppDelegate 226 MainMenuLayer 227 GameplayScene 227 ScrollingLayer 227 Ship 228 Projectile 229 Enemy 229 ObjectLayer 229 练习230 总结231 4章 游戏示例:塔防(PC/Mac) 232 概览233 C# 233 XNA 235 MonoGame 235 代码分析236 设置236 单件236 游戏类237 游戏状态237 游戏对象238 关卡239 计时器239 寻路240 摄像机和投影241 输入241 物理242 本地化242 图形242 声音243 用户界面243 练习245 总结246 附录A 习题答案247 附录B 对开发者有用的工具260 |
| 编辑推荐 | |
| 1.本书全面介绍游戏行业中会用到的算法和技术,包括2D、3D图形学,物理,人工智能,摄像机等多个方面。 2.采用了独特的与平台架构无关的方法来展开开发,适用于任何游戏、风格、语言、框架。 3.每个概念的展示都使用了伪代码,并经过验证,容易被程序员们理解。 4.本书*后以两款完整游戏作为总结,使用了很多书中介绍的算法和技术,源代码都可下载。 5.请回顾每一章课后习题,能巩固所学,助你前进。 |
| 文摘 | |
| 序言 | |
这本书真的让我眼前一亮,完全颠覆了我之前对游戏编程的认知。我一直以为游戏开发就是写写代码,实现一些炫酷的特效,但这本书让我看到了背后更深层次的逻辑和艺术。它并没有像许多教材那样枯燥地堆砌理论,而是通过大量生动形象的例子,将那些看似高深莫测的算法和技巧,变得通俗易懂。我特别喜欢它在讲解每个算法时,都会追溯到其产生的历史背景和解决的实际问题,这让我不再是死记硬背,而是真正理解了“为什么”要这么做。书中的插图和图表也做得非常用心,很多复杂的概念通过可视化呈现,瞬间就清晰明了了。我以前在处理一些性能瓶颈的时候总是束手无策,感觉自己像个无头苍蝇,但看完这本书,我学会了如何去分析问题的根源,并且有了系统性的解决思路。例如,它关于碰撞检测的讲解,从基础的AABB到更高级的OBB,再到四叉树和八叉树的应用,每一步都讲解得细致入微,并且给出了实际的代码实现,我迫不及待地想把这些应用到我自己的项目中。
评分读完这本书,我最大的感受就是“豁然开朗”。我之前在编写一些需要大量计算的系统时,总是会遇到性能问题,优化起来也是大海捞针。这本书就像是一位经验丰富的导师,耐心地为我指明了方向。它在讲解数据结构和算法时,不仅仅是罗列了时间复杂度和空间复杂度,更重要的是结合了游戏开发的实际场景,例如如何选择合适的数据结构来存储大量的游戏对象,如何优化查找和插入操作,以及如何通过算法来减少不必要的计算。我特别喜欢书中关于随机数生成和优化的部分,这对于许多需要随机性的游戏类型至关重要,而书中提供的各种技巧和算法,能够帮助我生成更自然、更公平的随机结果,并且避免一些常见的陷阱。此外,对于物理引擎的介绍,也让我对游戏中的运动和交互有了更深刻的理解,不再是凭感觉去实现,而是有了更科学的依据。
评分这本书给我带来了一次意想不到的发现之旅。我原本是抱着学习一些“拿来就能用”的小技巧的心态去翻阅的,但没想到,它引导我深入到了许多游戏开发的核心原理。我印象最深刻的是关于路径寻找的章节,它不仅仅是介绍了A算法,还对Dijkstra算法、BFS等进行了深入对比,并阐述了它们各自的优缺点以及适用的场景。我之前一直觉得寻路就是一个黑盒,但现在我明白了其中的精妙之处,能够根据不同的游戏需求选择最合适的算法。而且,书中对于AI行为的模拟,例如有限状态机(FSM)和行为树(Behavior Tree)的讲解,也让我耳目一新。它不是简单地罗列概念,而是通过构建不同角色的行为逻辑,展示了这些技术如何赋予游戏角色生命力。我曾经在设计一些NPC的行为时感到力不从心,这本书为我提供了很多宝贵的思路和框架,让我的游戏角色不再是呆板的机器,而是有了更丰富的表情和更智能的反应。
评分这是一本让我受益匪浅的书,它在很多我曾经认为“难以逾越”的领域,都为我打开了新的大门。我曾经对如何在游戏中实现复杂的AI行为感到束手无策,但这本书的讲解,从基础的决策树到更高级的博弈论应用,都让我有了全新的认识。它不仅仅是讲解了算法,更重要的是展示了如何将这些算法融入到游戏的设计中,从而创造出更有趣、更有挑战性的游戏体验。我尤其喜欢它关于模拟和生成部分的内容,例如如何生成逼真的地形、如何模拟复杂的粒子系统,以及如何创建动态的游戏世界。这些技术不仅让游戏画面更加丰富多彩,也让游戏的玩法充满了无限可能。这本书让我意识到,游戏编程不仅仅是技术的堆砌,更是创造力的展现,而这些算法和技巧,正是实现这些创意的有力工具。
评分这本书的出现,可以说是及时雨。我一直对如何在游戏中实现流畅的动画和逼真的角色动作感到困惑,但这本书提供了一些我从未接触过的巧妙解决方案。它在关于插值和曲线的章节中,详细讲解了线性插值、贝塞尔曲线等在动画制作中的应用,并且给出了如何根据不同的需求来调整曲线的形状,从而达到想要的动画效果。我之前总是觉得动画制作是个比较“艺术化”的领域,但这本书让我看到了其中蕴含的严谨的数学原理和算法。另外,关于视锥剔除和遮挡剔除的讲解,也让我受益匪浅。我一直知道这些技术可以提高渲染效率,但书中对它们原理的剖析,以及如何根据场景的特点来选择和实现,让我对如何优化游戏的图形性能有了更具体的概念。现在,我再也不用担心因为场景复杂而导致游戏卡顿了,因为我知道如何有效地剔除那些不需要渲染的物体。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.qciss.net All Rights Reserved. 图书大百科 版权所有