Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1408180
  • 博文数量: 143
  • 博客积分: 10005
  • 博客等级: 上将
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-23 17:25
个人简介

淡泊明志 宁静致远

文章分类

全部博文(143)

文章存档

2011年(2)

2009年(1)

2007年(22)

2006年(118)

我的朋友

分类: C/C++

2006-12-04 22:11:51

游戏编程新手指南

作者 Dave Astle

 

原文链接:http://www.gamedev.net/reference/programming/features/davegpg/

译者:ammana_babi 一个在某游戏机公司开发游戏的小小程序员

【翻译的不好,请大家还是尽量直接看E文原文】

 

文章正文:

 

简介

我经常被问及“一个人如果有很少甚至根本就没有编程经验,那么应该怎样开始自己的游戏开发之旅呢?”。直到现在我还是经常尽自己最大的努力采取一对一的方式去帮助他们。然而由于最近问题的数量增加到了我已经无暇处理的地步,我觉得现在已经是把那些我对这个问题的所有建议写成一篇文章让它成为公共资源的时候了。

这篇文章主要是针对那些想制作自己的游戏而编程经验又不多的人。其实,在这篇文章里面我假设读者根本就没有任何编程经验。我将把文章的焦点主要放在游戏开发过程中的编程和设计两个方面,而不是放在那些看似风雅而不着边际的东西上。也不会涉及到当今的市场上的商业游戏,因为那样的游戏是需要充足的其他资源,但是我将会带领你做你现在所需要做的事情,那就是“制作自己的游戏”。最后需要补充的是,这篇文章里面的东西对于如何制作游戏可能不是唯一的或者最好的方式,但是它对于我以及其他的一些人来说确实是一个不错的选择。

选择一门语言

第一件事情是你需要选择一门你将来进行编写游戏的语言。你有许多种选择,包括BasicPascalCC++Java等等,而且在网上关于游戏制作新手应该选择哪门语言的讨论也很多。John Hattan What Language Do I Use ?中对当前比较流行的语言的分析和讨论很有见地。

我推荐选择CC++做为开始写游戏的语言。一些人可能会说这两种语言对于没有编程经验的新手来说有点难度,我不同意这种说法,因为我就是刚开始的也是选择这两种语言。另外C/C++在今天是两种应用范围最广的语言,因此你才会更有可能得到更多的编程和学习资源以及其他人的帮助。CC++应该先学哪个不是很太重要的,因为当你学好了其中的一个,学习另外一个就是水到渠成、手到擒来的事情。然而,当你选择了先学C++的时候,在学习面向对象编程那部分的时候,首先要确定你已经能够很好的理解和应用过程式的编程。例如:在你不使用类的情况下不能写出很好程序的时候请不要着急着去学习类。

如果你使用C/C++作为开始的语言,但是学习的进程却是很困难,回头去选择一门对于你而言比较容易的语言,如:Basic Pascal 。但是我坚信如果你能够坚持学习而且能够找到合适的学习资料,那么学好这两门语言应该是不成问题。

你的下一个问题可能就是“我该怎么学习C/C++ 呢?”我很高兴你能问我这样的问题。最好的方式是去培训,找个讲师,能够回答你的问题,能够使你的编程能力得到很大的提高,以及课外编程作业将保证你能够切实的应用你所学的东西。如果去培训不是你的选择,那么下一个最好的方式就是弄些比较好的书。对买合适的书不要有太多的顾虑,因为你最后或许会买许多书。我建议你去书店,然后花些时间搜索介绍CC++的书,最终你将会找到一本你能够理解和能够学到东西的书的。你还可能会要一些进阶书籍或其他的参考书,当你对这门语言有了一定的了解之后你将会知道哪些书是你所需要的。你也可以去我们的书籍区得到一些建议。

在这里我想提的是曾经看到的一些对许多程序员特别是而又没有钱买书的年轻程序员有影响的东西。首先我们身边有很多的免费的资料,包括你附近的图书馆以及拥有很多电子书的麦克米兰出版社的网站,地址是 。但是你如果真想成为一个牛B的程序员,你必须在这上面做一个投资计划。当你使用东西的时候,也就意味着你需要掏出现金。在网上也有许多的学习C/C++的指南,而且我发现指南作为你在书上学习的一个补充而不是一个卓越的学习资料。

选择正确的编译器

你写的程序源代码往往被存储为文本文件,你甚至是可以用记事本来写C/C++程序。但是有一件事情需要做的是你需要把你的源代码转换成可执行程序。就C/C++来说需要的是编译器。

有许多编译器可供选择,也有许多是免费的。选择一个你用的顺手的编译器是一件很重要的事情,而免费的编译器有一个很大的好处就是你可以按照你喜欢的方式使用该编译器的所有功能。然而,免费的编译器与商业化的编译器相比,可能不支持全部的语言特征或者没有很好的服务支持。幸运的是大部分的商业编译器都出了花费较少而又有完全版本全部功能的简洁版或者学院版,仅仅是你不能分发你使用它来编译的程序。

最终编译的选择是依赖于你将在何种操作系统或平台上进行开发,以及在操作系统或平台上开发的时间的长短。如果你将在Windows上面做游戏开发,我强烈的建议你使用微软的VC++VC++有强大的开发环境,可以让很多事情变得简单了许多。还没有一个编译器显示出比VC更适合于在Windows上做程序开发应用程序。如果你是一个学生你就可以打折得到一个拷贝。如果你是在DOS系统下做程序开发,最好的选择是DJGPP,而且是免费的。

选择一个开发平台

即使你将会可能在不同的平台上开发,但是你仍旧需要学习其中的一个。当你学习这门语言在使用包含图片的编程之前,你可能更想使用没有GUI界面的操作系统,如:DOSUNIX。这样可以让你把经历集中在学习这门语言本身上,可以避免你陷入上层程序的泥潭中,如:Windows编程。当你开始准备好做游戏的时候,你就应该改变你的开发平台。那么让我们看看有哪些较出名的操作系统可供选择。

Windows如果你想在游戏产业中的专家级人物或者你想能有很多人玩你的游戏,那么Windows就是你所想要的系统。你大部分用户用的都是Windows操作系统,而且这部分用户还不会在短时间内转移到其他的操作系统。在Windows下开发的绝大部分游戏都使用了一个你可能听说过的DirectX技术。DirectX允许程序员直接操作硬件,这也就意味着你可以写出高性能的游戏来。

DOSDOS曾经在游戏开发平台中占据着绝对的支配地位,只可惜那已经是过去的事情了。尽管还有一些沉迷者仍然在做DOS下的游戏,但是有很少是商业化的游戏,当Windows停止对DOS提供服务支持后,做DOS下游戏的会更少。如果你刚刚开始做游戏,建议你不要选择DOS,而如果你已经开始做DOS下的游戏,建议你不要在DOS系统上的开发停留太长时间。提示:因为有很多关于游戏编程的书都是针对DOS系统的,这也就似乎是说通过学习那些书,选择在DOS下开发游戏是很自然的事情。然而当关于在Windows下开发游戏的书籍增多的时候,这种争论将会变得越来越少。

LinuxLinux是一个UNIX系统的变种,将会由于它自身的稳定性、价格以及抗击微软的情感而变得逐渐流行起来。尽管相关的Linux用户还很少,但是环绕在它四周的激情以及逐渐增长的市场潜力,使它成为一个可行的开发平台。

Macintosh(苹果机):尽管Mac系统有相当数量的忠实用户,但是几乎我遇到的每个Mac狂热者都要求更多的更好的游戏能够提供给Mac系统,由于这种需求的存在,因此Mac也可能也是一个可行的选择。

游戏机:游戏机(如:Playstation , N64, Dreamcase等等)的游戏市场还是非常大的,在游戏机上做游戏开发也是很有前途的。然而由于某些原因在游戏机上开发一些不用于商业的游戏那是行不通的。如果你准备在游戏机上做游戏开发那么你同时也得受雇于一家商业性的游戏开发商。

译者注:在国际上的做游戏机的公司还是很多的,象微软的Xbox360SonyPS2 Nitendo(任天堂)的GBA等。只可惜这些公司几乎都是赌徒,喜欢短时间内把公司的大量的财力、物力押在一款产品上,结果是事与愿违,一赔就是数以几十亿。做游戏机类的游戏是一个大家配合的工作,包括包装、外观、机械、电子(PCb板)、程序、生产线等,bug解决不了的时候,只能是软件漏洞硬件补,处理起工作来,要打交道的人很多,有的时候做程序的还要跑到生产线上去看看,郁闷。

放在好东西上

现在我们讨论做游戏。简单的说我将假设你已经选择了在Windows下的C/C++开发,即使你选择了其他的平台和语言。

首先在你开始游戏开发的时候,你应该对C/C++有了较好的掌握。你应该能够理解指针、数组、结构体、函数可能还有类,而且能够熟练的使用它们,甚至是精通。如果你已经做到了上面的几点,那么你可以开始游戏开发了。

这篇文章不可能教给你有关游戏开发的所有东西。幸运的是这篇文章也没有试图这样做。在游戏开发这个科目上有很多的书籍,在网上还有很多的指南。GameDev.net 上该有你所需要的东西。下面我将给出开始游戏开发的一些建议:

弄几本好书。Windows游戏编程大师技巧》是一本不错在Windows下做游戏开发的程序员的入门书籍。除了这个之外我们网站的图书区还有很多其他的好书。好好的看看这些书,实践书中的所有的例子,不断的重复的看看那些你不能理解的部分。

在网上读一些在线的指南作为补充。而且仔细的阐明你所读的东西,这些东西中有很多是你书上所没有的。

向专家请教。如果你在书本或指南中找不到你的问题的答案,利用我们的留言本和聊天室。那里有许多希望可以给你帮助的人。

这些应该是一个不断的并行的过程而不是一个连续的过程。

仅仅是学习还是不够的,你应该应用你所学的东西。从一个简单的游戏开始做起。可以看看Geoff Howland《我应该怎样写游戏?游戏开发的一个路径》这篇文章。

首先要做好一个人开发的思想准备。不要急着去加入什么游戏开发团队,因为那只能减慢你的学习速度。当你掌握了许多游戏的时候,你就可以开始考虑加入一个团队做大一些的工程的开发。

关于所要看的书我再补充一下,你不仅仅是需要看游戏编程方面的书。尽可能的去创建你在商店货架上所看到的游戏,你必须要钻研到一个比一些书上提到的更深的程度。一些东西你可以在指南中找到,但是你仍旧需要看一些其他的书,如:在图形、人工智能、网络、物理等等。这是从事计算机科学研究的一个便利的通道,因为你将被要求做一些你认为不可能在游戏编程应用中实现的东西,而事实上可以做到。

专注

下面有一些提示:

不要仅仅是积累知识,用它。除非你用它们,否则你不能真正的知道和理解它们。用你所学的东西制作一个小的Demo。认真的去做书里面每个章节后面留的练习。

尽量玩更多的游戏。这样做可以给你许多灵感并能帮助你把游戏做的更好一些。这也可以给你枯燥的编程工作减轻一些痛苦。

帮助别人。在教别人或者给别人讲解的过程中你将会更加的了解自己,学到很多东西。

有始有终。不要陷入“我知道我能完成这个游戏,但是我有更好的方法,因此我要继续想想我的那个方法。”如果你能完完整整的写完一个你从一开始要做的游戏,你将会学到非常非常多的东西,而且你也有东西可以证明你不是一个把什么东西都停留在嘴巴上的人。在你成为一个有经验的游戏程序员之前,请把你要做的游戏更简单更容易一些,不要贸然的去尝试写一些比较大或者很复杂的游戏。

现在你可以开始了。你现在应该可以考虑用你自己的方式来写Quake 4 了。不用太苛刻,但至少你能知道从那条路上开始,知道从哪儿可以得到更多的信息,再加上几年的努力,一切皆有可能。

阅读(3767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~