当前位置:首页 > 工业技术
Windows游戏编程大师技巧  第2版
Windows游戏编程大师技巧  第2版

Windows游戏编程大师技巧 第2版PDF电子书下载

工业技术

  • 电子书积分:20 积分如何计算积分?
  • 作 者:(美)AndréLaMothe著;沙鹰译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115292483
  • 页数:735 页
图书介绍:本书将带领你到达游戏编程技术的另一个层次。本书教你把模糊逻辑学、神经网络和遗传法则运用到视频游戏上去,另外本书深入浅出地介绍了物理建模,教你如何将完全碰撞反应、动量传递和正向运动学等内容应用到游戏开发中,并进行实时模拟。
《Windows游戏编程大师技巧 第2版》目录

第一部分 Windows编程基础 2

第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基础 148

第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.15BOB引擎 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

第三部分 核心游戏编程 480

第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

第四部分 附录 694

附录A 光盘内容简介 694

附录B 安装DirectX和使用C/C++编译器 696

附录C 数学和三角学回顾 699

附录D C++入门 709

附录E 游戏编程资源 727

附录F ASCII表 731

返回顶部