Win32编程
DirectX基础知识
2D图形和算法
游戏编程技术和数据结构
多线程编程
人工智能
物理建模
使用3D加速硬件设备

计算机程序是由逻辑和数学组成。而3D视频游戏很强调数学部分
3D图形学里的内容几乎全部涉及数学。只要了解一些基本的代数和几何知识就可以了。

第一部分 Windows 编程基础
1.学海无涯
2.Windows 编程模型
3.高级Windows编程
4.Windows GDI,控件和突发奇想
第二部分 DirectX和2D基础
5.DirectX基础和令人生畏的COM
6.初次邂逅DirectDraw
7.高级DirectDraw和位图图形
8.矢量光栅化及2D变换
9.DirectInput输入和力反馈
10.用DirectSound和DirectMusic演奏乐曲
第三部分 核心游戏编程
11.算法,数据结构,内存管理和多线程
12.人工智能
13.基本物理建模
14.文字时代
15.综合运用
第四部分 附录
A.光盘内容简介
B.安装DirectX和使用C/C++编译器
C.数学和三角学回顾
D.C++入门
E.游戏编程资源
F.ASCII码表

Windows游戏开发的各个方面
游戏的历史
游戏类型
游戏编程要素
使用工具
例子:FreakOut

游戏的构成
一个视频游戏基本上是一个连续的循环,它完成逻辑动作并以30帧/秒或更高的刷新率在屏幕上绘制图像。

第一步:初始化
在这一步中,游戏程序执行标准初始化操作,如内存分配,资源采集,从磁盘装入数据等等。
第二步:进入游戏循环
在这一步中,代码运行到游戏主循环体内部,此时各种操作开始运行,运行持续到用户推出主循环为止。
第三步:获得玩家的输入信息
在这一步,游戏玩家的输入信息被处理或缓存,以备下一步人工智能和游戏逻辑使用。
第四步:执行人工智能和游戏逻辑
这一部分包括游戏代码的主题部分,诸如执行人工智能,物理系统和一般游戏逻辑,其结果用于渲染下一帧图像。
第五步:渲染下一帧图像
在这一步中,玩家的输入和第四步中游戏人工智能和游戏逻辑执行的结果,被用来产生游戏的下一帧动画,这个图像通常放在不可见的缓冲区内,因此玩家不会看到它逐渐被渲染的过程,随后该图像被迅速拷贝到显示存储器中并显示出来。
第六步:同步显示
通常由于游戏复杂程度的不同,游戏在计算机上运行的速度会时快时慢。比如,如果屏幕上有1000个物体在动作,CPU的负载就比只有10个对象时重的多,从而游戏等 画面刷新率也会时高时低,而这时难以接受的,因此必须把游戏按照某个最大帧速率进行同步,并使用定时功能或等待函数来维持同步,一般来讲能达到30帧/秒的帧速率就非常好了。
第七步:循环
这一步非常简单,只需返回游戏循环的入口并重新执行上述全部步骤。
第八步:关闭
这一步是游戏的结束,表示将退出主程序或游戏循环,并返回到操作系统。然而在用户进行结束之前,用户必须释放所有的资源并清理系统,这些释放操作对任何其他软件也是同样要做的。

大多数情况下,游戏循环是一个含有大量状态的FSM,有限状态自动机。

提高速度的一些技巧
技巧一:使用全局变量
缺点:貌似很容易制作外挂

技巧二:使用内联函数
缺点:编译后生成的程序更大

技巧三:尽量使用32位变量而不是8位或16位
缺点:会浪费一些内存

技巧四:使用精简指令
例如:
if ((x+=(2*buffer[index++]))>10)
{
// do work
} // end if
更好的做法:
x+=(2*buffer[index]);
index++;
if (x > 10)
{
// do work
} // end if

技巧五:
使用二进制以为运算进行乘数是2的幂的简单证书乘法。因为所有的数据在计算机中都以二进制存储,把一组位元向左或向右移动就分别等价于乘法和除法运算
int y_pos = 10;
// multiply y_pos by 64
y_pos = (y_pos << 6);  // 2^6 = 64
相似的有:
// to divide y_pos by 8
y_pos = (y_pos >> 3); // 1/2^3 = 1/8

技巧六:
使用高效的算法而不是汇编。

技巧七:
不要在编程中优化代码。

技巧八:
不要为简单的对象定义太多复杂的数据结构和链表

技巧九:
使用C++应谨慎,不要疯狂写过多的class

技巧十:
如果方法不对,应该立即停止去利用其它方法

技巧十一:
经常备份

技巧十二:
合理组织工程文件。

Windows游戏编程大师技巧第二版学习笔记之第一章相关推荐

  1. Windows游戏编程大师技巧第二版学习笔记之第一章 实验补充

    前面记录的一下看书中的重点,编程还是要动手,下面就来动手试试,这里选择VC6.0编译器 这里先来配置游戏编程环境,原书中的dx81sdk_full.exe一共是1百多MB,其实没必要整那么多,看我在我 ...

  2. 开始利用CSDN做学习笔记,从windows 游戏编程大师技巧和3D游戏编程大师开始

    利用两个月的空余时间将windows 游戏编程大师技巧和3D游戏编程大师技巧看了一遍. 第一遍读的并不深入,代码也没有仔细研究.特别是3D下册,基本只是草草浏览了一遍而已.这一遍是为了对整体有个印象和 ...

  3. PMBOK(第六版) 学习笔记 ——《第一章 引论》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  4. 《Windows游戏编程大师技巧》(第二版)第1章(上)

    第1章 学海无涯 "Oh, you want some too?!?" -Hudson, Aliens Windows 编程就像是一场由来已久并还在进行着的战争.尽管游戏程序员曾经 ...

  5. 《Windows游戏编程大师技巧》(第二版)第2章

    因此几乎是一夜间,Windows 95就改变了整个计算机行业.的确,目前还有一些公司仍然在使用Windows 3.1(你能相信吗?),但是Windows 95使得基于Intel的PC成为除游戏之外的所 ...

  6. Windows游戏编程大师技巧(一)

    第一章 无尽之旅 Windows编程是一场由来已久并还在进行着的战争.开始时,游戏程序拒绝Windows平 台,但正如Borg所言:"反对无效......",我也赞同这一观点.本章 ...

  7. 《Windows游戏编程大师技巧》(第二版)第11章

    第三部分:核心游戏编程   第11章 算法.数据结构.内存管理和多线程   第12章 人工智能   第13章 游戏物理   第14章 文字时代   第15章 综合运用:编写游戏! 第11章 算法.数据 ...

  8. 《Windows游戏编程大师技巧》(第二版)第1章(下)

    实例:FreakOut 在沉溺于所讨论的有关Windows.DirectX 和3D 图形之前,应当暂停一下,先给你看一个完整的游戏--虽然简单了一点,但毫无疑问是一个完整的游戏.你会看到一个实际的游戏 ...

  9. 《Windows游戏编程大师技巧》三、Windows高级编程

    Windows编程很绝的地方在于:你不用了解太多细节,就可以完成很多工作. 使用资源 资源就是你的程序代码结合在一起的多块数据,可以被程序本身在运行时加载. 资源应当也放在程序的.EXE文件中的原因是 ...

  10. Windows游戏编程大师技巧之三角形填充

    一.三角形的种类 三角形一般可以分为如下的四种类型(这四种类型是对于计算机来说的,不是数学意义上的分类): 平顶三角形:就是在计算机中显示的上面两个顶点的Y坐标相同. 平底三角形:就是在计算机中显示的 ...

最新文章

  1. [js高手之路]打造通用的匀速运动框架
  2. Android自动化测试之Robotium学习(二)
  3. Jmeter连接SqlServer数据库进行压力测试
  4. P4199-万径人踪灭【FFT】
  5. error PRJ0003 : 生成“cl.exe”时出错 解决方案
  6. aix 查看防火墙状态_Linux 7.x 防火墙amp;端口
  7. C语言的变量怎样重启后不变,求解释,怎么能让程序里的变量在关闭后依然保存呢?...
  8. c语言二分法查找一个数_算法竞赛小专题系列(1):二分法、三分法
  9. 【cogs2711】jump,二分答案+倍增套ST表
  10. 项目疑难杂症记录(一):fragment单例导致的界面异常
  11. linux驱动编写(platform总线和网卡驱动)
  12. INITRANS和MAXTRANS参数的作用
  13. linux tcp重传超时时间,tcp 重传超时次数
  14. 7种寻址方式,以及有效地址计算方法。
  15. linux c获取网卡ip,linux c获取IP地址
  16. [技巧] 论文自动更新参考文献序号
  17. 比亚迪半导体IPO再生波折:又被中止审核 红杉小米是股东
  18. 【精】LintCode领扣算法问题答案:437. 书籍复印
  19. 基于微信小程序的物流仓储系统
  20. 51单片机用1602液晶屏实现可调时钟

热门文章

  1. MATLAB显示中文乱码问题 MATLAB2016
  2. centos linux引导修复_CentOs7 修复 引导启动
  3. 从零打造Android计算器(安卓开发初体验)
  4. wsdl2java maven_maven wsdl2java配置无法正常工作
  5. Microsoft Store下载应用奇慢无比的解决方案
  6. matlab实现遗传算法实例
  7. python抓取微信公众号文章_如何使用python3抓取微信公众号文章,了解一下?
  8. Modelsim下载、注册与添加仿真库(LATTICE DIAMOND)
  9. 联想昭阳E42-80高通QCA9377安裝Ubuntu14.04无法使用Wi-Fi解決方法
  10. ora01017 linux,ORA-01017: invalid username/password; logon denied 解决办法