游戏编程入门 by David Astle

        经常有人问我,没有编程经验的人该如何开始开发游戏。在此之前,我总是一个个的尽力回答。然而,后来提相同问题的人数增长到难以处理的地步。我决定,是时候把我所有的建议写成文章,作为一个大概。
这篇文章是针对那些想要开发自己游戏,但几乎没有编程经验的人。事实上,我假设读者没有任何编程经验。我主要讨论游戏开发的程序和设计方面,而不是艺术性。我也不准备讲述如何进入游戏行业(这方面已经有足够的资料),而只是让你逐步的开始开发自己的游戏。最后,我所指出的这条道路也并不能作为唯一的,或是最好的路径来学习开发游戏,但至少对我和一些人很有用。
选择一门语言
        你要做的第一件事就是选择一门开发语言。你有很多选择,包括Basic,Pascal,C,C++,Java,等等。也经常会有人争论对于初学者那一门语言是最好的。对于这一系列流行语言的讨论,你可以参看John Hattan的著作,What Language Do I Use?(我用什么语言?)
        我的建议是以C和C++开始。有些人会说这些语言对初学者来说太高级了,但因为我自己就是学C++,我并不同意这一说法。而且,C/C++是当今使用最广泛的语言(译者认为应该是汉语。。。),所以你可以找到大量学习资料和帮助。你先学C或C++都无所谓,因为只要学了一个,再学另外一个就很容易。但是,如果你先学C++,请保证在学习面向对象编程之前能理解和使用过程编程(等编程熟练再去学习类)。(译者:C是过程性语言,C++是面向对象语言)
        如果你开始学习C/C++,发现太难,那再学一个简单一点的也没关系,比如Basic或Pascal。但是我真的认为,如果你坚持努力,而且有好的资料,学C/C++应该没有太大问题。
你的下一个问题可能会是:“我该怎么学C/C++?”我很高兴你这样问。最好的办法是上课。有老师可以回答你的问题,帮助你产生很大进步,编程练习作业也可以保证你能用到所学的东西。
如果你不觉得上课是个好主意,那最好的办法就是买一些好书。不要花太多时间去选一本什么“超级宝典”或“万用全书”,因为你最终可能会买几本。我建议你去一家书店,然后拿几本比较入眼的C或C++书看,直到找到一本或几本你能看懂,并且可以拿来学习的。同时,你可能会想要一些更深入的,或者一些材料,但是你一旦对于这门语言有了一些了解,我相信你应该有自己更好的选择。
        在这里,我有必要花一些时间,来说我看到很多初学者所关心的一个事情,特别是年轻人:没有钱买书和其他东西。首先,有很多免费资源可以利用,图书馆,Macmillan Computer Publishing(www.mcp.com/personal),有成千上百的编程书籍。但是如果你真的想要成为一个好的程序员,还是应该投入一部分资金。应当想方设法(合法的)帮助你弄到一些钱。
网上也有很多C/C++的学习指南。但是我认为那只能作为补充而不是你自学的主要资源。
选择正确的编译器
        你写的程序,或者代码,是以文本方式储存的,你甚至可以用记事本写C/C++程序。但是总需要有东西把他们转换成为可执行文件。对于C和C++,那就是编译器。
可用的编译器有好多种,包括很多免费的。选择一款自己适合的编译器很重要,免费的编译器就有这样的好处,你可以把它们试个遍,然后从中选择自己最喜欢的。然而,免费编译器比起商业版,可能会缺失一些功能和大部分服务。幸运的是,多数商业版编译器也兼售介绍版或学习版,这要便宜得多,通常功能却不见得少,唯一的限制是你不能发布用它编译的程序(短时间内你也根本用不着)。
总之,选择编译器取决于你能花多少钱,用什么操作系统,和为什么平台开发。如果要为windows开发,我强烈推荐Microsoft Visual C++。他强大的开发环境使得很多事做起来更方便,毫无疑问没有其他编译器更适合开发windows应用程序。如果你是个学生,你还可以折价买到。(译者:爽!)如果你在DOS平台开发,你最好的选择可能是DJGPP,免费的哦~。
选择开发平台
        尽管最终你很可能为好几个平台开发,总要先选择一个来学。当你在学这门语言,还没有接触到图像的时候,你可能会想使用非图形用户界面的操作系统,比如DOS,Unix.这样可以避免接触高层,比如windows编程,让你集中精力学习语言本身。
        一旦你做好开发游戏的准备,那么,应该考虑是否改变平台,让我们来看看每个选项的特征。
windows:如果你想成为游戏行业的专家,或者如果你想让许多人来玩你开发的游戏,那么,这就是你要选择的平台。因为多数你的用户使用windows,而且现在我也看不出有什么改变的迹象。当今大多数的windows游戏都是由一种你可能听说过技术---DirectX---开发的。你可以DirextX这个库直接访问硬件,这意味着你可以开发高性能的游戏。

        DOS:DOS过去是占统治地位的游戏平台,但是已经一去不复返了。尽管可能有一些特殊爱好者还在为DOS开发游戏,现在没有一个为DOS开发的商业游戏,他也将继续衰落,直到微软不再支持。如果你只是想开发游戏,还是不要选择DOS,如果你非要这么做,也不要太久。记住:由于存在大量DOS游戏开发的书,可能还有人辩护从这些书中学习DOS游戏开发。但是,windows游戏开发的书越来越多,那些辩解也变得越来越无力。
Linux:Linux是Unix的一种,由于很多原因后来变得流行,包括稳定性,价格,和反微软情绪。尽管Linux用户还是相当少,但是围绕着他的热情和不断增长的市场潜力使其也成为不错的选择。
        Macintosh:MAC有大量忠实粉丝并不能说明什么,几乎每一个和我讨论的MAC狂热者都需要更多更好的游戏。我没有见过多少MAC游戏开发资源,但我相信还是有的,因此这也是一个选择。
consoles:console(就是PS,N64,DC等等)的游戏市场十分巨大,当然console游戏开发的前景也不错。然而以非商业的形式开发console游戏,出于各种原因,在现在似乎行不通。如果你开发console,很可能是在被商业游戏开发组雇用之后。
开始进入主题
        现在是时候讨论开发游戏了。简单起见,我假设你选择用C/C++在windows平台开发,可能你选择别的,但大多数我说的还是有用的。
        首先,甚至在你打算开始开发游戏之前,你必须很好掌握C和C++.你应该懂指针,数组,结构体,函数,可能还有类。如果你精通他们,就可以开始做游戏了。
        这篇文章可能不能教会你所有关于开发游戏的东西。幸运的是,也没有这个必要。这方面有很多书,网上也有很多指南。GameDev.net应该有所有你想要的东西,这里我建议你怎么开始:
        找一本或几本书。对于windows游戏开发初学者,Tricks of the Windows Game Programming Gurus是个完美的开始。除此之外,还有许多好书.读透这些书,试试所有的例子,不懂得部分多读几遍。
网上指南作为补充。除了弄清书上读到的,他们还涉及一些书上没有谈及的主题。
        向专家寻求帮助。如果你不能在书上或指南找到问题的答案,好好利用我们的论坛和聊天室。那里有好多专家愿意帮助别人。
        这并不是要你按照顺序执行的,而是可以同时并且不断的重复执行。
        光学习还是不够的,你必须运用你所学到的。从一个小游戏开始,然后在这个基础上前进。你可以看一下Geoff Howland's 的著作: How do I Make Games? A Path to Game Development.
开始,自己独立工作。不要急着加入团队,那样只会减缓学习过程。而且一旦你有了自己的几个游戏,你可以为团队做出更大的贡献。
        还有关于书,你应该不仅仅看游戏开发的书。为了能够开发出你看到商店出售的游戏,你应该钻研比大多数游戏开发书籍更高级的一些主题。有一些可以在网上找到,但你也应该选一些图形学,人工智能,网络,物理学等方面的书。计算机科学学位看来唾手可得,但因为你被迫上这些课的时候可能认为他们和游戏开发无关----你错了!
包装
这里有一些提示很有用
不要只积累知识,用它
你永远不会知道会理解一些东西知道你是用他们。用你学的东西作些演示。做作书上的练习。
多玩游戏
这样做会使你做出更好的游戏。而且可以减轻编程的枯燥。
帮助别人
能帮别人的地方尽量帮助别人,教别人的过程中自己会学到更多。
有始有终
不要有这样的想法:“我能够完成这个游戏了,但是我又有一个新的想法,那就直接做下一个。”你可以学得更多如果你完成他,你也可以用事实证明你不是只会空谈。所以,尽量不要做很大很复杂的游戏,直到你有了一定经验。
开始吧!你现在可以开始准备QUAKE4了。可能你不是不是很了解,但是至少应该知道如何开始这条道路,找多些资料,加上多年努力工作,他一定会实现!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如 果你会一点C、C++语言,你就可以学习游戏编程了,开发真正的游戏!如果你学过一点C++更好,没学过也没关系。本课程教你从零基础开始开发7个完整的 游戏:Brainiac、Light Cycles、Henway、Battle Office、Meteor Defense、Space Out、Stunt Jumper。教程无KEY wmv本,手机平板等移动设备均可观看! 第1部分 入门 第1章 学习开发游戏的基础知识 1.1 认识视频游戏 1.1.1 为什么人们如此沉迷于开发视频游戏 1.1.2 视频游戏的类型 1.2 学习游戏设计的要素 1.2.1 提出基本思想 1.2.2 整理剧情 1.2.3 可视化图形 1.2.4 为游戏选择正确的声音 1.2.5 使用控制器控制游戏 1.2.6 确定游戏模式 1.3 面向对象的编程游戏 1.3.1 理解OOP 1.3.2 在游戏中应用OOP 1.4 研究相关工具 1.4.1 编译器和开发环境 1.4.2 选择图形工具 1.4.3 选择声音和音乐工具 1.5 小结 1.6 亲身实践 第2章 创建游戏引擎 2.1 什么是游戏引擎 2.2 考虑游戏引擎的作用 2.2.1 将游戏分解为事件 2.2.2 建立游戏的计时机制 2.3 开发游戏引擎 2.3.1 游戏事件函数 2.3.2 GameEngine类 2.4 开发Blizzard示例 2.4.1 编写程序代码 2.4.2 测试完成的程序 2.5 小结 2.6 游戏大变身 第3章 学习绘制基本图形 3.1 图形基础 3.1.1 理解图形坐标系统 3.1.2 学习颜色的基础知识 3.2 查看Windows中的图形 3.2.1 使用设备环境 3.2.2 使用画笔写 3.2.3 使用画刷绘制 3.2.4 使用位图绘制图像 3.2.5 使用调色板管理颜色 3.3 绘制窗口 3.3.1 绘制文本 3.3.2 绘制图元 3.3.3 使用画笔和画刷 3.4 开发Crop Circles示例 3.4.1 编写程序代码 3.4.2 测试完成的程序 3.5 小结 3.6 亲身实践 第4章 绘制图形图像 4.1 位图图像的基础知识 4.2 深入学习位图 4.3 开发位图类 4.3.1 位图类的工作原理 4.3.2 整合代码 4.4 开发Slideshow示例 4.4.1 编写程序代码 4.4.2 汇集资源 4.4.3 测试完成的程序 4.5 小结 4.6 游戏大变身 第2部分 与游戏玩家交互 第5章 使用键盘和鼠标控制游戏 5.1 游戏与用户输入 5.2 了解用户输入设备 5.2.1 接受键盘输入 5.2.2 响应鼠标 5.2.3 使用游戏杆交互 5.3 评估游戏的键盘输入 5.4 跟踪鼠标 5.5 向游戏引擎添加输入支持 5.5.1 添加键盘支持 5.5.2 添加鼠标支持 5.5.3 修改Bitmap类 5.6 开发UFO示例 5.6.1 编写程序代码 5.6.2 测试完成的程序 5.7 小结 5.8 亲身实践 第6章 示例游戏:Brainiac 6.1 游戏的玩法 6.2 设计游戏 6.3 开发游戏 6.4 测试游戏 6.5 小结 6.6 游戏大变身 第7章 使用游戏杆改进输入 7.1 了解游戏杆的基础知识 7.2 校准游戏杆 7.3 追踪游戏杆的移动 7.4 向游戏引擎添加游戏杆支持 7.4.1 访问Win32多媒体功能 7.4.2 开发游戏杆代码 7.5 开发UFO 2示例 7.5.1 编写程序代码 7.5.2 测试完成的程序 7.6 小结 7.7 亲身实践 第8章 示例游戏:Light Cycles 8.1 游戏的玩法 8.2 设计游戏 8.3 开发游戏 8.4 测试游戏 8.5 小结 8.6 游戏大变身 第3部分 在游戏中使用子画面 第9章 使用于画面动画移动对象 9.1 理解动画的基础知识 9.1.1 动画和帧频 9.1.2 了解计算机动画 9.2 2D动画与3D动画 9.3 理解2D动画的类型 9.3.1 基于帧的动画 9.3.2 基于形状的动画 9.4 将子画面动画应用于游戏 9.5 设计通用的子画面 9.6 创建Sprite类 9.6.1 创建和破坏子画面 9.6.2 更新子画面 9.6.3 绘制子画面 9.7 开发Planets示例程序 9.7.1 编写程序代码 9.7.2 测试完成的程序 9.8 小结 9.9 亲身实践 第10章 管理子画面 10.1 了解管理子画面的需求 10.2 设计子画面管理器 10.3 向游戏引擎添加子画面管理器 10.3.1 改进Sprite类 10.3.2 增强游戏引擎 10.4 使用双重缓存消除闪烁 10.5 开发Planets 2示例 10.5.1 编写程序代码 10.5.2 测试完成的程序 10.6 小结 10.7 游戏大变身 第11章 示例游戏:Henway 11.1 游戏的玩法 11.2 设计游戏 11.3 开发游戏 11.4 测试游戏 11.5 小结 11.6 游戏大变身 第4部分 使用声音和音乐 第12章 播放数字声音效果 12.1 理解数字声音 12.2 了解Windows波形声音 12.3 了解声音工具 12.3.1 Sony Sound Forge 12.3.2 Adobe Audition 12.3.3 廉价的声音编辑器 12.4 创建和编辑声音 12.5 查找声音和音乐 12.6 访问波形声音 12.7 播放波形声音 12.7.1 播放文件中的波形声音 12.7.2 播放作为资源的波形声音 12.7.3 循环播放波形声音 12.7.4 停止播放波形声音 12.8 开发Brainiac 2示例程序 12.8.1 编写程序代码 12.8.2 组合资源 12.8.3 测试完成的游戏 12.9 小结 12.10 亲身实践 第13章 播放MIDI音乐 13.1 感受MIDI音乐 13.2 理解Windows媒体控制接口 13.3 使用MCI播放MIDI音乐 13.3.1 打开MIDI设备 13.3.2 播放MIDI歌曲 13.3.3 暂停MIDI歌曲 13.3.4 关闭MIDI设备 13.4 向游戏引擎添加MIDI音乐支持 13.5 开发Henway 2示例程序 13.5.1 编写程序代码 13.5.2 测试完成的游戏 13.6 小结 13.7 亲身实践 第14章 示例游戏:Battle Office 14.1 游戏的玩法 14.2 设计游戏 14.3 开发游戏 14.4 测试游戏 14.5 小结 14.6 亲身实践 第5部分 高级动画 第15章 实现子画面外观动画 15.1 再次介绍帧动画 15.2 设计动画子画面 15.3 向游戏引擎添加动画子画面支持 15.3.1 只绘制位图的一部分 15.3.2 对Sprite类实现动画 15.4 开发Battle Office 2示例程序 15.4.1 编写程序代码 15.4.2 测试完成的游戏 15.5 小结 15.6 游戏大变身 第16章 创建子画面背景 16.1 了解游戏背景的重要性 16.2 了解游戏背景的类型 16.2.1 纯色背景 16.2.2 图像背景 16.2.3 动画背景 16.2.4 滚动背景 16.3 向游戏引擎添加背景支持 16.3.1 创建基本的背景类 16.3.2 创建动画背景类 16.4 开发Roids示例 16.4.1 编写程序代码 16.4.2 测试完成的游戏 16.5 小结 16.6 亲身实践 第17章 示例游戏:Meteor Defense 17.1 游戏的玩法 17.2 设计游戏 17.3 增强游戏引擎中的子画面 17.4 开发游戏 17.5 测试游戏 17.6 小结 17.7 游戏大变身 第6部分 让游戏拥有大脑 第18章 教游戏思考 18.1 理解人工智能 18.2 了解游戏AI的类型 18.2.1 漫游AI 18.2.2 行为AI 18.2.3 策略AI 18.3 开发AI策略 18.4 开发Roids 2示例程序 18.4.1 编写程序代码 18.4.2 测试完成的程序 18.5 小结 18.6 亲身实践 第19章 示例游戏:Space Out 19.1 游戏的玩法 19.2 设计游戏 19.3 向游戏引擎中添加另一个子画面特性 19.4 开发游戏 19.5 测试游戏 19.6 小结 第7部分 增添游戏的趣味性 第20章 使用闪屏增添游戏的活力 20.1 闪屏的重要性 20.2 了解闪屏 20.3 创建Space Out 2游戏 20.3.1 编写游戏代码 20.3.2 测试完成的游戏 20.4 小结 20.5 亲身实践 第21章 使用演示模式展示游戏 21.1 什么是演示模式 21.2 演示模式的细节 21.3 开发Space Out 3游戏 21.3.1 编写游戏代码 21.3.2 测试完成的游戏 21.4 小结 21.5 游戏大变身 第22章 记录高分 22.1 记录得分的重要性 22.2 确定高分数据模型 22.3 存储和检索高分数据 22.4 开发Space Out 4游戏 22.4.1 编写游戏代码 22.4.2 测试完成的游戏 22.5 小结 22.6 亲身实践 第8部分 附加练习 第23章 使用滚动背景更改远景 23.1 什么是滚动背景 23.1.1 横向滚动的背景 23.1.2 纵向滚动的背景 23.1.3 视差滚动背景 23.2 理解滚动背景的工作原理 23.3 向游戏引擎添加滚动背景支持 23.3.1 创建背景图层类 23.3.2 创建滚动背景类 23.4 开发Wanderer示例 23.4.1 编写程序代码 23.4.2 测试完成的程序 23.5 小结 23.6 游戏人变身 第24章 示例游戏:Stunt Jumper 24.1 游戏的玩法 24.2 设计游戏 24.3 开发游戏 24.4 测试游戏 24.5 小结 24.6 游戏大变身 24.7 亲身实践
本书手把手教大家写写游戏,是一本非常不错的游戏入门教材,资源内有教材pdf格式的电子书,还有教材的光盘资料(必不可少),因为只允许上传50M以下的,所以就传了六个文件,这是第 4 部分 目录: 第1部分 入门 第1章 学习开发游戏的基础知识 第2章 创建游戏引擎 第3章 学习绘制基本图形 第4章 绘制图形图像 第2部分 与游戏玩家交互 第5章 使用键盘和鼠标控制游戏 第6章 示例游戏:Brainiac 第7章 使用游戏杆改进输入 第8章 示例游戏:Light Cycles 第3部分 在游戏中使用了画面 第9章 使用子画面动画移动对象 第10章 管理子画面 第11章 示例游戏:Henway 第4部分 使用声音和音乐 第12章 播放数字声音效果 第13章 播放MIDI音乐 第14章 示例游戏:Battle Office 第5部分 高级动画 第15章 实现了画面外观动画 第16章 创建子画面背景 第17章 示例游戏:Meteor Defense 第6部分 让游戏拥有大脑 第18章 教游戏思考 第19章 示例游戏:Space Out 第7部分 增添游戏的趣味性 第20章 使用闪屏增添游戏的活力 第21章 使用演示模式展示游戏 第22章 记录高分 第8部分 附加练习 第23章 使用滋动背景更改远景 第24章 示例游戏:Stunt Jumper 配套光盘上的附录 附录A 选择游戏开发工具 附录B C++编程入门 附录C Windows游戏编程入门 附录D 创建游戏图形 前言: 像Junkyard Wars和American Chopper这样的电视节目获得了极大的成功,在很大程度上是因为它们揭示了有趣的机器(例如潜水艇、破城槌以及摩托车等)构造背后的创造性过程。自从有了电视以来,教育性的电视节目就一直存在,但是直到最近,教育才进入了正统娱乐的领域。这些节目之所以获得成功,是因为它们展示了在头脑中产生一个想法并将它们转化为现实是多么有趣和具有挑战性。是的,它们是教育性的,但是更重要的是,它们很有趣。本书中有同样有挑战性的乐趣在等待着读者,你将学习如何构建自己的视频游戏。不,你不能轰鸣着引擎骑着自己的游戏在街道上飞速行驶,但是你可以与朋友和家人分享,炫耀自己新获得..
本书手把手教大家写写游戏,是一本非常不错的游戏入门教材,资源内有教材pdf格式的电子书,还有教材的光盘资料(必不可少),因为只允许上传50M以下的,所以就传了六个文件,这是第 2 部分 目录: 第1部分 入门 第1章 学习开发游戏的基础知识 第2章 创建游戏引擎 第3章 学习绘制基本图形 第4章 绘制图形图像 第2部分 与游戏玩家交互 第5章 使用键盘和鼠标控制游戏 第6章 示例游戏:Brainiac 第7章 使用游戏杆改进输入 第8章 示例游戏:Light Cycles 第3部分 在游戏中使用了画面 第9章 使用子画面动画移动对象 第10章 管理子画面 第11章 示例游戏:Henway 第4部分 使用声音和音乐 第12章 播放数字声音效果 第13章 播放MIDI音乐 第14章 示例游戏:Battle Office 第5部分 高级动画 第15章 实现了画面外观动画 第16章 创建子画面背景 第17章 示例游戏:Meteor Defense 第6部分 让游戏拥有大脑 第18章 教游戏思考 第19章 示例游戏:Space Out 第7部分 增添游戏的趣味性 第20章 使用闪屏增添游戏的活力 第21章 使用演示模式展示游戏 第22章 记录高分 第8部分 附加练习 第23章 使用滋动背景更改远景 第24章 示例游戏:Stunt Jumper 配套光盘上的附录 附录A 选择游戏开发工具 附录B C++编程入门 附录C Windows游戏编程入门 附录D 创建游戏图形 前言: 像Junkyard Wars和American Chopper这样的电视节目获得了极大的成功,在很大程度上是因为它们揭示了有趣的机器(例如潜水艇、破城槌以及摩托车等)构造背后的创造性过程。自从有了电视以来,教育性的电视节目就一直存在,但是直到最近,教育才进入了正统娱乐的领域。这些节目之所以获得成功,是因为它们展示了在头脑中产生一个想法并将它们转化为现实是多么有趣和具有挑战性。是的,它们是教育性的,但是更重要的是,它们很有趣。本书中有同样有挑战性的乐趣在等待着读者,你将学习如何构建自己的视频游戏。不,你不能轰鸣着引擎骑着自己的游戏在街道上飞速行驶,但是你可以与朋友和家人分享,炫耀自己新获得..

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值