目录 3
序 3
简介 3
第1部分 Windows编程基础 3
第1章 学海无涯 3
历史一瞥 3
设计游戏 5
游戏类型 6
集思广益 7
设计文档和情节串联图板 7
使游戏具有趣味性 8
游戏的构成 8
常规游戏编程指导规范 12
使用工具 16
从准备到完成——使用编译器 17
例子:FreakOut 19
总结 34
第2章 Windows编程模型 35
Windows的起源 35
多任务(Multitasking)和多线程(Multithreading) 38
按照微软风格编程:匈牙利符号表示法 41
世界上最简单的Windows程序 44
现实中的Windows立用程序 50
Windows类 50
注册Windows类 57
创建窗口 57
事件句柄 59
主事件循环 64
产生一个实时事件循环 68
打开多个窗口 69
总结 72
第3章 高级Windows编程 73
使用资源 73
使用菜单 89
GDI(图形设备接口)简介 99
处理重要事件 111
自行发送消息 125
总结 127
高级GDI绘图 128
第4章 Windows GDI、控件和突发奇想 128
点、线、平面多边形和圆 134
关于文本和字体 141
定时高于一切 143
使用控件 148
获取信息 153
T3D游戏控制台程序 159
总结 163
第2部分 DirectX和2D基础 167
第5章 DirectX基础知识和令人生畏的COM 167
DirectX基础 167
COM:是微软,还是魔鬼的杰作? 172
应用DirectX COM对象 183
总结 190
COM的前景 190
第6章 初次邂逅DirectDraw 191
DirectDraw的接口 191
创建DirectDraw对象 194
与Windows协作 198
设置模式 202
色彩的奥秘 205
创建显示表面 209
总结 227
第7章 高级DirectDraw和位图图形 228
使用高彩模式 228
双缓冲 239
表面动态 244
页面切换 247
使用blitter 253
基础裁剪知识 264
使用位图 276
离屏表面 285
位图的旋转和缩放 293
离散采样理论 295
色彩效果 298
手动色彩变换及查询表 306
DirectX新的色彩和Gamma控制接口 306
将GDI和DirectX联用 307
DirectDraw的庐山真面目 309
在窗口模式下使用DirectDraw 313
总结 321
第8章 矢量光栅化及2D变换 322
绘制线条 322
基础2D图形裁剪知识 331
线框多边形 344
2D平面里的变换(Transformation) 349
阵引论 360
平移 366
缩放 367
旋转 367
填充实心多边形 370
多边形碰撞检测 386
深入定时和同步 393
卷轴和摇镜头 395
伪3D等轴测引擎 401
T3DLIB1函数库 404
BOB引擎 440
总结 448
第9章 Directlnput输入和力反馈 449
输入循环 449
DirectInput 序曲 450
力反馈 482
编写一个广泛适用的输入系统:T3DLIB2.CPP 484
总结 489
第10章 用DirectSound和DirectMusic演奏乐曲 490
在PC上对声音编程 490
从此有了声音 491
数码声音与MIDI的比较——音质好且存储省 493
发声硬件 497
数码录音:设备和技术 497
DirectSound中的麦克风 499
初始化DirectSound 501
主声音缓冲与辅助声音缓冲 503
播放声音 508
用DirectSound反馈信息 510
从磁盘中读取声音数据 512
DirectMusic:伟大的试验 517
DirectMusic的体系结构 517
初始化DirectMusic 519
加载一个MIDI段 521
操作MIDI段 524
T3DLIB3声音和乐曲库 526
总结 535
第3部分 核心游戏编程 539
第11章 算法、数据结构、内存管理和多线程 539
数据结构 539
算法分析 546
递归 548
树结构 550
优化理论 557
制作演示 565
保存游戏的手段 566
实现多人游戏 567
多线程编程技术 568
总结 589
第12章 人工智能 590
人工智能初步 590
确定性AI算法 591
模式以及基本控制脚本的编写 597
建模行为状态系统 603
用软件对记忆和学习进行建模 609
计划树和决策树 611
寻路 617
高级AI脚本 626
人工神经网络 633
遗传算法 635
模糊逻辑 637
为游戏创造真正的AI 653
总结 653
第13章 基本物理建模 654
基本物理学定律 655
线性动量的物理性质:守恒与传递 665
模拟万有引力效果 666
讨厌的摩擦力 672
基本的特殊碰撞反应 676
实际2D物体间的精确碰撞响应(高级) 686
解决n-t坐标系统 689
简单运动学 695
粒子系统 700
创建游戏的物理模型 709
总结 711
第14章 文字时代 712
什么是文字游戏 713
文字游戏如何工作 714
从外部世界获得输入 717
语言分析和解析 718
组成游戏世界 731
实现听觉、嗅觉和视觉 735
实时响应 739
错误处理 739
造访Shadow Land 740
Shadow Land中使用的语言 740
编译和运行Shadow Land 742
总结 743
第15章 综合运用 744
Outpost的设计初稿 744
用于编写游戏的工具 745
游戏场景:在太空中卷动 746
玩家控制的飞船:“鬼怪号” 747
小行星带 749
敌人 751
“宝物” 754
HUD 755
粒子系统 758
玩游戏 758
编译Outpost 759
结束语 760
运行时用到的文件 760
第4部分 附录 765
附录A 光盘内容简介 765
附录B 安装DirectX和使用C/C++编译器 767
使用C/C++编译器 768
附录C 数学和三角学回顾 770
三角学 770
矢量(Vector) 773
附录D C++入门 781
C++是什么 781
最低限度应当了解的C++内容 783
新的类型、关键字和约定 784
流式输入输出 786
类 788
域操作符 796
函数和操作符重载 797
总结 799
附录E 游戏编程资源 800
游戏编程站点 800
下载点 800
二维/三维引擎 801
游戏编程书籍 801
微软公司的DirectX多媒体展示 801
站在业界浪尖 802
游戏开发杂志 802
Xtreme Games LLC 803
附录F ASCII码表 804