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的源码:
文章最后依旧是送大家一个句子:
希望你,能在二十岁出头的生命里,做一些到了八十岁想起来还会微笑的事情。
电脑屏幕那端的你,晚安:)
下周一,回归季,游戏开发笔记第三季,我们,不见不散。
Windows游戏编程之从零开始d的更多相关文章
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记2——透明贴图,动画技术
第5章 透明贴图 像这样直接贴图会产生这种情况,所以我们需要透明贴图. 透明遮罩法:主要利用BitBlt函数中Raser(光栅)值的运算,需要准备素材图和遮罩图: 这个方法的原理解释见书131页. 示 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记3——输入消息处理,物理建模与粒子系统初步
第7章 Windows游戏输入消息处理 1. 键盘消息处理 之前提到的窗口过程函数有两参数与消息输出有关——wParam和llParam LRESULT CALLBACK WindowProc( _I ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入
第23章 三维天空的构建 目前描述三维天空的技术主要包括三种类型,直接来介绍使用最广泛的模拟技术,详细的描述可以见作者的博文. 天空盒(Sky Box),即放到场景的是一个立方体.它是目前使用最广泛的 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记4——Direct3D编程基础
第11章 Direct3D编程基础 2D游戏是贴图的艺术,3D游戏是渲染的艺术.这句话在我学过了之前的GDI编程之后,前一句算是有所体会,现在是来理解后一句的时候了. 安装DirectX SDK配置啥 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记1——创建窗口&GDI
第1章 创建窗口 步骤: 窗口类的设计 窗口类的注册 窗口的正式创建 窗口的显示与更新 消息循环体系 窗口过程函数处理消息 1. 设计:使用WNDCLASSEX结构体,这里注意的是C++中的结构体中的 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记7——DirectInput&纹理映射
第15章 DirectInput接口 DirectInput作为DirectX的组件之一,依然是一些COM对象的集合.DirectInput由IDirectinput8.IDirectInputDev ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记6——四大变换&光照与材质
第13章 四大变换 在Direct3D中,如果为进行任何空间坐标变换而直接绘图的话,图形将始终处于应用程序窗口的中心位置,默认这个位置就成为世界坐标系的原点(0,0,0).而且我们也不能改变观察图形的 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记9——游戏摄像机&三维地形的构建
第21章 游戏摄像机的构建 之前的程序示例,都是通过封装的DirectInput类来处理键盘和鼠标的输入,对应地改变我们人物模型的世界矩阵来达到移动物体,改变观察点的效果.其实我们的观察方向乃至观察点 ...
随机推荐
- AngularJS2学习
@Input @Input是用来定义模块的输入的,用来让父模块往子模块传递内容: @Component({ selector: 'bank-account', template: ` Bank Nam ...
- Splay tree
类别:二叉排序树 空间效率:O(n) 时间效率:O(log n)内完成插入.查找.删除操作 创造者:Daniel Sleator和Robert Tarjan 优点:每次查询会调整树的结构,使被查询频率 ...
- python中的gil是什么?
1.gil是什么? 在Python源代码:Python-2.7.10/Python/ceval.c.我看到的Python源代码版本为2.7.10 static PyThread_type_lock i ...
- html doctype 作用
文档模式主要有以下两个作用: 1.告诉浏览器使用什么样的html或xhtml规范来解析html文档 2.对浏览器的渲染模式产生影响:不同的渲染模式会影响到浏览器对于 CSS 代码甚至 JavaScri ...
- 强大的字符串格式化函数 - format
自python2.6开始,新增了一种格式化字符串的函数str.format(),它通过{}和:来代替% 位置方法格式化 >>>'{}-{}'.format('simon','ting ...
- yii2 gii页面404和debug调试栏无法显示解决方法
在debug和gii配置项中加一项: 'allowedIPs' => ['127.0.0.1', '::1', '*.*.*.*']即可 注:因为yii默认只让127.0.0.1访问
- gentoo下的wpa_supplicant无线网配置
在linux使用wpa_supplicant获得无线网的最痛苦的是莫过于去配置wpa_supplicant.conf文件了(当然对于linux老手这不算什么), 但是可以用一种简便的方法直接输入命令行 ...
- CentOS 6.4 使用第三方源
1.EPEL源 CentOS 6.x 32-bit (x86/i386):rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/ep ...
- Sass 编译的几种方法
常常有人会问,使用 Sass 进行开发,那么是不是直接通过“<link>”引用“.scss”或“.sass”文件呢? 那么这里告诉大家,在项目中还是引用“.css”文件,Sass 只不过是 ...
- 头文件的宏定义#ifndef测试
一.入题 在头文件的书写中,都加入了如下内容: #ifndef __头文件名_H #define __头文件名_H #endif 曾经在书中看到的解释是“防止重复定义”,今天突然想到为什么是这样的解释 ...