Windows游戏编程之从零开始d
I'm back~~恩,几个月不见,大家还好吗?
这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧。 woxiangnifrr童鞋说每天都在来浅墨的博客逛一下看有没有更新,“每天都来就像看女神那般不依不舍”,弄得我再不更新都不好意思了,哈哈~怎么说呢,前段时间忙毕设,回国,暑假,间隔年旅行休整,然后是适应新的生活,各种事情,也真正没有心境来更新博客了,最近正好心境安定下来,就继续开始写博。额,关于思想汇报改天我专门写一篇文章和大家交流交流,现在先打住说正事吧~
首先是大家关心的博客回归问题,博客会在这段时间继续开始更新,《Visual C++游戏开发》专栏的第三季,更新时间暂定依旧是每周一。
---------------------------------------------------------------------------------------------------------------------------------------------
————浅墨于2014年4月10日更新
---------------------------------------------------------------------------------------------------------------------------------------------
然后这篇博文主要是用于《逐梦旅程:Windows游戏编程之从零开始》一书的维护工作,勘误和源代码下载两个方面。
这是一本凝聚了我们游戏开发梦想的书。
这是一本充满了正能量的书,其次呢,她才是一本技术书。这本书浅墨用了一年多时间完成,最近刚出版,已经陆续在当当,淘宝,亚马逊,京东上架了,各大实体书店也渐渐有了货。
放一张样书的玉照吧,浅墨自己构思的封面哦,很梦幻吧:
有不少朋友评论说贴个购买链接就好了,那就在这里更新贴出来吧,浅墨写的书《逐梦旅程:Windows游戏编程之从零开始》购买地址如下:
PS:觉得不错的话,可以在豆瓣给浅墨写的书五星好评哦,如果有感触想说点什么,请给浅墨的书写个书评:)
点了五星或者写了书评之后呢,给浅墨发邮件领福利~~浅墨在这里拜谢了~~~
在这里补充一点哈,玄灵隐士 童鞋提到了一个应该是大家比较关心的问题,在这里集中说明下吧。他的问题原文是:
作者您好,请问这本书和您的博客里发表的《【Visual C++】游戏开发笔记》系列文章之间是什么关系?是互为补充?还是说这本书已经包含了您之前写的所有文章然后又扩充了一些东西?
而我的回答是:
嗯,这本书吸收了我之前写的所有《【Visual C++】游戏开发笔记》系列文章的精华之处,然后又扩充了很多重要的东西,内容更加的翔实,
内容架构更加的合理,还加入了更多接地气的,时代前沿的和方便入门游戏开发的知识点。:)
———————————浅墨 于2013年11月19日
那么,下面对这本倾注了浅墨一年多心血的书籍来做一个简单的介绍吧:
一、自序:我有一个梦想——致终将由我们去复兴的国产游戏
All our dreams can come true, if we have thecourage to pursue them.
我们所有的梦想都可以成真,只要我们有勇气去追求它们。
————沃尔特·迪斯尼
依稀记得那还是F4红遍大街小巷,满城都飘扬着《流星雨》的年代。
那个时候的电子游戏,无论是投币式的街机游戏,还是网吧里的《反恐精英》、《流星蝴蝶剑》、《仙剑奇侠传》、《星际争霸》、《帝国时代》等引领时代的游戏界的璀璨明珠,总能深深地吸引住每个纯真无邪孩童的心,绚烂的游戏画面总是让孩童们流连忘返。
那个时候,每次放学后唯一单纯的想法,就是悄悄溜到学校附近的网吧,和电脑游戏亲密接触。口袋里有邻花钱的时候就能玩上一会儿,没有零花钱的时候就痴痴地站在屏幕前面看别人操纵着荧幕前的剑侠闯荡世界。年少的我单纯地认为,游戏世界中存在着一个无比恢弘的世界,那是可以装下梦想的地方。应该是我对游戏的痴迷,对游戏开发梦想的虔诚,让我走向了研习游戏开发的这条道路。
还记得那个香樟树覆盖的夏天,年幼无知的我在一帮同学中吹牛说:我长大后,一定要自己开发出比这些还牛还要好玩的游戏。
现在想想,这几年走过的路途,真应了那句话,“现在的努力,都是为了小时候吹过的牛逼”。
这些年来,在学习游戏编程的道路上有过惊喜,有过坎坷,有过自豪,有过怅惘,走了不少弯路,也算是最终走上了正途,小有所成。于是,我单曲循环着五月天的《有些事情现在不做一辈子都不会做了》,打开Word,打开Visual Studio,把自己这么多年来的游戏开发经验和心得用文字凝聚起来,开始为大家写这本书。
而这么一写,就是一整年。
经过一年夙兴夜寐,终于,赶在22岁生日之前,近百万字的书稿随着一声响指而初具雏形。
“谨以此书献给父母,因养育之恩无以回报。谨以此书献给母校南京航空航天大学和乌克兰国立航空航天大学,因赐予我一颗不甘平庸、上下求索的心。谨以此书献给所有怀揣游戏开发梦想的人们,因为,你们不是一个人在战斗。”
当在书稿的开头写下这三个“谨以”的时候,我终于开始觉得,这一年的夜以继日,这一年的披星戴月,都是值得的。
然而,因为岁月积累的关系,这本书中渗透的编程思想或许不能和编程界中的泰斗们同日而语。但是,我可以捂着胸口问心无愧地说,我把这些年自己悟出来的关于游戏编程的学习方法和真知灼见,毫无保留地呈现给了大家。大家能看到的眼前的这些句子和代码,全都是经过一遍又一遍的深思熟虑,一遍又一遍的修改,然后小心谨慎地敲出来的。
详细研究过游戏编程的朋友们都应该有这样的共识:“中国人写的书水平上不去,外国人写的书水平有了,但是翻译得往往都强差人意,理解不了”。也许正是这个原因,国内游戏编程的入门门槛一直很高,DirectX一直被人们认为是很难学的。很多怀揣游戏开发梦想的热血青年们,信誓旦旦地开始着手学习游戏编程的时候,却被晦涩难懂的游戏编程教材拒之梦想门外,碰了一鼻子灰,从此和最初的梦想失之交臂。我想,这正是导致国产游戏业界的萎靡,国产游戏一直很难成长起来的原因之一。
在这样的环境的激励下,这本倾注我一年多心血的书出现了,它的创作初衷便是渴望能够改变这样的现状。
愿这本书,能帮到那些热爱游戏编程、怀揣游戏开发梦想,却苦于难以入门的人们,让他们少走弯路。
愿这本书,能为国产游戏、国产游戏引擎的崛起,开启一扇门,迎接新的黎明。
我有一个梦想,将来的某一天,大家都能玩到蕴含着中国上下五千年本土文化的优质游戏大作。
我有一个梦想,有一天,西游记能出ACT,让老外去体会中国文化西游记中”斗战胜佛”的打击快感,那一定比西方的动作巅峰之作《战神》、《鬼泣》更加深邃。
我有一个梦想,有一天,上海滩能出沙盒游戏,而不是玩《GTA》感受美国梦,亦或是玩着《热血无赖》体验国外公司强行塞给我们的“中国文化”。
我有一个梦想,有一天,不少3A大作不需要汉化,因为是我们自己的游戏,配音是中文,文化也是中国的。
我有一个梦想,将来的某一天,国产游戏能像中国的其他产业一样,以一个领跑者的姿态,面对全世界,面对全宇宙,器宇轩昂,扬眉吐气。
这会是由我们一起去完成的梦想。
我等着我们的好消息。
浅墨 2013年5月于乌克兰
二、逐梦 · 导读
这本书分为六大篇章,26个章节。六大循序进阶的篇章分别为:
篇章序:逐梦 • 游戏开发梦想的重量
篇章一:起航 • 夯实游戏程序之根
篇章二:初探 • GDI 2D游戏编程
篇章三:飞跃 • DirectX游戏编程基础
篇章四:致用 • DirectX游戏编程应用
篇章五:升华 • 致我们的游戏开发梦想
以下的书本导读内容可以帮到大家更好的对当前的学习阶段进行定位,让自己对号入座,快速、科学地开始自己的游戏编程逐梦之旅。
l 如果你的编程经验为零:
毫无编程经验的朋友,请先阅读介绍C++编程语言的相关书籍,再来延续我们的梦想,阅读这本书。学习C++推荐书目:《C++ Primer》与《C++ Primer Plus》,或各大高校的C++程序设计教程。
l 有C++编程经验但不熟悉Windows 下编程:
有C++编程经验但毫无Windows编程经验的朋友,可以重头到尾顺畅的阅读这本书。因为这本书最准确的定位就是有一点C++编程经验之后从零开始掌握Windows游戏编程。
l 如果你有Windows 编程经验但不熟悉GDI:
但不熟悉GDI有Windows 编程经验但不熟悉GDI的朋友,推荐适当阅读第一章之后,推荐从第四章开始征程。
l 如果你想了解Windows GDI游戏绘图技巧:
想了解Windows GDI游戏绘图技巧的朋友,请阅读第五章。
l 如果你想了解Windows游戏动画技巧:
想了解Windows游戏动画技巧的朋友,第六章会满足你的好奇心。
l 想了解Windows小游戏键盘鼠标编程相关知识:
需要了解Windows中小游戏对键盘鼠标编程相关知识的朋友,第七章会给你答案。
l 想看看Windows GDI如何写出好玩的程序:
想看看Windows GDI可以弄出哪些好玩的玩意儿的朋友,第八章会给你惊喜。
l 想了解一个GDI小游戏完整的开发过程:
想了解一个结构完整的小游戏的开发过程的朋友们,第九章会超出你们的期待。
l 如果你想开始学习DirectX游戏编程:
有一定Windows编程经验,并且了解GDI编程,已经准备好迎接挑战,想开始DirectX3D游戏编程学习的朋友,请从第十章开始阅读。这本书从第十章往后的内容组织起来是一个系统的DirectX游戏编程教材,其实可以单独成书的。
l 想了解DirectX的进阶应用技术:
如果你已经打好DirectX的编程基础,想了解DirectX的进阶应用,请从第21章开始阅读。
l 想了解游戏引擎技术:
如果你通过自己的不懈追逐,已经有了不错的C++/DirectX基础,想适当了解游戏引擎技术,第26章正是为你准备的。
l 想搜寻进阶的游戏编程书籍
如果你已经完成本书的学习,并且信心满满,想知晓世界范围内有哪些进阶游戏编程书籍可以进一步提高自己的“段位”,总结全面的附录A.2和A.3正是为你准备的。
三、详细注释的书本配套源代码下载
源代码包是400多Mb的rar格式压缩包,完全解压后近1G,是和书一样的大块头了。
每个程序浅墨都有用心为大家准备,代码都经过详细注释,每个程序示例运行的时候都有精选的,独一无二的背景音乐播放。
配套源代码包解压后是如下的样子:
那么,《逐梦旅程:Windows游戏编程之从零开始》一书配套源代码下载地址:
暂时用百度网盘先顶着,其他下载方式会陆续放出~:)
先放一些程序截图吧:
然后这里是配套示例程序的一些说明:
第3章:
1.【FirstBlood!】 一个简单的Windows API示例程序,并附有dota中第一个击杀会播放的很酷的“FirstBlood”音效。
2.【GameCore】 用代码勾勒出游戏开发所需的核心框架程序
第4章:
3.【GDIdemoCore】实现GDI游戏开发所需的核心框架程序
4.【GDIdemo1】GDI基本几何绘图示例程序
5.【GDIdemo2】GDI文字输出示例程序
6.【GDIdemo3】GDI位图绘制示例程序
第5章:
7.【GDIdemo4】透明贴图两套体系之:透明遮罩法示例程序
8.【GDIdemo5】透明贴图两套体系之:透明色彩法示例程序
第6章:
9.【GDIdemo6】游戏动画技巧之 定时器动画显示示例程序
10.【GDIdemo7】游戏动画技巧之 游戏循环动画显示示例程序
11.【GDIdemo8】游戏动画技巧之 透明动画示例程序
12.【GDIdemo9】游戏动画技巧之 排序贴图示例程序
第7章:
13.【GDIdemo10】Windows消息处理之键盘消息处理示例程序
14.【GDIdemo11】Windows消息处理之鼠标消息处理示例程序
第8章:
15.【GDIdemo12】愤怒的小鸟弹球之物理匀速运动模拟示例程序
16.【GDIdemo13】愤怒的小鸟弹球之重力环境模拟示例程序
17.【GDIdemo14】愤怒的小鸟弹球之摩擦力环境模拟示例程序
18.【GDIdemo15】粒子系统初步之雪花飞舞示例程序
19.【GDIdemo16】粒子系统初步之星光绽放示例程序
第9章:
20.【GDIdemo17】小型回合制游戏:《勇者斗恶龙》程序源码
第11章:
21.【D3DdemoCore】Direct3D程序的核心框架
22.【D3Ddemo1】Direct3D初始化四步曲 示例程序
23.【D3Ddemo2】Direct3D渲染五步曲 示例程序
第12章:
24.【D3Ddemo3】Direct3D顶点缓存的逆袭 示例程序
25.【D3Ddemo4】Direct3D索引缓存的故事 示例程序
第13章:
26.【D3Ddemo5】迈向三维世界:Direct3D四大变换 示例程序
第14章:
27.【D3Ddemo6】Direct3D中几种几何体的快捷绘制示例程序
28.【D3Ddemo7】绘制真实质感的三维世界:光照与材质示例程序
第15章:
29.【D3Ddemo8】游戏输入控制利器 : DirectInput 示例程序
30.【D3Ddemo9】对DirectInput的封装 示例程序
第16章:
31.【D3Ddemo10】为三维世界添彩:纹理映射示例程序之一
32.【D3Ddemo11】为三维世界添彩:纹理映射示例程序之二
第17章:
33.【D3Ddemo12】网格模型和X文件使用面面观 示例程序
第18章:
34.【D3Ddemo13】水乳交融的艺术:alpha混合技术 示例程序
第19章:
35.【D3Ddemo14】横看成岭侧成峰:深度测试和Z缓存 示例程序
第20章:
36.【D3Ddemo15】虚实结合的光影 : 模板技术 示例程序
第21章:
37.【D3Ddemo16】翱翔于三维空间:第一人称摄像机的实现示例程序
第22章:
38.【D3Ddemo17】钟灵毓秀的世界:三维地形系统的实现示例程序
第23章:
39.【D3Ddemo18】向碧蓝的苍穹致敬:三维天空的实现示例程序第24章:
40.【D3Ddemo19】让唯美的雪花飘扬:三维粒子系统的实现示例程序
第25章:
41.【D3Ddemo20】造物主的降临:多游戏模型的载入示例程序
四、纠错·交流
由于浅墨水平有限,书中难免会有疏漏之处。希望电脑屏幕前热心的你,能够指出书本中错误,评论在这篇文章中。
浅墨会及时对这一部分的内容进行更新,以便在书籍下一版印刷的时候,以一个更完美更严谨的样子,呈现在懂得她的人的面前。
书本勘误
<1>p137 透明色彩法GDIdemo5的运行效果问题
微软在某次更新中,将TransparentBlt函数的透明色的取值改变了,让它在双缓冲体系中透明色取GB(0,0,0)的时候,不能正常进行透明操作。也就照成了大家在运行GDIdemo5时,普遍反映得不出透明效果的情况。如果硬是要取透明色为RGB(0,0,0)的话,就需要使用三缓冲,这就是为什么说根据GDIdemo8中的三缓冲体系代码来改的话,就可以得出效果的原因了。:)如果配合图片素材,取透明色为RGB(0,0,0)之外的颜色,比如RGB(0,255,255)或者RGB(1,2,3),都可以达到透明的目的。这边是经过修改的三缓冲版本的GDIdemo5的源码:
文章最后依旧是送大家一个句子:
希望你,能在二十岁出头的生命里,做一些到了八十岁想起来还会微笑的事情。
电脑屏幕那端的你,晚安:)
下周一,回归季,游戏开发笔记第三季,我们,不见不散。