游戏编程入门书籍与开源引擎
转自http://blog.csdn.net/soilwork/archive/2009/01/08/3731645.aspx
和http://bbs.gameres.com/showthread.asp?threadid=136722
附网上搜索到的圣剑2源码http://www.hackchina.com/cont/158863
入门书籍
与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。
首先你要精通一门高级语言,比如C++或者C#,其次,要有良好的英文阅读能力。对游戏开发者来说英文阅读能力是最重要也是最基本的工具之一,因为你遇到的大部分资源都将是英文的,不要总等着别人为你翻译。慢慢尝试着阅读英文资料,你会发现其实也并没有那么难:)
刚开始,你要做的就是选择一门图形API,一般就是DirectX或者OpenGL之间选一个。 如果考虑到跨平台,那么OGL是首选. 如果只在ms的平台,则DX是首选。我对OGL并不是很了解,所以下面大部门资料都是和DX相关的。
当然,作为准备工作之一,你首先要到DirectX Develop Center下载最新版的DirectX SDK。
入门书籍非常重要,推荐<<Introduction to 3D Game Programming with DirectX 9.0>> (好像去年出了中文版)也就是传说中的龙书,这可以说是最好的DX入门教材,Frank Luna从浅入深,讨论了DX的方方面面。另外再配上<< Advanced 3D Game Programming With DirectX 9.0>> ,书名虽然是advanced,但实际上没有多少advanced级别的内容。看完这两本书,你基本上已经对DirectX比较熟悉了。如果你希望学习XNA,也是一样的,毕竟XNA是以DX为基础。
不要一开始就看图形学的书,这个时候你对图形编程还没有一个基本的感性认识,因此八成看的云里雾里。不要以网上的教程和论坛提问作为主要学习途径,找一本好书,系统学习,效率才最高。不要马上看SDK里的例子,很多图形学的基本原理仅仅通过读代码是不会明白的。某些年代太过久远的书就不要看了,比如《windows游戏编程大师技巧》(总看到有人在找这本书)。有人说基本的思想总是不变的,可惜对于现代GPU来说,很多早期的技术和优化技巧早就过时了。图形编程是发展的非常快的技术,看看GPU的发展速度,1~2年就是一代产品的革新。
好了,入门之后,是你巩固和拓展视野的阶段。现在看计算机图形学就比较合适了。吐血推荐<<Real-Time- Rendering>> ,这本书算得上是所有图形程序员的必读书籍和参考手册了。最近刚出了第三版(更新:已经有电子版了)。可惜国内只有第二版,稍微有点老,如果实在找不到第三版,还是值得一读。国内其他所有以图形学命名的书都有一个共同点:枯燥,过时。只需看看其中二维三维变换和曲线曲面表示的部分即可。 如果这个时候发现你当年数学没有学好,那么有三本数学书是为游戏程序员量身定制的:<<3D Math Primer for Graphics and Game Development>>, <<Mathematics for 3D Game Programming and Computer Graphics>>和<<Essential Mathematics Guide 2nd Edition>> ,第一本书有中文版,最后一本则是08年才出的新书。
其实入门之后,就没有固定的学习路线了,最好根据你感兴趣的方向来学习。
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>>
地形:<<Real Time 3D Terrain Engines Using C++ And DX9>>非常全面的讨论了关于地形渲染的各种技术,至少应该把第5~9章都浏览一遍。之后便可以 到virtual terrain查阅近期的地形渲染技术。
模型导入和动画:<<Advanced Animation with DirectX>>,仅此一本足以。
物理:<<Game Physics>>和<<Game Physics Engine Development>>都不错。<<Real-time Collision Detection>>是碰撞检测方面最好的书,可惜目前还没有电子版。
LOD:<<Level of Detail for 3D Graphics>>
Ray tracing:<< Physical-Based Rendering - From Theory to Implementation>>
引擎设计:说实话,这方面还没有特别好的书,大概越是核心的内容,越少有人愿意写吧。<<3D Game Engine Architecture Engineering Real-Time Applications with Wild Magic>>只有第三章值得一读。<<3D Game Engine Programming>>可以选部分感兴趣的章节看看,不过总的来说,讲的比较浅。更新:<<3D Game Engine Design, Second Edition>>出了影印版本,强烈推荐。最近发现<<Pro OGRE 3D Programming>>也很不错,200多页短小精干,但是可以让读者快速了解一个既有引擎的设计和构架。
AI:<<Programming Game AI by Example>>非常不错,好像还有中文版,备选<<Artificial Intelligence for Games>>。当然<<AI Programming Wisdom>>系列也是必读作品,不过目前网络上只有1~2册。
网络:%##@% ...(本人是网络白痴 +_+........)
综合:<<Game Programming Gems>>系列,不过由于内容涉及的过于广泛,文章质量参差不齐,选择性阅读就可以了。历年GDC, Gamefest t,Siggraph等大型会议的paper也是应该关注的。
至于那些“All in one”或者n天较你写出个FPS游戏的书就不要读了,这类书的通病是什么都说了,结果什么也没说清楚。
除了书以外,再推荐一些不错的网络资源:
www.GameDev.net 除了大量教程以外,论坛里多年累计下来的内容保罗万象。好好利用论坛搜索,你会发不管你多厉害,那里总有一些比你强大的人在很久以前就遇到了和你同样的问题,并且给出了解决方案。
Nvidia和ATI的开发者中心
creators.xna.com XNA官方网站
www.gamasutra.com 与GameDev类似
www.beyond3d.com 这里的除了讨论软件以外,还能看到对硬件构架的分析
www.ziggyware.com 最好的XNA教程网站
www.gameres.com 国内唯一比较专业的游戏编程网站,可惜和GameDev相比就显得太寒碜了-_-#
当然,不要忘了收集各大论坛里牛人们的blog:)
最后,仅仅靠看书是不够的,多写多练才是王道。
五大开源游戏引擎介绍
对游戏编程初哥来说,选择一个好的游戏引擎是一个很头疼的事。市面上鱼目混杂,并且价格不菲。今天我要隆重推出开源游戏引擎五强(严格上说是四个,有一个是图像引擎)。他们不仅被证明是可靠的,而且全部开放源码。
1. Irrlicht http://irrlicht.sourceforge.net/
始于2003,次年即被评为最佳开源游戏引擎。官方支持C++和.Net,拓展语言绑定包含java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自带API.
优点:容易上手;跨平台;自带XML解析器;大的社区;
缺点:最[来源:GameRes.com] 近开发慢下来了
2. Panda3D http://www.panda3d.org/
由迪斯尼开发,卡耐基-梅隆娱娱乐科技中心支持。Python是官方推荐语言。也支持C++。
优点:有用的社区;大量功能;定期开发;
缺点:缺乏工具支持;极差的文档;
3. jME (爪哇猴子引擎) http://www.jmonkeyengine.com/
全部由Java实现。最流行的Java游戏引擎之一。
优点:容易上手;活跃的社区;内置物理引擎
缺点:我不太知道,因为没用过
4. OGRE http://www.ogre3d.org/
图像引擎中最好的一个。2000年立的项。推荐使用C++语言。需要非常熟悉编程才行。初学者不宜。
优点:大量功能;优异的文档;大规模的社区;活跃的开发
缺点:不适合初哥;只有图像引擎
5. Crystal Space http://www.crystalspace3d.org/main/Main_Page
1997年发行,用C++编写的开源游戏引擎。推荐使用C++
优点:不错的社区支持;大量功能;
缺点:难学;
我个人的经验是,C++初学者应从Irrlicht着手,这是最容易上手的。我没有Java编程经验,所以不好说什么。但是我认为jME还是可以踹踹的,很好的社区支持啊。
游戏编程入门书籍与开源引擎相关推荐
- python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...
游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...
- quake3 android,Android 3D游戏引擎研发(基于Quake3开源引擎移植)
摘要: 随着移动设备的性能提高和3D图形技术在移动设备领域的应用,在移动设备上研发3D游戏.3D场景将会成为一个新的亮点.3D游戏引擎是研发3D游戏.3D场景的核心技术.目前Android系统发展迅速 ...
- 游戏编程之十 图像引擎DirectXDraw
视频课:[免费]跨平台APP JQuery Mobile开发-1-初探移动开发-张晨光的在线视频教程-CSDN程序员研修院 图像引擎DirectXDraw 目前win95下比较常用的图像引擎是Dire ...
- python游戏编程入门书籍推荐-Python游戏编程入门3
用户输入:Bomb Catcher游戏 本章介绍使用键盘和鼠标获得用户输入.包括如下主题: 学习pygame事件 学习实时循环 学习键盘和鼠标事件 学习轮询键盘和鼠标的状态 编写Bomb Catche ...
- DX9绘图-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(8)
DX9绘图 前边讲了一些绘图基础,看不懂不要紧,其实我也看不懂哦.数学基础不好的话,确实不容易看懂,但只要懂的调用,能完成想要做的工作,那就马马虎虎吧,若是深入研究的话,建议买本计算机视觉艺术,计算机 ...
- 为什么Cocos2D开源引擎最适合游戏创业团队?
http://www.csdn.net/article/2012-10-09/2810603-wangzhe-cocos2d Cocos2D王哲MDCC 摘要:Cocos2D-X核心开发者王哲认为,只 ...
- Cocos2D开源引擎最适合游戏创业团队
[由CSDN和创新工场联合举办的"移动开发者大会•中国2012"将于2012年10月19-20日在国家会议中心举办.移动开发者大会(MDCC)是中国最大规模的移动开发者顶级盛会,历 ...
- 最大的幻术-游戏开发-到底是先学游戏引擎还是先学游戏编程
学习游戏的目的 我们学习游戏制作,游戏开发,游戏编程,游戏XX,我们的目的只有一个,打造一个非常牛逼,非常屌,非常让人开心的虚拟体验.我们用自己的学识让玩家在虚拟世界征战,生活,一步一 ...
- DX9贴图-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(11)
DX9贴图 先准备2张图片,蜘蛛为m1.png,单眼怪物为m2.png 创建一个Form1.frm,输入如下源码: Private Sub Form_Load()'新手注意:游戏编程中, '通常将窗体 ...
最新文章
- 在Github上搭建Jekyll博客和创建主题
- curl head请求_CURL速查
- HeapAlloc与malloc的区别
- 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归
- 判断一个男人穷还是富,只看这几点!
- 电大计算机考试题目excel,电大计算机考试复习题EXCEL部分
- Jquery网页元素里面的操作以及JSON
- 软件定义网络(Software Defined Network )
- QThread: Destroyed while thread is still running的处理方法
- 数字IC-1.2 用CMOS管构建逻辑门电路 及 逻辑化简方法(与、或、非、与非、或非)
- 播布客学习视频_C学习笔记_simple
- 电机matlab程序计算公式,MATLAB用于电机电磁计算的计算机编程
- [leetcode]179 Largest Number
- Spring JPA 随手记
- c# 容联云_Rest Server Demo_开发文档_容联云通讯
- 黑马程序员中的简单网页制作
- 氧化锌@聚丙烯腈(ZnO@PAN)静电纺丝纳米纤维膜材料|金属有机框架材料ZIF-8@聚丙烯腈(ZIF-8@PAN)纳米纤维膜材料
- 自学网络安全,一般人我劝你放弃吧!
- 网络多媒体素材加工【1】
- 使用TensorRT加速YOLOX目标检测算法
热门文章
- [solved]mac maven settings.xml
- Codeforces Round 700 (Div. 2) B题 英雄杀怪兽
- javascript常用到的东西(珍藏)
- Chris 评论 城堡岩 第一季(这篇剧评可能有剧透)
- 服务器的文件的快捷方式,ftp服务器怎么保存快捷方式
- GBase 8d 数据库ldapsearch命令讲解和示例分析
- 新买的阿里云ECS基本安全运维
- 基于Qt平台利用UDP协议传输大文件(百度网盘免费代码)
- 关于如何晾干你的衣服,洗衣机品牌比你更着急
- [小巩u3d] Stats窗口