游戏开发论坛

 找回密码
 立即注册
搜索
查看: 18434|回复: 9

新手编写游戏的建议和方法(游戏机)

[复制链接]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20356
QQ
发表于 2013-1-10 10:57:32 | 显示全部楼层 |阅读模式
作者:Tommy Refenes

  大约是5年前,看了麻省理工学院的一个教授在PBS特别谈话中讲述了AI技术,我就给这位教授写了一封邮件。我一股脑地把自己的想法全都写在那封邮件里了,比如AI的开发、如何编写识别环境的机器、机器如何通过经验培养感情等。我花了整整4个小时写邮件,因为我觉得跟这位教授的工作有共鸣。我心情振奋地写着那封邮件,因为我写的是自己兴趣深厚的东西,我想找人分享我的想法。当时我满怀希望,幻想着也许我会收到回复,从此有了分享兴趣的同道中人,可能因此走上制作先进机器AI的道路。悲哀的是,我的邮件如石沉大海……我甚至不知道她是否阅读了我的邮件。

programming-gamesfrom-gamasutra.jpg
programming games(from gamasutra)

  后来,因为独立制作游戏《电影大亨》和《超级肉食男孩》,我收到几封邮件询问我关于游戏的问题。大多数邮件是年轻的游戏粉丝写的,他们的问题从“我要学习什么语言”到“我要怎么做才能在Xbox上发布游戏”。我阅读了每一封邮件,虽然没有一一回复,因为这会占用我一整天的时间,何况这些问题大同小异。

  我为自己没有回复邮件感到难过,因为这些人只是想找人倾诉自己的想法,得到关于游戏开发的建议。他们的做法不正像当年我给麻省理工学院的教授写邮件一样吗?他们对我做的事情感兴趣,想知道我是怎么做到的,想参与到游戏开发中。好吧,我想帮助他们,但我没有时间、学识和兴趣当老师……所以我写了这篇文章。在此,我将回答如下关于游戏制作的问题。
game idea(from gamasutra)

我要从哪里开始我的游戏想法?

  从哪里开始?这是我遇到最多的一个问题。我觉得对许多人来说,万事开头难,因为他们没有意识到制作任何东西都是从无到有的,甚至是你看到的优秀AAA游戏也是从无到有制作成现在这个样子的。当你的游戏想法浮现在脑海中时,你就已经开始了制作游戏的第一步,从想象到执行的过程是非常艰难的。对于从来没有制做过游戏的人来说,像让角色移动这么简单的事也是一个几乎无法跨越的大障碍,他们因此感到沮丧,不得不放弃。其实他们本不必这么快就承认失败的,关键是第一步要迈得小一点。

  《超级食肉男孩》一开始只有一个四方形的主角食肉男孩。《Mew-Genics》一开始只有一个在屏幕上来加移动的黑色的方块。《粘粘球》一开始只有一群带笑脸的黑球。《Game 2》一开始只有一个向量图形作为主角。做游戏就像建造楼房,总是从最基本的地基开始往上建。

  一次只做一件事也非常重要。如果你每次都要求面面俱到,那么你极有可能会失望、受打击。如果你一次只执行一小步,那么你实现想法的可能性就会大很多了。

  将你的游戏分解成几个小部分,然后从更深刻的层面上分析和评估你的想法。这是必须的,因为你要随时准备调整,不能将自己逼上无法回头的死路。有时候,使游戏脱离原计划反而能产生最有趣的玩法。这样的开发方法更合理,因为你对游戏的思考更系统,你是在原有想法的基础上增加新的想法。

  所以,你应该努力将你的想法分解成更小的部分,这样你才能用目前掌握的技能轻易地完成每个小部分。另外,这么做也使你更容易看到进展,更有干劲,你可以轻易地返工和继续完成中断的部分。记住,没有时间规定你必须什么时候完成游戏(如果你给自己定了期限,那么你会过得很辛苦)。以你自己的速度学习和建设项目,就像你玩乐高积木一样,一次搭一块。

  再举一个更具体的例子,《超级食肉男孩》是怎么开始的。一开始,我做了一个四方形的主角食肉男孩,然后开始编写代码。首先我得让他能来回移动。他能移动后,我就这样玩了一阵子,然后开始下一步:当我按下按键时,他会跳起来。当他降落到平台上时,我得让他停下来。当他碰到墙时,我也得让他停下来。为了继续前进,我得让他粘在墙上。在我按下按键后,他还得会抵着墙往上跳。如果他遇到绿色方块,他就会死……就这样,直到完成最后一行游戏代码,《超级食肉男孩》也就诞生了。

  蚂蚁腿也是肉,虾米也是海鲜,再小的进步也比停滞不前来得好。最重要的是,在制作你的游戏的过程中,你必须始终保持干劲,不觉得泄气。

codefrom-gamasutra.jpg
programming language (from gamasutra)

我应该学习什么编程语言?

  这是我第二最常遇到的问题。说实话,我不喜欢这个问题,因为我回答不了。我总是用“学习让你觉得最舒服的语言”来回答这个问题。我想这个答案并不给力,因为我觉得提问的人要么想得到更确切的答案,要么就是他们刚入门,任何语言都不能让他们感到舒服。我打算详细地解释一下我的回答,也许有助于人们选择最适合自己的语言,或理解为什么使用他们感到舒服的语言是最理想的开头。

  如果你是咨询首先学习什么编程语言,那么你不必担心“Flash能在iOS上运行吗”或“Xbox运行Java吗”或“XNA能在Mac上运行吗”这类问题。在最开始,你能预见的结果就是实现游戏,而不是发行游戏或销售游戏。这些问题只有到了发布游戏时才很重要,但发布游戏比实现游戏容易多了。所以,发布的问题留着以后再考虑吧。

  找到适合你的语言然后开始写代码。一开始,立即获得满足感是非常关键的。你希望能够很快地做出能在屏幕上看到的东西,然后以此为基础进行下一步。你希望能够轻易地在这个东西上面编辑、制作和添加。这时,立即的满足感是保持动力的关键,毕竟你不想一边学习新语言一边制作你的游戏。如果你是一边学习新语言一边制作游戏,那么你有可能会花上好几周时间学习,而看不到任何成果,除了你刚刚学习到的但还不能运用到游戏上的知识。这会让你非常沮丧。

  利用你所知道的知识,或者尽量从最简单最让你感到舒服的方式学习开发你的游戏的技能。所以,如果你知道一点儿Flash,那就用Flash,如果你会用C++,那就用C++,如果你只会用Java,那就用Java。不存在所谓的“官方游戏开发语言”的东西,这一点你要永远记住。《Minecraft》是用Java写的,《超级食肉男孩》是用C++写的,《Farmville》是用Flash写的,有些游戏还用HTML 5,还有些游戏是用索引卡片做成的。最重要的就是:这些都不重要。找一个让你觉得舒服的语言制作游戏。
不要以为我是在打击你学习新语言和探索新领域的信心。如果你真的想从事游戏开发,一旦你迈出第一步,你就会想离开你的熟悉的领域,学习一些新的东西。你要有与时俱进的意识,同时打好基础。

  如果你确实不知道从什么语言开始,我建议你学习Flash、Game Maker和Unity等。这些软件都很容易做出能显示在屏幕上的东西,并且学习起来也不难。如果你没有任何编程语言的基础,又急于开始制作自己的游戏,那么你就不要从C++开始了。

studyingfrom-gamasutra.jpg
books(from gamasutra)

我应该看什么书或教程?

  我推荐两本书,但只适合C++开发,并且不是入门书。这两本书就是《Effective C++》和《More Effective C++》。如果你不懂C++,这两本书就太高端了,所以你不必觉得“我需要这两本书才能制作游戏”。

  除了这两本,我还没读过其他编程书。我的学习方法是阅读SDK文件资料。不太典型,但这就是我的学习方法。

  我强烈推荐学习网上教程。网上有许多程序样本和教程如NeHe等。我没有要推荐的教程,主要是因为我没有看过任何教程,但我确实知道这些资源在网上是很丰富的。我敢说,你Google一下就能找到你要的东西。

  我强烈不建议在做你自己的游戏时复制粘贴教程上的东西。这样你是学不到任何知识的,你只是在抄袭。这就是开放源代码程序的麻烦。教程可以用来阅读、学习和参考,但不是照搬照抄。复制粘贴源代码不会让你成为一名优秀高效的程序员,除非你已经完全理解自己复制粘贴过来的代码。不要自欺欺人了,花些时间理解代码,然后再运用。

game-laboratoryfrom-gamasutra.jpg
game laboratory(from gamasutra)

我要用什么软件制作游戏?

  我觉得问这个问题的人是希望别人告诉他有什么神奇的工具帮他制作游戏。真相是,能帮你制作引擎这类东西的工具确实存在。但如果你不想为了制作游戏引擎而学习编程语言的话,那就考虑Unity或UDK之类的软件吧。这些软件会大大减轻你制作游戏的压力。但这么做也有弊端:你会受到这些软件系统的限制。这些工具有很多强大的功能,且性能稳定,但并不是你想要什么它们就能做出什么。

  我个人不喜欢受到限制,更喜欢深入游戏开发的过程,所以我总是避免使用这些工具,多年来一直从代码开始做游戏。我不是说Unity做不出像《超级食肉男孩》这样的游戏。一定程度上还是可以的。但因为受到限制,它可能做不出一模一样的游戏,可能控制不了游戏,可能画面上有差别。游戏的精华还在,但其他部分可能不在了。这取决于你的做法。还是那句话,使用让你感到舒服的方式做游戏。UDK和Unity可以做出好游戏,但好游戏不一定要用UDK和Unity制作。

  开发游戏时,我使用Visual Studio, 但我也同样擅长使用Eclipse、Code Warrior、XCode、Notepad和编译器。就像选择一种编程语言,其实你使用什么软件并不重要。我习惯使用Visual Studio,但我并不使用它强大的函数功能,我只是用它组织、编译和调试我的源代码文件。很多编辑器都有这些功能。

  到于美术和设计,Ed(我的合作者)使用的是Flash。我曾用Flash写过一个动画导出工具,因为对他来说,Flash比编写工具容易多了。再者,Ed最擅长的就是Flash。编写那个工具意味着学习JSFL和使用Flash工作,但在制作《超级食肉男孩》时,这种办法对我们两人来说是最有效的。你不需要使用我的动画导出工具来制作你的游戏。总有一天我会将这些工具交给开发者们,但不会让大家等太久的。

stay-motivatedfrom-gamasutra.jpg
stay motivated(from gamasutra)

如何保持动力?

  保持动力没有秘诀,并且我也提不出让你保持积极性的建议。我自己没有特殊的技巧或心态,也没有罗列任务表的习惯或类似的东西。为了让我自己保持动力,我必须信任并享受自己的工作。如果我不喜欢自己的项目,那我可能就无法完成它了。

  很早以前我开始制作一款叫作《粘粘球》的游戏,我做了两年,然后就没有然后了。那款游戏不是我想出来的,我个人并不想做,因此,我始终做不出自己想要的效果。后来我放弃它,开始做《超级肉食男孩》。

  制作《粘粘球》的时间没有白废,因为我从中积累了许多开发经验。那款游戏之所以完不成是因为我对它不感兴趣。这个项目唯一让我兴奋的部分是,多线程物理引擎,因为我花了几乎所有的时间制作它。制作那款游戏对我来说意义重大,它让我意识到喜爱自己所做的游戏就能更容易完成它。这就是动力来源。

  当你对自己正在做的游戏有信心有热情时,不要说失去动力,要阻止你都难。你会迷上它,想不断完善它,渴望看到它最终的样子。就这样,从开始到结束的整个过程,你都觉得积极向上。你可能还会花更多时间修饰它,增加你觉得会使之锦上添花的特点,把它当成自己的心血。

Steamfrom-gamasutra.jpg
Steam(from gamasutra)

我要怎么做才能在Steam/Xbox/PS3/WiiU上发布游戏?

  对于任何刚开始做游戏或正在做第一款游戏的人,这个问题真不该问。你的目标应该是“我要做一款好游戏”,而不是“我要在XBLA上发布游戏。”让你的游戏登录以上任何一个平台的方法是公开的。你不需要写秘密邮件,你不需要填写表格,你不需要有一个业内的表哥,就算有,他也不可能帮你组织一个发布会。

  这些平台的审批是非常简单的:只要你拿出好游戏。仅此而已。然而这个残酷的真相却有人不相信。我曾见过有人因为自己的游戏没有通过Steam/XBLA的审批,就各种抱怨,但就是不从自己的游戏上找原因。好游戏自然会受到关注,平台所有者会根据自己的标准认真地考虑它。你能做的就是,多宣传你的游戏,保持对游戏的热情,如果你的游戏够好,其他人也会被你的热情所感染。

  如果你的游戏不够好,你会很难帮它找到推广平台。专注于制作好游戏,不要因为选择什么平台而分心。好游戏就像金子,放到哪里都能发光,并不需要依赖平台的暴光。

failurefrom-gamasutra.jpg
failure(from gamasutra)

如果我做完游戏,却没有人喜欢它,怎么办?

  如果你努力了,并且认为你的游戏是迄今为止最让你满意的作品,虽然得不到平台推广,但也不要认为你失败了,于是就放弃自己的游戏梦。极少人第一次做游戏就获得成功。《超级肉食男孩》是我第一次制作完成的游戏,但在它之前,我做过许多失败的半成品。

  我同索尼差一点就签定合约了,但最后一刻(准确地说是签最后一份文件的前两天)管理层变动使我之前提到的那款游戏《粘粘球》被取消了,于是我再也没有收到索尼的消息。那款游戏并不好,即使与索尼签约,它也有可能完成不了,即使完成了也非常可能是失败的游戏。它让我受伤,让我痛苦,但没有打败我。

  不要让那种挫折扼杀你的游戏梦。人们可能会觉得你的娃真丑,但毕竟是自己的骨肉。继续做游戏。化失败为动力。只要你克服了挫折,总有一天会实现你的梦想。

successfrom-gamasutra.jpg
success(from gamasutra)

总结

  你有什么就用什么做游戏,从小处开始做游戏,做游戏之外的其他事以后再考虑。选择什么编程语言和软件与制作游戏关系不大,用得顺手舒服就好;或者在刚开始做游戏时学习一些不太费力的技能。有进步才有动力,不要灰心丧气。爱游戏,恋游戏,直到你无法停止做游戏。

翻译来自:游戏邦

1

主题

18

帖子

4834

积分

论坛元老

Rank: 8Rank: 8

积分
4834
发表于 2013-1-14 10:14:30 | 显示全部楼层
不错的文章!!新手值得一读。

5

主题

92

帖子

685

积分

高级会员

Rank: 4

积分
685
发表于 2013-1-18 11:21:23 | 显示全部楼层
转走了`

6

主题

47

帖子

86

积分

注册会员

Rank: 2

积分
86
QQ
发表于 2013-1-24 23:32:21 | 显示全部楼层
太多了,看了一部分。。

0

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2013-3-31 01:15:01 | 显示全部楼层
很赞,那部电影我看过。此文的作者看来是《Super Meat Boy》的作者Tommy Refenes.

5

主题

80

帖子

855

积分

高级会员

Rank: 4

积分
855
发表于 2013-4-11 17:37:51 | 显示全部楼层
谢谢,分享。。收下。。

0

主题

1

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2013-9-21 13:00:36 | 显示全部楼层
不错  很受启发

13

主题

36

帖子

301

积分

中级会员

Rank: 3Rank: 3

积分
301
发表于 2013-9-22 07:43:29 | 显示全部楼层
本帖最后由 书径尘 于 2013-9-22 07:55 编辑

读完,受益不少.

8

主题

38

帖子

90

积分

注册会员

Rank: 2

积分
90
QQ
发表于 2013-11-13 01:44:14 | 显示全部楼层
好文章啊  有启发

0

主题

2

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2015-2-4 13:12:42 | 显示全部楼层
      此刻我正在从页游开发转移到手游unity开发,我坚持认为对unity的入门非常容易,也很容易开发出一款3d游戏,但同时,会很可能使我患上依赖症。于是我决定重新去学习底层的图形渲染引擎、3D图形处理等知识,使用C++语言,基于DirectX来学习并制作我自己的游戏引擎。
     阅读此文,确实收获良多,犹豫醍醐灌顶,更加明确了一件事,我现在做的事情是对的。之前做的是即时格斗页游,进行了各种游戏优化,其中就有Tommy Refense说过的多线程物理引擎,呵呵,看到此处,感觉就像找到了知己,原来我做过的事情,也有其他牛逼的程序员也采用过。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-25 23:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表