游戏程序员养成路径

   与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。

         首先你要精通一门高级语言,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版目前也很容易找到了
更新(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分析你电脑上的游戏,地形渲染通常是最容易分析的部分,而且可以让你马上了解目前流行的地形渲染方法。

模型导入和动画:

<<Advanced Animation with DirectX>>,仅此一本足以。
更新(2010.5.5):<<Character Animation With Direct3D>>已经可以很容易的找到了, 此书介绍了目前最新的游戏动画技术,作者是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:)

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

Foreword By Andrew Glassner xvii Preface xix Mathematical Notation xxi Pseudo-Code xxiii Contributors xxviii I I I I I I I I I IMAGE PROCESSING MAGE PROCESSING MAGE PROCESSING MAGE PROCESSING MAGE PROCESSING Introduction 3 1. Fast Bitmap Stretching C 4 Tomas Möller 2. General Filtered Image Rescaling C 8 Dale Schumacher 3. Optimization of Bitmap Scaling Operations 17 Dale Schumacher 4. A Simple Color Reduction Filter C 20 Dennis Braggviii CONTENTS 5. Compact Isocontours from Sampled Data 23 Douglas Moore and Joseph Warren 6. Generating Isovalue Contours from a Pixmap C 29 Tim Feldman 7. Compositing Black-and-White Bitmaps 34 David Salesin and Ronen Barzel 8. 2 1 2 -D Depth-of-Field Simulation for Computer 36 Animation Cary Scofield 9. A Fast Boundary Generator for Composited 39 Regions C Eric Furman II II II II II N N N N NUMERICAL AND PROGRAMMING UMERICAL AND PROGRAMMING UMERICAL AND PROGRAMMING UMERICAL AND PROGRAMMING UMERICAL AND PROGRAMMING T T T T TECHNIQUES ECHNIQUES ECHNIQUES ECHNIQUES ECHNIQUES Introduction 47 1. IEEE Fast Square Root C 48 Steve Hill 2. A Simple Fast Memory Allocator C 49 Steve Hill 3. The Rolling Ball C 51 Andrew J. Hanson 4. Interval Arithmetic C 61 Jon Rokne 5. Fast Generation of Cyclic Sequences C 67 Alan W. Paeth 6. A Generic Pixel Selection Mechanism 77 Alan W. Paethix CONTENTS 7. Nonuniform Random Points Sets via Warping 80 Peter Shirley 8. Cross Product in Four Dimensions and Beyond 84 Ronald N. Goldman 9. Face-Connected Line Segment Generation in an n-Dimensional Space C 89 Didier Badouel and Charles A. Wüthrich III III III III III M M M M MODELING AND TRANSFORMATIONS ODELING AND TRANSFORMATIONS ODELING AND TRANSFORMATIONS ODELING AND TRANSFORMATIONS ODELING AND TRANSFORMATIONS Introduction 95 1. Quaternion Interpolation with Extra Spins C 96 Jack Morrison 2. Decomposing Projective Transformations 98 Ronald N. Goldman 3. Decomposing Linear and Affine Transformations 108 Ronald N. Goldman 4. Fast Random Rotation Matrices C 117 James Arvo 5. Issues and Techniques for Keyframing Transformations 121 Paul Dana 6. Uniform Random Rotations C 124 Ken Shoemake 7. Interpolation Using Bézier Curves C 133 Gershon Elber 8. Physically Based Superquadrics C 137 A. H. Barrx CONTENTS I I I I IV V V V V 2-D 2-D 2-D 2-D 2-D GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS Introduction 163 1. A Parametric Elliptical Arc Algorithm C 164 Jerry Van Aken and Ray Simar 2. Simple Connection Algorithm for 2-D Drawing C 173 Claudio Rosati 3. A Fast Circle Clipping Algorithm C 182 Raman V. Srinivasan 4. Exact Computation of 2-D Intersections C 188 Clifford A. Shaffer and Charles D. Feustel 5. Joining Two Lines with a Circular Arc Fillet C 193 Robert D. Miller 6. Faster Line Segment Intersection C 199 Franklin Antonio 7. Solving the Problem of Apollonius and Other 203 Related Problems Constantina Sevici V V V V V 3-D 3-D 3-D 3-D 3-D GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS GEOMETRY AND ALGORITHMS Introduction 213 1. Triangles Revisited 215 Fernando J. López-López 2. Partitioning a 3-D Convex Polygon with an 219 Arbitrary Plane C Norman Chin 3. Signed Distance from Point to Plane C 223 Príamos Georgiadesxi CONTENTS 4. Grouping Nearly Coplanar Polygons into Coplanar Sets C 225 David Salesin and Filippo Tampieri 5. Newell’s Method for Computing the Plane Equation of a Polygon C 231 Filippo Tampieri 6. Plane-to-Plane Intersection C 233 Príamos Georgiades 7. Triangle-Cube Intersection C 236 Douglas Voorhies 8. Fast n-Dimensional Extent Overlap Testing C 240 Len Wanger and Mike Fusco 9. Subdividing Simplices C 244 Doug Moore 10.Understanding Simploids 250 Doug Moore 11. Converting Bézier Triangles into Rectangular Patches C 256 Dani Lischinski 12.Curve Tesselation Criteria through Sampling 262 Terence Lindgren, Juan Sanchez, and Jim Hall Vl Vl Vl Vl Vl R R R R RAY TRACING AND RADIOSITY AY TRACING AND RADIOSITY AY TRACING AND RADIOSITY AY TRACING AND RADIOSITY AY TRACING AND RADIOSITY Introduction 269 1. Ray Tracing with the BSP Tree C 271 Kelvin Sung and Peter Shirley 2. Intersecting a Ray with a Quadric Surface C 275 Joseph M. Cychosz and Warren N. Waggenspack, Jr.xii CONTENTS 3. Use of Residency Masks and Object Space Partitioning to Eliminate Ray-Object Intersection Calculations 284 Joseph M. Cychosz 4. A Panoramic Virtual Screen for Ray Tracing C 288 F. Kenton Musgrave 5. Rectangular Bounding Volumes for Popular Primitives C 295 Ben Trumbore 6. A Linear-Time Simple Bounding Volume Algorithm 301 Xiaolin Wu 7. Physically Correct Direct Lighting for Distribution Ray Tracing C 307 Changyaw Wang 8. Hemispherical Projection of a Triangle C 314 Buming Bian 9. Linear Radiosity Approximation Using Vertex-to-Vertex Form Factors 318 Nelson L. Max and Michael J. Allison 10. Delta Form-Factor Calculation for the Cubic Tetrahedral Algorithm C 324 Jeffrey C. Beran-Koehn and Mark J. Pavicic 11. Accurate Form-Factor Computation C 329 Filippo Tampieri VII VII VII VII VII R R R R RENDERING ENDERING ENDERING ENDERING ENDERING Introduction 337 1. The Shadow Depth Map Revisited 338 Andrew Wooxiii CONTENTS 2. Fast Linear Color Rendering C 343 Russell C. H. Cheng 3. Edge and Bit-Mask Calculations for Anti-Aliasing C 349 Russell C. H. Cheng 4. Fast Span Conversion: Unrolling Short Loops C 355 Thom Grace 5. Progressive Image Refinement Via Gridded Sampling C 358 Steve Hollasch 6. Accurate Polygon Scan Conversion Using Half-Open Intervals C 362 Kurt Fleischer and David Salesin 7. Darklights 366 Andrew S. Glassner 8. Anti-Aliasing in Triangular Pixels 369 Andrew S. Glassner 9. Motion Blur on Graphics Workstations C 374 John Snyder, Ronen Barzel and Steve Gabriel 10. The Shader Cache: A Rendering Pipeline Accelerator 383 James Arvo and Cary Scofeld References 611 Index
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值