游戏程序猿养成计划

mthoutai mthoutai     2022-09-06     180

关键词:

原文地址:http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html

        与玩游戏相比,写游戏要复杂上千万倍,除了须要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内。因为相关资料的缺乏,更是让刚開始学习的人无从下手。以下总结了一些入门方法和比較easy入手的资料。

         首先你要精通一门高级语言,pc上游戏的首选语言就是C++。

其次。要有良好的英文阅读能力。对游戏开发人员来说英文阅读能力是最重要也是最主要的工具之中的一个,由于你遇到的大部分资源都将是英文的,不要总等着别人为你翻译。

慢慢尝试着阅读英文资料,你会发现事实上也并没有那么难:)

         接下来,选择一门图形API,比方DirectX或者OpenGL。假设考虑到跨平台,那么OpenGL,OpenGL ES(移动平台)是首选. 假设仅仅在ms的平台。则DX是首选。

我对OGL并非非常了解,所以以下大部门资料都是和DX相关的。当然,作为准备工作之中的一个。你首先要到DirectX Develop Center下载最新版的DirectX SDK。
更新(2013.3.19) 注意,DirectX库如今已经整合到了windows sdk中,部分工具也整合到了vs2012中,不再有单独的DirectX SDK。

但非常多样例仍然仅仅在曾经的DX SDK中。最后的版本号事2010年6月公布的。

         入门书籍很重要。推荐<<Introduction to 3D Game Programming with DirectX 9.0>>(好像去年出了中文版)也就是传说中的龙书,这能够说是最好的DX入门教材,Frank Luna从浅入深,讨论了DX的方方面面。

另外再配上<<DirectX 9 Graphics  the Definitive Guide to Direct3D>>。书名尽管是definitive 。但实际属于入门主要的书。

看完这两本书。你基本上已经对DirectX比較熟悉了。

更新(2010.11.6): <<Introduction to 3D Game Programming with DirectX 9.0>>的第二版,《xxx, A Shader Approach》也能够找到了。


更新(2013.3.19): 《Introduction to 3D Game Programming with DirectX xx》 此书的DX10和DX11版眼下也非常easy找到了
更新(2011.10.23):学习DX11的进阶书 <<Practical Rendering & Computation with Direct3D 11>> 。最好的DX11參考书。

 

         不要一開始就看图形学的书,这个时候你对图形编程还没有一个主要的感性认识,因此八成看的云里雾里。

不要以网上的教程和论坛提问作为主要学习途径。找一本好书,系统学习,把各种样例都亲手实现一遍。效率才最高。

不要立即看SDK里的样例。非常多图形学的基本原理只通过读代码是不会明确的。

某些年代太过久远的书最好*不要*看了,比方<<windows游戏编程大师技巧>>  <<3D游戏编程大师技巧>> 。有人说主要的思想总是不变的,可惜对于现代GPU来说,非常多早期的技术和优化技巧早就过时了。

这两本书中仅仅有软件光栅器部分比較有价值,而对初学来说,高速用现代API实现一些样例,更能高速建立起对图形渲染的技术的了解。

          好了,入门之后。是你巩固和拓展视野的阶段。

如今看计算机图形学就比較合适了。吐血推荐<<Real-Time-Rendering>>,这本书算得上是全部图形程序猿的必读书籍和參考手冊了,一定要看第三版。近期刚出了第三版(更新:已经有电子版了)。

国内其它全部以图形学命名的书都有一个共同点:枯燥,过时。

仅仅需看看当中二维三维变换和曲线曲面表示的部分就可以。

假设这个时候发现你当年数学没有学好,那么下面几本数学书是为游戏程序猿量身定制的。基本上覆盖了全部常见数学和几何问题:
<<3D Math Primer for Graphics and Game Development>>  
<<Mathematics for 3D Game Programming and Computer Graphics 3rd>>
<<Essential Mathematics Guide 2nd Edition>>
<<Geometric Tools for Computer Graphics>>

更新(2010.11.6)  看完上述入门书籍之后,就应该花点时间好好的完整阅读DirectX文档以及部分sample了,加深对DX整个系统,函数的了解。你会发现普通论坛里60%的问题都是文档里讲过的。

         事实上入门之后,就没有固定的学习路线了,最好依据你感兴趣的方向来学习。

Shader方面

《Cg_tutorial》和《The Complete Effect and HLSL Guide》都是不错的入门材料,当然还有SDK文档。<<Shaders for Game Programmers and Artists>>有大量入门的样例。<<Advanced Lighting And Materials With Shaders>>具体介绍了各种光照模型和技术。<<GPU Gems>> 1~3冊肯定是必读的,尽管有1,2有中文版,但某些翻译并非非常理想,强烈建议直接看英文版。ShaderX系列也是非常经典的系列,每年出版一本,包括了最新的实时渲染技术,现在已经出了第6冊了。不过网络上仅仅能找到1~3冊。1。2冊大部分shader都是用asm写的,只是看懂原理。转换为HLSL也并不难。

另外Nvidia SDK和ATI SDK也是学习shader的重要资源。

最后还有刚出的<< Programming Vertex, Geometry, and Pixel Shaders>>

更新(2010.4.30):ShaderX已经出版了第7冊,兴许的版本号因为版权原因。改名为GPU Pro: Advanced Rendering Techniques,仍然每年出版一本。

更新(2010.11.6): 天朝人民的智慧是无限的,非常多图形学的新书都能在taobao买单翻印的纸版了,包含ShaderX, GPU Pro系统等等.....

更新(2010.11.6): 关于ShaderX和GPU Gems经常有人问我较老的几冊值不值得看,还有看不懂怎么办。这里是我个人的看法,仅供參考:ShaderX和GPU Gems收录的都是比較前沿的技术。尽管每本之间没有连续性,但非常多技术都建立在之前的方法上。有时间的话,建议从第一本看起。

两本书都属于论文集。章节之间并没有太多连续性。所以不必从第一页看到最后一页,选择你感兴趣的部分就可以。比方对阴影感兴趣,就仅仅看阴影相关的章节。你能够看到整个阴影技术近10年的发展,变化,非常有价值。另外,书里非常多前沿。实验性的技术,因为硬件限制。通常要2,3年后才有可能普及,如今看曾经的几冊也不会太"过时"。

最后,这种书内容涉及了图形学的方法面面,2d,3d,图像处理,ai,游戏构架,gpgpu等等,范围太过广泛,特别是GPU Gems相比ShaderX更偏重学术研究。非常多技术终于不一定能实际应用到产品中,有些章节看不懂也属于正常现象。

地形:

<<Real Time 3D Terrain Engines Using C++ And DX9>>很全面的讨论了关于地形渲染的各种技术。至少应该把第5~9章都浏览一遍。

之后便能够 到virtual terrain查阅最近的地形渲染技术。
更新(2010.11.6): 常常尝试用PIX分析你电脑上的游戏,地形渲染一般是最easy分析的部分,并且能够让你立即了解眼下流行的地形渲染方法。

模型导入和动画:

<<Advanced Animation with DirectX>>,仅此一本足以。
更新(2010.5.5):<<Character Animation With Direct3D>>已经能够非常easy的找到了, 此书介绍了眼下最新的游戏动画技术。作者是xbox360大作Alan Wake的开发者,全然能够替代上面提到的那本。

物理:
<<Game Physics>>和<<Game Physics Engine Development>>都不错。<<Real-time Collision Detection>>是碰撞检測方面最好的书。

:<<3D Game Engine Design, 2nd>>的8,9章也值得一看。除此之外,就是各种开源碰撞引擎,比方Bullet

 LOD:
<<Level of Detail for 3D Graphics>>

Ray tracing:
<< Physical-Based Rendering - From Theory to Implementation>> 
更新(2010.4.30): 一本免费的新手教程Another Introduction to Ray Tracing
更新(2011.10.23): 此书已有第二版。而且有电子版。

引擎设计:
说实话,这方面还没有特别好的书。大概越是核心的内容,越少有人愿意写吧。<<3D Game Engine Architecture Engineering Real-Time Applications with Wild Magic>>仅仅有第三章值得一读。<<3D Game Engine Programming>>能够选部分感兴趣的章节看看,只是总的来说,讲的比較浅。
更新:<<3D Game Engine Design, Second Edition>>出了影印版本号,此书是<<3D Game Engine Architecture Engineering>>更新版。强烈推荐。
近期发现<<Pro OGRE 3D Programming>>也非常不错,200多页短小精干,可是能够让读者高速了解一个既有引擎的设计和构架。

更新(2010.7.15): 新出的《Game Engine Architecture》很不错,注意是Jason Gregory的版本号。假设仅仅推荐一本引擎方面的书,绝对是这本。强烈推荐!!
更新(2010.6.28): <<Game Engine Gems>>是关于引擎设计的新系列丛书,与ShaderX类似,也是每年一本,眼下已经出版了第一冊,已有电子版

AI & Game Programming
<<Programming Game AI by Example>>很不错,好像还有中文版,备选<<Artificial Intelligence for Games>>(已有第二版)。当然<<AI Programming Wisdom>>系列也是必读作品,只是眼下网络上仅仅有1~2冊。
更新(2010.5.28):<<AI Game Engine Programming>>已比較好找了,尽管说这是一本名不副实的书,并没有全然介绍一个"one for all"类型的引擎,也没有具体算法讨论。但针对各种不同类型游戏的AI设计做了具体介绍,可作为一本指參考导性书选择阅读。


网络:mai%25##&%...(本人网络白痴 +_+........)

综合:
<<Game Programming Gems>>系列,只是因为内容涉及的过于广泛。文章质量參差不齐。选择性阅读就能够了。

历年GDC, Gamefest,Siggraph等大型会议的paper也是应该关注的。至于那些“All in one”或者n天较你写出个FPS游戏的书就不要读了。这类书的通病是什么都说了,结果什么也没说清楚。

 除了书以外。再推荐一些不错的网络资源:
http://www.gamedev.net/ 除了大量教程以外,论坛里多年累计下来的内容保罗万象。

好好利用论坛搜索,你会发无论你多厉害,那里总有一些比你强大的人在非常久曾经就遇到了和你相同的问题,而且给出了解决方式。
Nvidia和ATI的开发人员中心
http://www.gamasutra.com/ 与GameDev类似
http://www.beyond3d.com/ 这里的除了讨论软件以外。还能看到对硬件构架的分析

         当然,不要忘了收集各大论坛里牛人们的blog:)

         最后,只靠看书是不够的,多写多练才是王道。

 

程序员猿救计划之1024梦境奇遇

点击「阅读原文」即刻参加「1024云采购狂欢季」~赢取锦牛大奖!豪华礼单独宠一人!实现梦想逆转人生! 查看详情

程序员猿救计划之1024梦境奇遇

即刻参加「1024云采购狂欢季」赢取锦牛大奖!豪华礼单独宠一人!实现梦想逆转人生!立即参加七牛云「云采购狂欢季」~ 查看详情

程序猿创业商业计划书怎么写才干与众不同?

内容简单介绍1、新颖的商业计划书2、巧用思维导图新颖的商业计划书一般来说,商业计划书肯定是越具体越好。通常,我们写商业计划书总是包含下面几个部分:公司介绍商业模式市场分析竞争分析团队介绍融资计划这种“保... 查看详情

h5棋牌平台出租一个程序猿必须会玩的游戏

今天,林萧要教你玩一个游戏,而这个游戏h5棋牌平台出租(h5.hxforum.com)联系方式170618633533企鹅2952777280源码出售房卡出售后台出租有意者私聊扣扣,绝对是帮助你通往程序猿巅峰的绝佳伴侣哦。  有的同学可能会说,“楼主,... 查看详情

程序员养成计划-操作系统篇之初识操作系统(代码片段)

...作系统分布式操作系统个人计算机操作系统四、运行机制程序的运行CPU的两种状态内核态和用户态的切换五、中断与异常中断中断的两种类型中断机制的基本原理六、系统 查看详情

bigger-mai养成计划,前端基础学习之html

...  2、开发者:    学习Html规则    开发后台程序:      写Html文件(充当模板的作用)@@@@      数据库获取数据,然后替换到html文件的指定位置(web框架)  3、本地测试      找到文件路径... 查看详情

《黑马程序猿》cocos2d游戏引擎复习笔记一

/**----------------------------游戏场景的搭建--------------------------------1首先创建一个surfaceview,它能够在子线程中更新UI(全局的)2然后在oncreate方法中对这个surfaceview进行实例化3使用setcontentview方法将这个surfaceview对象给设置到界面上... 查看详情

《黑马程序猿》cocos2d游戏引擎复习笔记一

/**----------------------------游戏场景的搭建--------------------------------1首先创建一个surfaceview,它能够在子线程中更新UI(全局的)2然后在oncreate方法中对这个surfaceview进行实例化3使用setcontentview方法将这个surfaceview对象给设置到界面上... 查看详情

java程序猿的javascript学习笔记(1——理念)

计划按例如以下顺序完毕这篇笔记:Java程序猿的JavaScript学习笔记(1——理念)Java程序猿的JavaScript学习笔记(2——属性复制和继承)Java程序猿的JavaScript学习笔记(3——this/call/apply)Java程序猿的JavaScript学习笔记(4——this/闭... 查看详情

uoj284快乐游戏鸡(代码片段)

...影无踪。计算鸡们开始跋山涉水寻找程序猿的踪迹。快乐游戏鸡跟随大部队走着走着,突然说道:“我好像打过类似的游戏”。快乐游戏鸡玩过的游戏是这样的:给定一棵$n$个结点的树,其中$1$号结点是根。每 查看详情

java程序猿的javascript学习笔记(9——jquery工具方法)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1——理念)Java程序猿的JavaScript学习笔记(2——属性复制和继承)Java程序猿的JavaScript学习笔记(3——this/call/apply)Java程序猿的JavaScript学习笔记(4——thi... 查看详情

程序猿的十一条浮躁表现

1.不能静下心来坚持读完一本有深度的书。2.收集了不少技术资料,但没有好好的去看他们。3.经常问哪种语言更强大,我到底该学什么。4.经常问某种技术有钱途吗。5.经常在论坛上回复”给个代码吧“。6.把时髦的技术挂在嘴边... 查看详情

java程序猿的javascript学习笔记(12——jquery-扩展选择器)

计划按例如以下顺序完毕这篇笔记:Java程序猿的JavaScript学习笔记(1——理念)Java程序猿的JavaScript学习笔记(2——属性复制和继承)Java程序猿的JavaScript学习笔记(3——this/call/apply)Java程序猿的JavaScript学习笔记(4——this/闭... 查看详情

程序猿之路01

...从电脑十一月之后来到我就知道我应该做些什么,天天打游戏度日并不是一个好主意.游戏玩着玩着经常有一种无聊空虚的感觉,不知道自己为什么去玩.人的一生很短,一眨眼二十年就这么过去了,好快啊.人生走完了四分之一.为了让... 查看详情

团队作业2——团队计划

...竟是什么系统,预期的用户量是多少。选题:微信打卡小程序描述:微信打卡小程序的面向用户是普通群众,主要针对于想养成早起、健身、阅读等一系列习惯的养成者。主要功能有新建打卡、打卡分享、查看个人信息以及个人... 查看详情

bzoj4212--神牛养成计划

正规题解传送门: https://zyqn.tech/?p=3163但是我们发现n只有2000,于是可以建出trie树然后愉快的bitset去搞。直接对于trie上每个节点开个bitset空间爆炸。但是有很多是重复的,所以我们想虚树一样建,每个节点只存一个link指针。... 查看详情

(ta养成计划c语言篇)新的开始,谈谈怎样学习

  大家好,我是运帷我现在是游戏公司的一名3D美术,从今天我将和大家从零基础开始学习程序,这将开启我职业的第二阶段。A.我学程序编程的目标通过C/C++开始Ue4的游戏开发,方面的知识Gameplay包括客户... 查看详情

segmentfault巨献1024程序猿游戏「红岸的呼唤」第一天任务攻略

今天一不小心在微博上看到了SegmentFault的一条微博:眼看今天就要过去了,那在这里说一下我的解题过程(事实上大家都知道了吧-=)。高速传送门:http://segmentfault.com/game/1上图就是第一天的任务。咋看起来和那谁写的《... 查看详情