初级游戏开发指南

独立游戏开发的 6 个步骤 做适合你的游戏的事情,但要小心,不要被你所制作的游戏实际上不必要的功能所诱惑。你不仅制作了它,而且完成了它。你已经比大多数想要进入游戏开发领域的人走得更远,并且你获得的经验将继续使你开始的每个新项目都比之前的项目更容易。如果你有一个平台游戏,你所能做的就是移动和跳跃,那么你游戏的乐趣就直接与你的移动和跳跃机制的感觉息息相关。要想成为一名更优秀的游戏制作者,你能做的最有价值的事情就是完成你的游戏。制作你的第一款完整独立游戏还有最后一步,我认为这是最重要的一步:实现完整的游戏循环,包括获胜、失败和重新开始。 阅读详情

作者:Dave Astle
译者:Room3rd@hotmail.com

1. 作者简介
  从1984年开始,Dave Astle就做着游戏开发工作。日间,他是ROI System,Inc的一名软件工程师,夜间,引领Myopic Rhino游戏开发小组。只要有时间,他就会帮助GameDev.net成为最好的游戏开发资源网站。当然,他也需要偶尔的休息。
2. 译者序
3. 正文
  很多刚接触开发或没什么编程经验的人经常会问:我该如何开始游戏编程。即便直到现在,我也只是帮助回答我所知道一个又一个的基本问题。然而,最近这种类似问题太多了,多的有些难以接受了,所以,我决定还是把所有建议写下来,分享给大家吧。
  本文试图帮助那些想实现自己的游戏,但又没什么编程经验的人。事实上,在这里我将假定您根本不懂编程,我主要针对游戏开发的编程与设计进行阐述,而不会涉及设计艺术。我也不大算对这个行业展开长篇赘论(毕竟到处可以找到大量的资源),但我将指出在制作你自己的游戏时需要注意的某些事情。最后,这里展示的途径不是唯一的——也不一定是最好的 ——只是指出了该怎样制作游戏的学习途径,但对我和另外一些人来说,它已经足够好了。

  选择一门语言

  首先,你应该选择一门编程语言,可能会有很多选择:Basic,Pascal,C,C++,Java等等,并且还会有许多许多争论:对于一个新手来说,到底应该(最好)使用哪种语言呢?对于若干流行语言的讨论,可以看John Hattan的精彩文章“What Language Do I Use?”(http://www.gamedev.net/reference/design/features/whatlang)。
我会建议使用C/C++,可能有人会说“对于新手来说太深奥了吧”,起码我就是从C++开始的,所以对大家也应该没有问题。另外,C/C++应用很广泛,所以你可以找到大量的资源及帮助。先学C还是C++并不关键,毕竟只要学了一门,另一门也会触类旁通。然而,如果你决定先学习C++的话,还是应该在学习面向对象编程前首先要了解并掌握面向过程的开发。(也就是说,学习使用类前,你完全可以不用它们而很好进行开发)
  如果采用C/C++的话,可能发觉深入会越发的困难,当然,重新开始再选择学习一门更为简单的语言,如Basic或者Pascal,也未尝不可,但我还是要告诉你,只要坚持下去,找到所需的资源,逐步深入,C/C++开发也会越来越得心应手。
  接着你应该会问“那我该如何学习C/C++呢?”,很高兴你会这么问。最好的办法是上一个培训班(课),有老师或助教回答你的问题,能使你迅速提高,而留下的作业也会确认你是否真的掌握了你所学的知识点。(译者注:呵呵,在国内很难碰到这么好的教师吧)
  如果上培训班对你来说不现实的话,那最好的办法就是找一些好的书籍。不要过于专注“精通”之类的书籍,否则,最后你可能会买上一大摞。我的建议是到最近的图书市场,在那里花些时间来浏览那些关于C/C++介绍(入门)的书籍,直到你确定你能读懂并能从那本书学到一些东西。然后,等你需要一些高级编程的书籍,或者是一本参考时,由于你对于这门语言有了些许了解,那时你就会知道你更需要什么。我们的“books section”中给了一些建议,地址为:http://www.gamedev.net/columns/books/。
  在此,我还想费些口舌来提醒众多的编程新手,尤其是那些年轻人:没有钱买书或者干其他的事情。首先,你可以找到很多编程资源,其中包括本地库文件,还有Macmillan Computer出版物,通过http://www.mcp.com/personal可以找到成千上百的编程书籍。但是,其次,如果你真的想成为一名出色的程序员,有时脑筋不得不转个弯儿,使用任何东西(合法的;<)都意味着你不得不数数口袋里的钞票然后掏出来。
  通过Web完全可以找到大量的C/C++学习指南,但我觉得这些指南最好作为你学习书籍的补充,而不是作为单独的资源使用。

  选择合适的编译器

  你写的程序或者说是源代码,被存储为文本文件,你完全可以使用Notepad来写一个C/C++程序,但你还是需要“某些东西”来把源代码转化成可执行文件。在C/C++中,这个“某些东西”指的就是编译器。
编译器有很多,有些还是免费的,选择一个适合你的很重要,免费的更方便你去尝试,并选择一个你觉得最好的。然而,免费也通常意味着功能不全或者支持不够。幸运的是,大多数商业编译器也有入门及学术版本(introductory or academic versions),这样你就会花更少的钱而获得全部功能,唯一的限制是:你不能把用它编译的程序发布出去(毕竟在某段时间你不会发布……)。
  最后,你选择的编译器应该取决于你的花费及开发所处于的操作系统或平台。如果打算在Windows下开发,强烈建议使用Microsoft Visual C++,它拥有一个强大的开发环境,使得开发变得更容易,并且毫无疑问开发Windows应用程序也没有其他更适合的编译器。(译者注:应该是针对C++而言,不过使用BC或者其他编译器的肯定不同意,但我也推荐使用VC,因为开发资料确实很多,虽然我也不太会:))如果你是学生,那太好了,你会以不错的折价得到一个拷贝,如果在DOS下编程,最好赌注DJGPP(http://www.delorie.com/djgpp),它是免费的。(译者注:的确真的确实非常好奇地问“DOS下开发的人还有么?”)

  目标平台

  尽管你最终可能发布到若干不同平台下,但你还是需要一种来重点学习。一旦学习一门语言,在进入开发前(包括图形开发),你可能需要使用一个非GUI的操作系统,如DOS或者UNIX,这会避免一些前置问题(the overhead involved with),例如,Windows编程中,你就可以仅专注于语言的学习,(而不用担心界面部分)。
  一旦你准备好开始游戏编程了,你还是应该确定你的目标平台。还是让我们看看更多的(需要注意的)重要环节吧:
  Windows:如果你想在游戏行业中做的很专业,或者更多的人能玩你的游戏,那就选择Windows吧。重要的是你的用户在使用Windows — 至少现在看来是这样的。Windows大量主流游戏使用了一种开发技术 — DirectX,你可能听到过。DirectX是一个开发库,可以使你直接访问硬件层,也就意味着你可以开发高性能的游戏。
  DOS:DOS曾经是主流的游戏开发平台,但那些日子已经一去不复返了。尽管还有一些嗜好者仍在开发DOS游戏,但不再有商业游戏开发了,毕竟Microsoft不再给予更多的支持了。如果你刚开始做游戏,不要选择DOS,否则,不要执着于此。注意:由于还是有些DOS游戏编程的书籍,需要注意学习的话,可能会跟实际有所不同了。现在Windows游戏开发的书籍越来越多,这方面的争论也会越来越少。
  Linux:Linux作为一种UNIX变体,基于某些原因,近来变得很流行,这些因素包括稳定性、价格还有反Microsoft情绪在内。尽管Linux的用户数还相对较少,但由于对它的极度热衷和潜在市场的增长,使得可以作为目标平台的另一种选择。
  Macintosh:Mac有着大量的不容忽视的热衷者,而且我所了解得每个热衷者都极度渴望Macintosh下能有更多更好的游戏。虽然我没有看到过在Mac下开发的资源,但我还是确信肯定在某处存在着,因此这也是一种有理由选择的平台。
  控制器(Consoles):控制器(也就是PS、N64、DC等等)游戏市场是巨大的,开发控制器游戏当然有前途,但是,非商业开发有很多因素使得有很大的不确定性。如果你在开发控制器游戏,可能是正在被一个商业游戏工作室所雇用吧。

  备足原料(On to good stuff)

  现在可以开始讨论实际的游戏开发了,简单起见,我将假定你已经选择了C/C++语言并在Windows下开发,但我所说的对其他条件同样适用。
  首先,开发游戏前,你应该熟练掌握C/C++。你需要了解指针、数组、结构、函数,可能还有类,应该是很精通了。如果这样的话,那你就已经准备好了。
本文不可能教会游戏开发中的所有事情,幸运的是,也没有必要,Web上完全可以找到大量的相关书籍及指南。GameDev.net应该有你所需要的。下面就是我的一些建议:
  一本或更多的书籍。Windows中,开始开发游戏的话,“Windows游戏开发诀窍”(http://www.amazon.com/exec/obidos/ASIN/0672313618/gamedev)很适合你看。另外Books section也会找到其他一些书籍。通读整本书,尝试所有的范例,然后重新阅读你不能理解的部分。
  以在线指南作补充。除了阐明你所读过的知识外,他们同样包含书中没有的知识点(主题)。
  问专家。书中或指南中都找不到答案的话,那就充分利用留言板和聊天室(译者注:感觉国内的聊天室没有太好的氛围,还是找些BBS或者论坛问吧),会有很多人愿意帮你解决的。
  实际中,不应该是一个固定不变的过程,而应该是一个相似过程的不断重复。
  仅仅学习是不够的,还需要把学到的东西应用,首先开始一个简单的游戏,然后逐步发展。可以看看Geoff Howland的文章:“我是怎样开发游戏的?一条游戏开发的途径”(http://www.gamedev.net/reference/design/features/makegames)。
  起初,还是打算自己干吧,不要急于加入一个开发组,因为那只会让你的学习过程变得缓慢。一旦你自行完成了数个游戏,那对于一个开发组来说你也会起到更大的作用。
关于书籍我还是愿意多说两句:除游戏开发的书籍外,你需要阅读更多的书籍。为了能创建各式各样的游戏 — 如售货架上的那些 — 你将不得不钻研那些更高级的主题。有些你是可以在指南中找到的,但还是会需要更多的书籍:图形、人工智能、网络、物理等等。所以你需要上这些培训(课) — 虽然你觉得这些对于游戏编程没有用 — 这简直够的上一个计算机科学专业的学位。

  总结(Wrapping up)

  这里还有些重要的提示:
  不要仅仅积累知识,去应用。你绝对不会真正懂得或者理解一个事物,除非你使用它。用自己所学,实现些小的demo程序吧。可以做一下书中每章节后的练习题。
  玩大量的游戏。这样做可以给你些启发,帮你实现更好游戏,同样也给你很好的理念(a welcome relief from programming)。
  帮助他人。通过帮助他人解决问题,你也会了解这个知识点,并学会更多东西。
  完成你所开始的。不要陷入到你的思维陷阱中:“我知道我可以完成这个游戏,但我有了更好的主意,我要实现这个更好的(而不是原来的)。”如果坚持完成你所开始的,你会懂得更多东西,而且你拥有了一个事物可以证明你并不是夸夸其谈。要想实现简单些的话,就不要在更多经验前尝试实际上很大、很复杂的游戏。
  开始吧!现在你肯定陶醉于制作Quake 4中,好的,虽然不见得如此,但至少你能沿着这条路走下去,并找到更多的信息,夜以继日的辛勤工作后,必定有收获。

directx游戏开发终极指南 directx游戏编程教程 很多游戏引擎最后都是要调用Directx和Opengl。也就是说游戏引擎只是对Directx等底层API的一种包装,方便使用,当然也提供了很多游戏编程里可能会用到的强大功能。 写游戏基本上是不得不使用引擎的,因为你没有必要从头造轮子,除非你打算显示一个图片就要手打上百行代码,或者只是做一个超简单的游戏做练习。 如果你会dx 懂底层再学习游戏引擎会更容易理解它的原理 用着更顺手,甚至自己写一个小引擎... 阅读详情

相关推荐

Unity游戏开发客户端面经——算法(初级)

Unity游戏开发客户端面经之算法篇

Sea3752的博客 1万+

NLL loss(负对数似然损失)

损失函数

Drug discovery 1万+

Unity游戏开发客户端面经——热更新(初级)

Unity游戏开发客户端面经 之 热更新 篇

Sea3752的博客 1万+

深度学习方法——NLLloss简单概括

简单概括一下NLLloss都干了些什么,侧重于概念的总结,不对参数做过多说明。

时生的博客 1万+

uCOS中的消息邮箱(:task与task之间传递一个数据(数据缓冲区))

程序需求,需要完成task与task之间  字符数组的数据传输 比如:在ucos中,串口2接收的字符数组是不定时的&不定长的;只有当接收到数据的时候_才将数据赋值给新数组 具体的程序示意如下: 图1:消息邮箱测试中的     向消息邮箱发送消息(OSMboxPost(Str_Box,(void*)rec);//发送消息--(向 消息邮箱_msg_key发送消息) ),实际项目需求的

faguoduifangui的博客 4540

Multisim仿真电路:(十二)MOS管缓启动电路设计与优化

本文详细介绍了基于Multisim的MOS管缓启动电路设计与优化方法。通过分析米勒平台效应,探讨RC参数选择、多级设计和有源电路等技巧,有效抑制冲击电流并优化开关损耗。文章结合仿真实例,提供实用的设计策略和实际应用注意事项,帮助工程师提升电源管理系统的可靠性。

pytorch8learner的博客 237

深度学习关于NLLLoss损失的数学向个人详解

就得减小,根据其图像可知,随着其减小,softmax(x)的值必然增大。由于网络在这个过程中输出的其实就是加了softmax激活函数的softmax(x),就能理解为,训练网络降低NLLLoss的过程中,网络计算出的样本属于其类的概率值越趋近于1。"" 然后就是对softmax的结果取对数,做log运算,再接着就是假设标签是[0, 1, 2],第一行取第0个元素,第二行取第1个,第三行取第2个,去掉负号,即[0.3168, 3.3093, 0.4701], 求平均值,就可以得到损失值。

Axh1ne的博客 2956

无源定位之时差估计的精确时差估计算法(ETDE)及MATLAB实现程序

时差估计算法之精确时差估计(ETDE)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想

伊谢尔伦的林中小路 4254

【损失函数】(三) NLLLoss原理 & pytorch代码解析

接下来应该要介绍分类任务里最常用的CrossEntropyLoss,但是CrossEntropyLoss里面用到了NLLLoss,所以我们先了解NLLLoss是什么。NLLLoss全名叫做Negative Log Likelihood Loss,顾名思义,输入就是log likelihood,对输入的对应部分取负号就是这个loss的输出了,公式可以表示为:其中是每个类别的权重,默认的全为1,表示对应target那一类的概率。更简单一点来说,就是将对应类别的x输出取负值。

Lizhi_Tech的博客 1万+

使用Docker搭建MaxKB智能体平台

【代码】使用Docker搭建MaxKB智能体平台。

janthinasnail的博客 708

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 360

【深度学习】(3)--损失函数

本篇介绍了部分损失函数: 1. L1Loss损失函数:通常用于回归任务中。 2. NLLLoss损失函数:在多分类问题中广泛应用。 3. MSELoss损失函数:在多种回归任务中表现出色。 4. BCELoss损失函数:广泛应用于各类二分类任务中。 5. CrossEntropyLoss交叉熵损失函数:广泛应用于多分类问题中。

m0_74896766的博客 5722

matplotlib三维画图之观察博弈论混合策略下纳什均衡点

参考链接: 博弈论入门20讲之第16讲-猜谜游戏-散户如何赢庄家 游戏背景: 我的期望是: 你的期望是: 使用Python的matplotlib画图: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.linspace(0, 1, 100) Y = np.linspace(0, 1,

敲代码的小风 1257

AndEngine游戏开发指南-初级篇

学习andengine游戏开发一个多月了,现在花了两天时间整理了一个学习文档AndEngine游戏开发指南-初级篇   需要的,发邮件到879081656@qq.com      

喧嚣求静 231

【ROS机器人系统】自主导航+YOLO目标检测+语音播报

完成自主导航功能,并在小车移动至指定地点的过程中,通过机器人的摄像头检测导航途中所见物体,识别出物体的种类(框选出不同物体并标注识别结果),结合科大讯飞语音合成模块对识别结果进行语音播报。..............................

南京大学软件工程硕士在读 2万+

Android12 适配 usb 触屏

在 Android 系统中,输入设备 IDC(Input Device Configuration)设备描述文件(.idc)是用于配置和定义输入设备行为和属性的文本文件。 该文件通常在`/system/usr/idc/` 或 `/vendor/usr/idc/`,具体位置因芯片厂商SDK而异。一般情况此类文件是预置到系统,开发者 root 权限才能修改这些文件。输入设备 IDC 设备描述文件在 Android 系统中起到了识别、配置、映射和定制输入设备的作用,使得系统能够准确解析和处理各种输入设备的事件,提

weixin_35723192的博客 1229

在Eclipse中使用JUnit4进行单元测试(初级篇、中级篇、高级篇)

本文转载自以下 初级篇: http://blog.youkuaiyun.com/andycpp/article/details/1327147 中级篇: http://blog.youkuaiyun.com/andycpp/article/details/1327346 高级篇: http://blog.youkuaiyun.com/andycpp/article/details/1329218 转载于:https...

weixin_30488313的博客 118

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

wp7游戏开发教程

wp7游戏开发教程 http://www.devdiv.com/forum.php?mod=viewthread&tid=74873&fromuid=31126 推荐一下我的WP7游戏开发系列 http://blog.youkuaiyun.com/BEYONDMA/archive/2011/04/09/6311485.aspx http://blog.youkuaiyun.com/BEYONDMA/a

silvanking的专栏 563

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android 应用开发推荐书单

本文由 伯乐在线 - zerob13 翻译自 fromdev。欢迎加入Android小组。转载请参见文章末尾处的要求。 Android 已经成为了世界上最受欢迎的操作系统之一。成千上万的智能手机和平板都是运行着Android。Android基于Linux系统架构,由Android 公司开发。2005年该公司被 Google收购。Android最棒的是,它是一个允许用户根据需求进行定制的...

weixin_30244681的博客 187

2018网易的初级游戏开发工程师的面经

2018网易的初级游戏开发工程师的面经 自我介绍: 先是自我介绍, 简单介绍了一下自己的项目经历, 会什么技术(自己认怂, 说了非科班出身, 技术不咋地); 然后问我, 有看那些计算机相关的书籍; 自己却只回答了一本书, 简直是失败呀; 好的自我介绍是一个好的面试的开始, 所以自我介绍一定要有底气, 不管是大厂还是小公司都要自信, 这点很重要; 然后是问我多态的具体实现; 没有把...

angbao4913的博客 342

初级程序员入门指南

在数字化浪潮中,编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言,明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。

weixin_52755040的博客 1486

好的程序员应该熟悉的几门编程语言

如果想成为一个好的程序员,甚至架构师、技术总监等,显然只精通一种编程语言是不够的,还应该在常见领域学会几门编程语言,正如我们要成为高级人才不仅要会中文还要会英文,甚至还要会德文、俄文一样,其实是每一种语言都给人另一种思维方式,编程语言也一样。下面列出了几类编程语言,每类都列出了几种常见的编程语言,不需要每种编程语言都熟悉,掌握三两种,其他的每一类熟悉一种即可,语言掌握多了思考问题的思路和方法也就...

移动开发记录 475
上一篇: .Net线程学习手记(2)—关于线程池的想法
下一篇: VC中查找窗体的OnKeyDown事件的过程
dtdn
博客等级 码龄26年 8粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值