代码改变世界

《Windows游戏编程大师技巧》一、学海无涯

2012-04-07 12:06  htc开发  阅读(240)  评论(0编辑  收藏  举报


偶然发现了本很棒的游戏编程入门书 - 《Windows游戏编程大师技巧》。说是大师技巧,其实还是很深入浅出的。
它涵盖了Windows图形编程的方方面面,从Win32的Helloworld程序,到GDI简介,再到DirectX的API。很适合我
这种Windows编程的菜鸟,所以很喜欢这本书的内容。

觉得这本书好的另一个原因是:虽然内容丰富,但没有涉及Windows编程比较繁琐的地方,基本就是Win32加DirectX。
这对于不想深入学习COM、MFC等等Windows平台上众多繁杂的技术的人来说很适合。尤其是刚学完C语言,需要一些
练手的小项目。Windows下的C编程与Linux下相比,比较有趣,图形化看起来也比较有成就感。

历史一瞥

早期的PC机落后于家用游戏机,最强大的游戏机统治了游戏市场。
DOOM的出现和成功证明了一点:只要足够聪明,人们可以使PC机做任何事。

在DOOM热的冲击下,微软开始重新评价自己在游戏编程上的地位,它意识到娱乐产业的巨大。
但Win95实时处理视频音频的能力很差,于是微软制作了一个叫Win-G的软件,但失败了。
事实上,它不过是一堆用于画位图的图形调用而已。

随后DirectX诞生了,最初的两个版本有太多糟糕的缺陷,微软低估了视频游戏编程的复杂性。
直到DirectX 5.0发布,人们才从DOS上转到Windows上进行开发。


设计游戏

3D数学很难,但策划和设计一个有趣的游戏可谓同样困难、重要。
想出一个游戏点子并不特别难,关键是细节、最终实现和视觉效果。


游戏的构成

编写MS Word程序虽然难,但是编写Unreal游戏则要比编写我所知道的其他任何程序都要难。



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





常规游戏编程指导规范

视频游戏是超高性能的计算机程序。不能在对运行时间或内存要求特别严格的代码段中使用高层API。
特别是与游戏内循环有关的代码大都需要手工编写。除此之外,还应留意下列技巧。

技巧1 全局变量代替参数传递

不要怕使用全局变量,许多视频游戏不让对时间要求严格的函数使用参数,而用全局变量来传递参数。



由于参数要被压栈、出栈,执行这个函数体的时间小于调用函数的时间。所以可以设立一些全局变量,
在调用前赋值以传递参数。
     

技巧2 内联函数

使用内联函数inline指示编译器用函数体代码去替换函数调用。这样做会使编译后的程序变大,
但却有效地提高了运行速度。


技巧3 尽量用32位变量

奔腾处理器是全32位架构的,较小的变量会降低寻址速度。


     这个结构没有注意字节对齐,一共5字节。


     一共12字节。浪费了许多内存,但换来了速度的提升。

技巧4 使用二进制移位运算


技巧5 设计算法

设计高效率的算法,没有任何一种汇编语言能使复杂度为O(n²)的算法运行的更快。


开发环境配置

1.安装DirectX运行时。

2. 安装DirectX SDK包。

3. 新建Win32工程,将SDK目录下的Lib文件夹中的库函数和Include文件夹中的头文件导入到工程中。

4. 开始开发!具体编译链接过程如下图所示。