怎样制作游戏——初级游戏研发指南
怎样制作游戏?这个问题一直以来困扰我们很久,那么究竟游戏是如何制作的?我们要怎样制作游戏呢?
首先,你应该选择一门编程语言,可能会有非常多选择:Basic,Pascal,C,C++,Java等等,并且还会有许多许多争论:对于一个新手来说,到底应该(最佳)使用哪种语言呢?对于若干流行语言的讨论,能看John Hattan的出色文章“What Language Do I Use?”。
我会建议使用C/C++,可能有人会说“对于新手来说太深奥了吧”,起码我就是从C++开始的,所以对大家也应该没有问题。另外,C/C++应用非常广泛,所以你能找到大量的资源及帮助。先学C还是C++并不关键,毕竟只要学了一门,另一门也会触类旁通。然而,如果你决定先学习C++的话,还是应该在学习面向对象编程前首先要了解并掌控面向过程的研发。(也就是说,学习使用类前,你完万能不用他们而非常好进行研发)
如果采用C/C++的话,可能发觉深入会越发的困难,当然,重新开始再选择学习一门更为简单的语言,如Basic或Pascal,也未尝不可,但我还是要告诉你,只要坚持下去,找到所需的资源,逐步深入,C/C++研发也会越来越得心应手。
接着你应该会问“那我该怎么学习C/C++呢?”,非常高兴你会这么问。最佳的办法是上一个培训班(课),有老师或助教回答你的问题,能使你迅速提高,而留下的作业也会确认你是否真的掌控了你所学的知识点。(译者注:呵呵,在国内非常难碰到这么好的教师吧)
如果上培训班对你来说不现实的话,那最佳的办法就是找一些好的书籍。不要过于专注“精通”之类的书籍,否则,最后你可能会买上一大摞。我的建议是到最近的图书市场,在那里花些时间来浏览那些关于C/C++介绍(入门)的书籍,直到你确定你能读懂并能从那本书学到一些东西。然后,等你需要一些高级编程的书籍,或是一本参考时,由于你对于这门语言有了些许了解,那时你就会知道你更需要什么。
在此,我还想费些口舌来提醒众多的编程新手,尤其是那些年轻人:没有钱买书或干其他的事情。首先,你能找到非常多编程资源。不过,其次,如果你真的想成为一名出色的程式员,有时脑筋不得不转个弯儿,使用所有东西(合法的;<)都意味着你不得不数数口袋里的钞票然后掏出来。
通过Web完万能找到大量的C/C++学习指南,但我觉得这些指南最佳作为你学习书籍的补充,而不是作为独立的资源使用。
选择合适的编译器
你写的程式或说是原始码,被存储为文本文件,你完万能使用Notepad来写一个C/C++程式,但你还是需要“某些东西”来把原始码转化成可执行文件。在C/C++中,这个“某些东西”指的就是编译器。
编译器有非常多,有些还是免费的,选择一个适合你的非常重要,免费的更方便你去尝试,并选择一个你觉得最佳的。然而,免费也通常意味着功能不全或支持不够。幸运的是,大多数商业编译器也有入门及学术版本,这样你就会花更少的钱而获得全部功能,唯一的限制是:你不能把用他编译的程式发布出去。毕竟在某段时间你不会发布…。
最后,你选择的编译器应该取决于你的花费及研发所处于的操作系统或平台。如果打算在视窗系统下研发,强烈建议使用Microsoft Visual C++,他拥有一个强大的研发环境,使得研发变得更容易,并且毫无疑问研发视窗系统应用程式也没有其他更适合的编译器。(译者注:应该是针对C++而言,不过使用BC或其他编译器的肯定不同意,但我也推荐使用VC,因为研发资料确实非常多,虽然我也不太会:))如果你是学生,那太好了,你会以不错的折价得到一个拷贝,如果在DOS下编程,最佳赌注DJGPP,他是免费的。
目标平台
尽管你最终可能发布到若干不同平台下,但你还是需要一种来重点学习。一旦学习一门语言,在进入研发前(包括图像研发),你可能需要使用一个非GUI的操作系统,如DOS或UNIX,这会避免一些前置问题,例如,视窗系统编程中,你就能仅专注于语言的学习,而不用担心界面部分。
一旦你准备好开始游戏编程了,你还是应该确定你的目标平台。还是让我们看看更多的(需要注意的)重要环节吧:
视窗系统:如果你想在游戏行业中做的非常专业,或更多的人能玩你的游戏,那就选择视窗系统吧。重要的是你的用户在使用视窗系统 — 至少目前看来是这样的。视窗系统大量主流游戏使用了一种研发技术 — DirectX,你可能听到过。DirectX是个研发库,能使你直接访问硬件层,也就意味着你能研发高性能的游戏。
DOS:DOS原来是主流的游戏研发平台,但那些日子已一去不复返了。尽管更有一些嗜好者仍在研发DOS游戏,但不再有商业游戏研发了,毕竟Microsoft不再给予更多的支持了。如果你刚开始做游戏,不要选择DOS,否则,不要执着于此。注意:由于还是有些DOS游戏编程的书籍,需要注意学习的话,可能会跟实际有所不同了。目前视窗系统游戏研发的书籍越来越多,这方面的争论也会越来越少。
Linux:Linux作为一种UNIX变体,基于某些原因,近来变得非常流行,这些因素包括稳定性、价格更有反Microsoft情绪在内。尽管Linux的用户数还相对较少,但由于对他的极度热衷和潜在市场的增长,使得能作为目标平台的另一种选择。
Macintosh:Mac有着大量的不容忽视的热衷者,而且我所了解得每个热衷者都极度渴望Macintosh下能有更多更好的游戏。虽然我没有看到过在Mac下研发的资源,但我还是确信肯定在某处存在着,因此这也是一种有理由选择的平台。
控制器:控制器(也就是PS、N64、DC等等)游戏市场是巨大的,研发控制器游戏当然有前途,不过,非商业研发有非常多因素使得有非常大的不确定性。如果你在研发控制器游戏,可能是正在被一个商业游戏工作室所雇用吧。
备足原料
目前能开始讨论实际的游戏研发了,简单起见,我将假定你已选择了C/C++语言并在视窗系统下研发,但我所说的对其他条件同样适用。
首先,研发游戏前,你应该熟练掌控C/C++。你需要了解指针、数组、结构、函数,可能更有类,应该是非常精通了。如果这样的话,那你就已准备好了。
本文不可能教会游戏研发中的所有事情,幸运的是,也没有必要,Web上完万能找到大量的相关书籍及指南。GameDev.net应该有你所需要的。下面就是我的一些建议:
一本或更多的书籍。视窗系统中,开始研发游戏的话,“视窗系统游戏研发诀窍”非常适合你看。另外Books section也会找到其他一些书籍。通读整本书,尝试所有的范例,然后重新阅读你不能理解的部分。
以在线指南作补充。除了阐明你所读过的知识外,他们同样包含书中没有的知识点(主题)。
问专家。书中或指南中都未找到答案的话,那就充分利用留言板和聊天室(译者注:感觉国内的聊天室没有太好的氛围,还是找些BBS或论坛问吧),会有非常多人愿意帮你解决的。
实际中,不应该是个固定不变的过程,而应该是个相似过程的不断重复。
仅仅学习是不够的,还需要把学到的东西应用,首先开始一个简单的游戏,然后逐步发展。能看看Geoff Howland的文章:“我是怎样研发游戏的?一条游戏研发的途径”
起初,还是打算自己干吧,不要急于加入一个研发组,因为那只会让你的学习过程变得缓慢。一旦你自行完成了数个游戏,那对于一个研发组来说你也会起到更大的作用。
关于书籍我还是愿意多说两句:除游戏研发的书籍外,你需要阅读更多的书籍。为了能创建各式各样的游戏 — 如售货架上的那些 — 你将不得不钻研那些更高级的主题。有些你是能在指南中找到的,但还是会需要更多的书籍:图像、人工智能、网络、物理等等。所以你需要上这些培训(课) — 虽然你觉得这些对于游戏编程没有用 — 这简直够的上一个计算机科学专业的学位。
总结
这里更有些重要的提示:
不要仅仅积累知识,去应用。你绝对不会真正懂得或理解一个事物,除非你使用他。用自己所学,实现些小的demo程式吧。能做一下书中每章节后的练习题。
玩大量的游戏。这样做能给你些启发,帮你实现更好游戏,同样也给你非常好的理念。
帮助他人。通过帮助他人解决问题,你也会了解这个知识点,并学会更多东西。
完成你所开始的。不要陷入到你的思维陷阱中:“我知道我能完成这个游戏,但我有了更好的主意,我要实现这个更好的(而不是原来的)。”如果坚持完成你所开始的,你会懂得更多东西,而且你拥有了一个事物能证实你并不是夸夸其谈。要想实现简单些的话,就不要在更多经验前尝试实际上非常大、非常复杂的游戏。
开始吧!目前你肯定陶醉于制作Quake 4中,好的,虽然不见得如此,但至少你能沿着这条路走下去,并找到更多的信息,夜以继日的辛勤工作后,必定有收获。
















