Windows游戏编程大师技巧(第2版)
- ISBN:9787115292483
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:734
- 出版时间:2022-02-01
- 条形码:9787115292483 ; 978-7-115-29248-3
本书特色
适读人群 :Windows游戏程序员、想要学习Windows平台下游戏开发的读者游戏界传奇人物Andre LaMothe力作《3D游戏开发技巧》姊妹篇Windows游戏程序员的入行书中国较早一代游戏开 发者中的代表人物之一沙鹰翻译姚晓光、史晓明等专业人士重磅推荐
内容简介
《Windows游戏编程大师技巧(第 2版)》是游戏程序设计师André LaMothe的代表作。 全书分为4个部分,共计15章和6个附录。作者循循善诱地从程序设计的角度介绍了在Windows环境下进行游戏开发所需的全部知识,包括Win32编程以及DirectX中所有主要组件(包括DirectDraw、DirectSound、DirectInput和DirectMusic)。书中还用单独的章节详细讲授了2D图形学和光栅化技术、游戏算法、多线程编程、文本游戏和解析、人工智能(包括模糊逻辑、神经网络和遗传算法)、物理建模(接近碰撞反应、动量传递和正反向运动学)及实时模拟等游戏程序开发中的关键技术。附录部分介绍了本书光盘的内容,如何安装DirectX,回顾了数学和三角学的基础知识、C++编程的基础知识,还给出了游戏编程资源以及ASCII表。 《Windows游戏编程大师技巧(第 2版)》所附光盘上带有本书中所有程序的源代码、关于Direct3D和General 3D的文章和在线书籍以及众多免费的素材。 《Windows游戏编程大师技巧(第 2版)》适合想要学习Windows游戏编程的人员阅读,对于有一定经验的专业游戏开发人员,也具有较高的参考价值。
目录
第 一部分 Windows编程基础
第 1章 学海无涯 2
1.1 历史一瞥 2
1.2 设计游戏 5
1.3 游戏类型 5
1.4 集思广益 6
1.5 设计文档和情节串联图板 6
1.6 使游戏具有趣味性 7
1.7 游戏的构成 7
1.8 常规游戏编程指导规范 11
1.9 使用工具 14
1.10 从准备到完成——使用编译器 15
1.11 示例:FreakOut 17
1.12 小结 30
第 2章 Windows编程模型 31
2.1 Windows的起源 31
2.1.1 早期版本的Windows 31
2.1.2 Windows 3.x 32
2.1.3 Windows 95 32
2.1.4 Windows 98 33
2.1.5 Windows ME 33
2.1.6 Windows XP 33
2.1.7 Windows NT/2000 33
2.1.8 Windows 基本架构:Win9X/NT 34
2.2 多任务和多线程 34
2.2.1 获取线程的信息 34
2.2.2 事件模型 36
2.3 按照微软风格编程:匈牙利符号表示法 37
2.3.1 变量的命名 38
2.3.2 函数的命名 38
2.3.3 类型和常量的命名 38
2.3.4 类的命名 38
2.3.5 参数的命名 39
2.4 世界上**简单的Windows程序 39
2.4.1 总是从WinMain()开始 40
2.4.2 程序剖析 41
2.4.3 选择一个信息框 42
2.5 现实中的Windows应用程序 44
2.6 Windows类 45
2.7 注册Windows类 50
2.8 创建窗口 50
2.9 事件处理程序 52
2.10 主事件循环 57
2.11 产生一个实时事件循环 60
2.12 打开多个窗口 61
2.13 小结 63
第3章 高 级Windows编程 64
3.1 使用资源 64
3.1.1 整合资源 66
3.1.2 使用图标资源 66
3.1.3 使用光标资源 68
3.1.4 创建字符串表资源 71
3.1.5 使用.WAV声音资源 73
3.1.6 使用编译器创建.RC文件 76
3.2 使用菜单 77
3.2.1 创建菜单 77
3.2.2 装载菜单 79
3.2.3 响应菜单事件消息 82
3.3 GDI(图形设备接口)简介 86
3.3.1 重拾WM_PAINT信息 86
3.3.2 视频显示基础和色彩(Video Display Basics and Color) 90
3.3.3 RGB和调色板模式 91
3.3.4 基本文本显示 92
3.4 处理重要事件 97
3.4.1 Windows操作 97
3.4.2 处理键盘事件 101
3.4.3 处理鼠标事件 107
3.5 自行发送消息 109
3.6 小结 111
第4章 Windows GDI、控件和灵感 112
4.1 高 级GDI绘图 112
4.1.1 掀开图形设备描述表的盖头来 112
4.1.2 颜色、画笔和画刷 113
4.1.3 使用画笔 114
4.1.4 使用画刷 116
4.2 点、线、平面多边形和圆 117
4.2.1 绘制点 118
4.2.2 绘制线段 119
4.2.3 绘制矩形 120
4.2.4 绘制圆 122
4.2.5 绘制多边形 123
4.3 深入文本和字体 124
4.4 定时高于一切 125
4.4.1 WM_TIMER消息 125
4.4.2 低层定时操作 127
4.5 使用控件 130
4.5.1 按钮 131
4.5.2 向子控件发送消息 133
4.6 获取信息 136
4.7 T3D游戏控制台程序 141
4.8 小结 145
第 二部分 DirectX和2D基础
第5章 DirectX基础知识和令人生畏的COM 148
5.1 DirectX基础 148
5.1.1 HEL和HAL 150
5.1.2 更多的DirectX基础类 151
5.2 COM:是微软的杰作,还是魔鬼的杰作 153
5.2.1 COM对象是什么 154
5.2.2 接口标识符和GUID的详细内容 156
5.2.3 创建一个类COM对象 157
5.2.4 COM的简要回顾 158
5.2.5 可运行的COM程序 159
5.3 应用DirectX COM对象 162
5.3.1 COM和函数指针 163
5.3.2 创建和使用DirectX界面 166
5.3.3 接口查询 167
5.4 COM的前景 168
5.5 小结 169
第6章 初次邂逅DirectDraw 170
6.1 DirectDraw的接口 170
6.1.1 接口的特性 170
6.1.2 组合使用接口 172
6.2 创建DirectDraw对象 173
6.2.1 对DirectDraw进行错误处理 173
6.2.2 顺便提一下接口 174
6.3 与Windows协作 177
6.4 设置模式 180
6.5 色彩的奥秘 182
6.6 创建显示表面 185
6.6.1 创建一个主显示表面 186
6.6.2 关联调色板 192
6.6.3 绘制像素 192
6.6.4 清理资源 201
6.7 小结 202
第7章 高 级DirectDraw和位图图形 203
7.1 使用高彩模式 203
7.1.1 16位高彩模式 204
7.1.2 获取像素格式 205
7.1.3 24/32位真彩色模式 211
7.2 双缓冲 213
7.3 表面动态 217
7.4 页面切换 220
7.5 显存块移动单元(Blitter) 225
7.5.1 使用Blitter进行内存填充 227
7.5.2 从一个表面向另一个表面复制位图 232
7.6 基础裁剪知识 235
7.6.1 将像素按视口裁剪 235
7.6.2 位图裁剪技巧 236
7.6.3 使用IDirectDrawClipper进行DirectDraw裁剪 241
7.7 使用位图 245
7.7.1 载入.BMP文件 245
7.7.2 使用位图 250
7.7.3 载入8位位图 251
7.7.4 载入16位位图 252
7.7.5 载入24位位图 252
7.7.6 总结位图 253
7.8 离屏表面 253
7.8.1 创建离屏表面 253
7.8.2 在离屏表面上进行Blitting 254
7.8.3 设置Blitter 255
7.8.4 色彩键 255
7.8.5 源色彩键 256
7.8.6 目标色彩键 258
7.8.7 使用Blitter(终于!) 259
7.9 位图的旋转和缩放 260
7.10 离散采样理论 261
7.11 色彩效果 265
7.11.1 256色模式下的色彩动画 265
7.11.2 256色模式下的色彩旋转 270
7.11.3 使用RGB模式的技巧 271
7.12 手动色彩变换及查询表 272
7.13 新的DirectX色彩和Gamma控制接口 272
7.14 将GDI和DirectX联用 273
7.15 DirectDraw的庐山真面目 275
7.15.1 主DirectDraw对象 275
7.15.2 关于表面 277
7.15.3 使用调色板 277
7.16 在窗口模式下使用DirectDraw 278
7.17 小结 285
第8章 矢量光栅化及2D变换 286
8.1 绘制线条 286
8.1.1 Bresenham算法 287
8.1.2 算法的速度优化 292
8.2 基本2D图形裁剪 294
8.2.1 利用点斜式计算两条直线的交点 295
8.2.2 利用一般式计算两条直线的交点 297
8.2.3 利用矩阵式计算两条直线的交点 297
8.2.4 裁剪直线 299
8.2.5 Cohen-Sutherland算法 300
8.3 线框多边形 306
8.3.1 多边形数据结构 307
8.3.2 多边形的绘制及裁剪 308
8.4 2D平面里的变换 310
8.4.1 平移 310
8.4.2 旋转 312
8.4.3 缩放 319
8.5 矩阵引论 320
8.5.1 单位矩阵 322
8.5.2 矩阵加法 322
8.5.3 矩阵乘法 323
8.5.4 使用矩阵进行变换 325
8.6 平移 326
8.7 缩放 327
8.8 旋转 327
8.9 填充实心多边形 329
8.9.1 三角形和四边形类型 330
8.9.2 绘制三角形和四边形 332
8.9.3 三角形解构详述 334
8.9.4 四边形光栅化的一般性讨论 341
8.9.5 多边形的三角化 341
8.10 多边形碰撞检测 345
8.10.1 接近度、边界球/圆 345
8.10.2 边界盒 348
8.10.3 点包含 350
8.11 深入定时和同步 351
8.12 卷轴和摇镜头 353
8.12.1 页面卷轴引擎 353
8.12.2 均匀平铺(Tile)显示引擎 354
8.12.3 稀疏位图平铺显示引擎 358
8.13 伪3D等轴测引擎 359
8.13.1 方法1:基于单元,全二维 359
8.13.2 方法2:基于全屏,具有一些二维或三维的碰撞网络 361
8.13.3 方法3:采用全三维数学运算,使用一个固定的相机视角 362
8.14 T3DLIB1函数库 363
8.14.1 引擎架构 363
8.14.2 新的游戏编程控制台程序 364
8.14.3 基本定义 370
8.14.4 可用的宏 371
8.14.5 数据类型和结构 372
8.14.6 全局定义 375
8.14.7 DirectDraw接口 376
8.14.8 2D多边形函数 379
8.14.9 2D基本图元函数 381
8.14.10 数学和误差函数 385
8.14.11 位图函数 386
8.14.12 调色板函数 390
8.14.13 实用工具函数 392
8.15 BOB引擎 393
8.16 小结 400
第9章 DirectInput输入和力反馈 401
9.1 输入循环 401
9.2 DirectInput序曲 402
9.2.1 DirectInput组件 404
9.2.2 设置DirectInput的一般步骤 404
9.2.3 数据采集模式 405
9.2.4 创建主DirectInput对象 406
9.2.5 101键盘 407
9.2.6 读数据过程中的问题:重获取 413
9.2.7 捕捉鼠标 414
9.2.8 使用游戏杆 418
9.2.9 将输入消息化 428
9.3 力反馈 431
9.3.1 力反馈的物理原理 431
9.3.2 设置力反馈 431
9.3.3 力反馈演示程序 432
9.4 编写一个广泛适用的输入系统:T3DLIB2.CPP 433
9.5 小结 437
第 10章 用DirectSound和DirectMusic演奏乐曲 438
10.1 在PC上对声音编程 438
10.2 从此有了声音… 439
10.3 数码声音与MIDI比较——音质好且存储省 441
10.3.1 数码声音——从“位”开始 442
10.3.2 合成声音与MIDI 443
10.3.3 MIDI概述 444
10.4 发声硬件 444
10.4.1 波表合成 444
10.4.2 波导合成 445
10.5 数码录音:设备和技术 445
10.5.1 录制声音 446
10.5.2 处理声音 446
10.6 DirectSound中的麦克风 446
10.7 初始化DirectSound 448
10.7.1 理解协作等级 449
10.7.2 设定协作等级 450
10.8 主声音缓冲区与辅助声音缓冲区 450
10.8.1 使用辅助缓冲区 450
10.8.2 创建辅助声音缓冲区 451
10.8.3 把数据写入辅助声音缓冲区 453
10.9 渲染声音 454
10.9.1 播放声音 455
10.9.2 停止播放 455
10.9.3 控制音量 455
10.9.4 调整频率 456
10.9.5 调整声道平衡 456
10.10 用DirectSound反馈信息 456
10.11 从磁盘中读取声音数据 458
10.11.1 .WAV文件格式 458
10.11.2 读取.WAV文件 458
10.12 DirectMusic:伟大的试验 462
10.13 DirectMusic的体系结构 463
10.14 初始化DirectMusic 464
10.14.1 初始化COM 464
10.14.2 创建一个演奏对象 464
10.14.3 给演奏对象增加端口 465
10.15 加载一个MIDI段 466
10.15.1 创建一个加载程序 466
10.15.2 加载MIDI文件 466
10.16 操作MIDI段 469
10.16.1 播放一个MIDI段 469
10.16.2 停止一个MIDI段 469
10.16.3 检查MIDI段的状态 469
10.16.4 释放一个MIDI段 470
10.16.5 关闭DirectMusic 470
10.16.6 一些DirectMusic的实例 470
10.17 T3DLIB3声音和乐曲库 470
10.17.1 头文件 471
10.17.2 类型 471
10.17.3 全局变量 472
10.17.4 DirectSound API封装 472
10.17.5 DirectMusic API封装 476
10.18 小结 478
第三部分 核心游戏编程
第 11章 算法、数据结构、 内存管理和多线程 480
11.1 数据结构 480
11.1.1 静态结构和数组 480
11.1.2 链表 481
11.2 算法分析 487
11.3 递归 489
11.4 树结构 490
11.4.1 建立二分查找树(BST) 493
11.4.2 搜索BST 495
11.5 优化理论 497
11.5.1 运用你的头脑 497
11.5.2 数学技巧 498
11.5.3 定点运算 499
11.5.4 循环体展开 502
11.5.5 查找表 502
11.5.6 汇编语言 503
11.6 制作演示 504
11.6.1 预先记录的演示 504
11.6.2 由人工智能控制的演示 505
11.7 保存游戏的手段 505
11.8 实现多人游戏 506
11.8.1 轮流 506
11.8.2 分屏 506
11.9 多线程编程技术 507
11.9.1 多线程编程的术语 508
11.9.2 为何要在游戏中使用线程 509
11.9.3 取得一个线程 510
11.9.4 线程间的消息传递 516
11.9.5 等待合适时机 520
11.9.6 多线程和DirectX 526
11.9.7 高 级多线程编程 526
10.10 小结 527
第 12章 人工智能 528
12.1 人工智能初步 528
12.2 确定性AI算法 529
12.2.1 随机运动 530
12.2.2 跟踪算法 531
12.2.3 反跟踪:闪避算法 534
12.3 模式以及基本控制脚本的编写 535
12.3.1 基本模式 535
12.3.2 具备条件逻辑处理的模式 539
12.4 行为状态系统建模 540
12.4.1 基本状态机 541
12.4.2 加入更多表现个性的行为 544
12.5 用软件对记忆和学习进行建模 546
12.6 计划树和决策树 548
12.6.1 计划编程 549
12.6.2 实现真正的计划生成器 552
12.7 寻路 553
12.7.1 试探法(Trial and Error) 554
12.7.2 轮廓跟踪 555
12.7.3 碰撞规避跟踪 555
12.7.4 路点寻路 556
12.7.5 一个赛车例子 559
12.7.6 可靠的寻路 559
12.8 高 级AI脚本 563
12.8.1 设计脚本语言 563
12.8.2 使用C/C++编译器 565
12.9 人工神经网络 568
12.10 遗传算法 571
12.11 模糊逻辑 573
12.11.1 普通集合论 573
12.11.2 模糊集合理论 574
12.11.3 模糊语言变量及其规则 575
12.11.4 模糊流形与成员关系 577
12.11.5 模糊关联矩阵 581
12.11.6 用模糊化的输入处理FAM 583
12.11.7 暖融融 589
12.12 为游戏创造真正的AI 589
12.13 小结 589
第 13章 基本物理建模 590
13.1 基本物理学定律 591
13.1.1 质量(m) 591
13.1.2 时间(t) 591
13.1.3 位置(s) 592
13.1.4 速率(v) 593
13.1.5 加速度(a) 594
13.1.6 力(F) 597
13.1.7 多维空间中的力 598
13.1.8 动量(P) 598
13.2 线性动量的物理性质:守恒与传递 599
13.3 模拟万有引力效果 601
13.3.1 模拟重力井 603
13.3.2 模拟炮弹弹道 604
13.4 讨厌的摩擦力 607
13.4.1 摩擦基本概念 607
13.4.2 斜面上的摩擦力(高 级) 609
13.5 基本的特殊碰撞反应 611
13.5.1 简单的x,y反弹物理 611
13.5.2 计算任意方向上的平面碰撞反应 614
13.5.3 矢量反射示例 616
13.5.4 线段的交点 617
13.6 实际2D物体间的精 确碰撞响应(高 级) 621
13.7 解决n-t坐标系统 624
13.8 简单运动学 630
13.8.1 求解正向运动学问题 631
13.8.2 解决反向运动学问题 633
13.9 粒子系统 634
13.9.1 每颗粒子都需要的东西 635
13.9.2 设计粒子引擎 635
13.9.3 粒子引擎软件 636
13.9.4 产生初始条件 640
13.9.5 整合微粒系统 642
13.10 创建游戏的物理模型 643
13.10.1 物理建模的数据结构 643
13.10.2 基于帧的模拟与基于时间的模拟 643
13.11 小结 645
第 14章 文字时代 646
14.1 什么是文字游戏 647
14.2 文字游戏如何工作 647
14.3 从外部世界获得输入 650
14.4 语言分析和解析 651
14.4.1 词法分析 655
14.4.2 句法分析 660
14.4.3 语义分析 662
14.5 组成游戏世界 663
14.5.1 表示场景 663
14.5.2 放置物体 665
14.5.3 让事情发生 666
14.5.4 自由移动 666
14.5.5 物品系统 666
14.6 实现视觉、听觉和嗅觉 666
14.6.1 听觉 667
14.6.2 嗅觉 668
14.6.3 视觉 668
14.7 实时响应 670
14.8 错误处理 671
14.9 造访Shadow Land 671
14.10 Shadow Land中使用的语言 671
14.11 编译和运行Shadow Land 673
14.12 小结 674
第 15章 综合运用 675
15.1 Outpost的设计初稿 675
15.1.1 游戏背景 675
15.1.2 设计游戏玩法 676
15.2 用于编写游戏的工具 676
15.3 游戏场景:在太空中卷动 677
15.4 玩家控制的飞船:鬼怪号 678
15.5 小行星带 680
15.6 敌人 681
15.6.1 边哨(Outpost) 681
15.6.2 捕食者太空雷 682
15.6.3 战舰 682
15.7 “宝物” 685
15.8 HUD 685
15.9 粒子系统 688
15.10 玩游戏 689
15.11 编译Outpost 689
15.12 结束语 690
第四部分 附录
附录A 光盘内容简介 694
附录B 安装DirectX和使用C/C++编译器 696
附录C 数学和三角学回顾 699
附录D C++入门 709
附录E 游戏编程资源 727
附录F ASCII表 731
作者简介
本书作者Andre LaMothe有25年的计算行业从业经验,拥有数学、计算机科学和电子工程等学位,是20岁时就在NASA做研究工作的少数几人之一。作者
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥48.2¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0