游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7886|回复: 11

如何成为游戏程序员

[复制链接]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20686
发表于 2005-6-28 13:56:00 | 显示全部楼层 |阅读模式
这里我们邀请了业内的老兵和初入行业的新手来和大家分享一下他们的经验和观点。

  在这个行业工作了5年,参与过很多在海外热销游戏大作的开发的郭赞华先生为大家详细介绍一下游戏程序开发是怎样的工作、游戏公司的招聘要求和一些学习方法。

给希望成为游戏开发程序员的朋友:
  首先最重要的一点要喜欢游戏开发,而不仅仅是为了谋生。只有热爱自己从事的工作,才会有动力把工作做到完美。我知道现在有些人想做游戏是因为现在网游很热,大伙都想来凑热闹。另外我也要奉劝那些徘徊在游戏开发门口附近的优秀程序员,你们想从事游戏开发,但是由于某些原因,没有选择游戏行业。我希望你们排除困惑坚决地从事自己向往的事业。实际上游戏的程序开发和其他的软件开发没有很大的不同,而且游戏行业也是一个非常有前途的行业。在国外也是一个很酷的职业,另外国外很多著名大学都有一些和游戏相关的专业,像斯坦福大学等。现在国内的游戏行业也正在迅速发展,正需要大量的优秀人才加盟,所以如果想从事游戏行业的话,就不要再犹豫了。  


一、游戏程序开发的工作主要包括哪些方面

  游戏开发中的程序开发主要由如下几个方面组成:
  1.图形引擎
  2.声音引擎
  3.物理引擎
  4.游戏引擎
  5.人工智能或游戏逻辑
  6.游戏GUI界面(菜单)
  7.游戏开发工具
  8.支持局域网对战的网络引擎开发
  9.支持互联网对战的网络引擎开发

  下面逐一介绍每个部分:
  1.图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟(如水纹,植物等模拟)),光照和材质处理,LOD(Level Object Detail)管理等,另外还有图形数据转换工具开发,这些工具主要用于把美工用DCC软件(如3DS Max,Maya,Soft XSI,Soft Image3D等)软件制作的模型和动作数据以及用Photo shop或painter等工具制作的贴图,转化成游戏程序中用的资源文件。

  2.声音引擎主要包含音效(Sound Effect简称SE),语音(VOICE),背景音乐(Background music简称BGM)的播放。SE是指那些在游戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,VOICE是指游戏中的语音或人声,这部分对声音品质要求比较高,基本上用比较高的采样率录制和回放声音,但和SE一样要求能及时无延迟的播放,SE在有的时候因为内存容量的问题,在不影响效果的前提下,可能会降低采样率,但VOICE由于降低采样率对效果影响比较大,所以一般VOICE不采用降低采样率的做法。BGM是指游戏中一长段循环播放(也有不循环,只播放一次)的背景音乐,正是由于BGM的这种特性,一般游戏的背景音乐是读盘(光盘或硬盘)来播放。另外一些高级声音特效,如EAX,数字影院系统(DTS5.1),数字杜比环绕等。

  3.物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟, 以及发生碰撞后的物体骨骼运动的力学模拟(比较著名的物理引擎有havok公司的game dynamics sdk,还有open source 的ODE—Open Dynamics Engine)。

  4.游戏引擎主要是把图形引擎、声音引擎、物理引擎整合起来,主要针对某个游戏制作一个游戏系统,其包含游戏关卡编辑器,主要用途是可以可视化的对场景进行调整,光照效果和雾化等效果调整,事件设置,道具摆放,NPC设置,另外还有角色编辑器,主要用于编辑角色的属性和检查动作数据的正确性。一般日本游戏公司的做法,他们会把关卡编辑器和角色编辑器直接做到游戏中,所有的参数调整都在游戏中通过调试菜单来进行编辑,所以一般他们把这部分调试菜单的功能做的很强大,同时在屏幕上实时的显示一些重要的信息,这样做的好处是关卡编辑器调整的效果直接就是游戏的效果,但是对于程序的重用性来说可能不是很好,比如说要用到另外一个游戏项目中就比较难,除非两个游戏类型相同,只要把场景和角色数据换一下,还有做下一代产品也没有问题,只要根据式样增加调试菜单的功能就可以了。

  5.人工智能和游戏逻辑开发,这部分日本和欧美的游戏开发模式也有很大不同,在欧美游戏公司中运用脚本语言开发很普遍,所以这部分程序开发主要是用脚本语言编写,而且脚本程序和游戏程序的耦合性很低,有单独的编辑、编译和调试环境,这样比较利于游戏程序和关卡设计开发分开,同时并行开发,所以一般他们都会有专门做关卡设计的程序员岗位。而日本游戏公司脚本语言一般和游戏的耦合性比较高,一般通过一些语言的宏功能和一些编译器的特定功能来完成一个简单的脚本系统,所以一般这些脚本程序只能在游戏程序中进行调试,而不能在一个单独的脚本编辑,编译环境中进行开发。

  6.游戏GUI界面(菜单),主要是指那些游戏中用户界面设计,有做的复杂,有简单的,做的简单就是2D GUI界面,做的复杂有3D GUI界面。

  7.游戏开发工具主要包含关卡编辑器,角色编辑器,资源打包管理,DCC软件的插件工具等开发。

  8.支持局域网对战的网络引擎开发,主要解决局域网网络发包和延迟处理,通讯同步的问题,有同步通讯和异步通讯两种做法,异步通讯用于那些对运行帧速要求比较高的游戏,同步通讯相对异步通讯来说效率相对低,但是同步通讯的编程模型相对异步通讯来得简单一些。

  9.支持互联网对战的网络引擎开发,目前大部分网游都是C/S结构的,服务器端软件配置管理,服务器程序的最优化,还有游戏大厅、组队、游戏逻辑处理、道具管理、收费系统等。另外还有一些网络系统是C/S和P2P两种结构混合的,如XBOX Live等。


二、游戏公司中有哪些和程序员相关的岗位

  程序员在游戏公司中的岗位在日本游戏公司和欧美的游戏公司有些不同,日本游戏公司中程序员的岗位主要有技术监督(Director),主程序员(Main Programmer),程序员(Programmer),在日本游戏公司里负责游戏项目开发的程序员,一般不会专门根据工作内容划分程序员,除了独立的系统研究室和声音系统制作部门(这两个部门是比较独立的,往往同时给好几个项目服务),负责每个游戏项目开发的程序员,随时都可能一人多职,比如说主程序员除了负责整个游戏系统以外,可能还要负责图形或声音引擎开发等,程序员除了人工智能以外还有菜单制作等。这种情况在欧美的游戏公司比较少见,他们分工的比较细,一般有图形程序员,声音程序员,人工智能或游戏关卡程序员,物理程序员,每个组中可能还会有一个Leader。


三、游戏公司一般是如何招聘程序员的

  这一点,日本公司和欧美公司也有些不同。日本公司一般喜欢从一些高校中招聘一些应届优秀毕业生,一方面比招聘有经验的人要来的成本低,另方面新人是一张白纸,容易培养,像SEGA、KONAMI等都是按这种原则招聘员工的,所以想进入日本游戏公司,你要学好你的软件课程。而欧美公司希望招聘进来,能马上进入项目的开发中去,所以他们一般希望招聘有工作经验的人,即使不是行业中,在相关行业中工作2、3年的也可以,所以想进入欧美游戏公司你的工作经历很重要。


四、想成为一名游戏开发程序员应该具备哪些条件

  我觉的一个游戏软件程序员,最起码的要求是熟练掌握计算机本科专业所学的知识,主要包括C语言或C++语言,数据结构,编译原理,算法等,另外线性代数、微积分、牛顿力学在图形和物理引擎开发方面用途也很广泛,如果要提高的话还有必要了解硬件相关的知识如计算机体系结构、汇编语言,这些对我们学习一个新的硬件平台、编写最优化代码、提高自己游戏的竞争力都是非常有益的。另外,保持有恒心、不怕苦(比如说通宵加班)的心态,对游戏的热情也是非常重要的。对于那些想进入游戏行业,但缺乏软件开发知识的人,可以通过参加游戏开发培训来


五、学习游戏编程有哪些好方法

  现在有很多人,计算机本科毕业,学了很多软件开发的知识,但是一旦要用到实际的项目开发时,感觉无从下手,这主要是在学校里运用知识的机会太少了。所以学习游戏编程最好的方法是能实际参与到一个好的游戏项目中和有丰富开发经验的人一起开发游戏,可能学到很多你从书本上学不到知识和技能。但有时候你一时还没有机会参与到一个好项目中,没有机会进入一家好的游戏公司,但是你对游戏开发有一腔热情,很希望学习游戏开发的技能,那你就应该去参加专门的类似GA(GAME ACADEMY)游戏教育基地一样游戏开发培训,因为游戏开发培训班中的老师都是一些有丰富开发经验的老师,一般都有五年丰富的项目开发经验,听他们的课,实际上就是在和他一起分享这么多年的开发经验,另外游戏开发培训课程中会专门设计一些项目和课题,它们本身就是可以直接运用游戏开发中,这样你可以不进入著名的游戏公司,但可以学到这些公司中一些常用的开发技能。另外还有一种方法经济实惠的方法,参加一些网上志愿者的开源项目,这些项目从品质来说有好有坏,选择一个好的项目非常重要,另外他们中间本身有许多是业内人士,本来你要进入他们公司,才能学习到他们的经验,但是通过开源项目,你就有向他们学习的机会了,说不定哪一天,你就进入一家知名的游戏公司了,不过目前开源的完整游戏项目好的不多,到是在图形引擎和物理引擎方面有一些很不错的开源项目,但要加入进去的话,你的基础一定要好啊,有些开源的团队也不是随便什么人就能加入的。

作者简介:
  GameAcademy 兼职讲师
  2003~上海皿鎏软件有限公司 开发二部部长兼技术总监
  2000~2003 科乐美上海软件有限公司 主程序员
  1999~2000 东星上海软件有限公司 图形程序员

  看过了业内专家的介绍,相信大家已经对游戏程序开发工作有了更多、更清晰的认识,也了解了游戏公司对新人要求。那么如何才能进入游戏公司呢?让我们再从一个刚刚进入这个行业几周的新手那里分享一些经验。

  严格来说杨李现在还是山东理工大学数学系的一名学生,7月份才正式毕业。大学的最后一个学期,杨李来到上海,参加了GA游戏教育基地的培训课程,并在培训结束前找到了理想的工作,被上海润星网络的服务器程序开发部门聘用了,成为一名游戏开发程序员。杨李同学对自己的选择很满意,写下了一些感受给那些和他有着同样理想的朋友。

一.怎样选择培训学校
  选择到GA来参加培训,有偶然也有必然的原因。我是在网上找这方面的资料时发现GA的,但是,我经过仔细看GA提供的资料,打电话咨询和家人商议等等一个很长的过程才决定来GA学习的。至于为什么选择GA我想大概是下面几个原因吧。

1.GA的课程安排是科学的。她有分类(美术,程序,策划)又有梯度(初,中,高级班),在这一段时间里你只能选择一个班次的学习。稍微了解一点的人都知道现在发行的游戏无一不是团队工作的成果,这也就是说一个人不可能做到面面俱到。学习也是一样,我们需要给自己一个定位。

2.GA的制度比较严格。读完GA的规章制度,也许会有人觉得有些苛刻,但是只有教学双方建立合理的约束,才能把教学开展好。当我读完GA的制度的时候也建立我对她的好感。

3.GA的实行入学考核和小班授课。这是我当初选择GA的一个很重要的原因。很明显,小班可以使我们每个人得到更多的辅导,授课的方式也更自由,一定程度的保证了教和学的质量。入学考核可以让学员之间的差距小一些,这样基础差不多的学员之间有相互促进的动力,老师所讲内容对我们来说也不会出显听不懂或者不够听的现象。

4.GA留给我们报名的人足够的选择空间。GA除了报名费先交之外都是在入学或者入学之后交上。对情况不十分了解的人可以亲自到上海来实地考察一番,这也是我鼓励大家采取的方式。记得当时我想,如果这个学校差强人意的话我就回家。但是我选择了留下。

二.培训中的收获
  在培训中最深的感触就是做游戏和玩游戏是完全两个概念,做游戏要求我们不断学习新的知识和学会与人交流。最直接的变化是意识到自己知道太少了。需要有更多的时间来学习。

  当然在几个月里把所有相关的东西都讲的详细是不可能的。主要是分两条线。一个是讲大概,就是把和游戏编程有关的大方面给我们点到为至,另一条线就是在某个具体方面(如C++的高级特性,directx,win32编程等等)接下来还是要靠自己来丰富自己的知识结构了。师傅领进门修行靠个人吧。GA的老师充当的角色就是带我们登堂入室。

  GA的大部分老师都非常的认真,讲课也很亲切。通过讲课可以发现他们确实非常有实力,讲问题通常能深入浅出。尤其是2D 和3D的老师讲课的文稿都是英文,但依然很有意思,我们都很喜欢他们。

三. 关于工作
  培训对于我就业的影响是很明显的,学习本身就是给自己增加筹码,另一个不容忽视的事是:在我们完成一部分课程之后,GA就组织我们去各个公司去考试。GA借助SGDA为我们去各个公司应聘提供了方便。这决不是说可以靠关系解决工作问题,需要我们自己得到公司的认可才行,但通过GA可以让各个公司对我们的了解更为深入,这样我们得到工作的机会也就会更大。如果没有GA,我想,找工作不是不可能,但一定颇费周折。

  我刚刚工作不到一周,其实还是蛮郁闷的,因为我现在的水平仍然达不到可以参与工作的水平。现在我就想抓紧时间熟悉工作,学习工作上需要东西。不然感觉自己是吃干饭的。薪水问题我想新手不要考虑太多,水涨船高,现在应该致力于把自己的水平提高上去。

四. 对求学者的建议和忠告
  网上对游戏培训的抨击我没有十分关注(有点事无关己一身轻的感觉吧),只是略有耳闻有些学校不负责任的行为。他们这种杀鸡取卵的做法,我觉得,应该受到质疑的。所以我比较幸运,GA是我选择的第一个学校,她没有叫我失望。目前我们新的学员所能做的是擦亮自己的眼睛。但是有人会说:我不了解,但又很想学游戏制作,是不是真的我拿不准,怎么办?其实很简单,在你不十分了解做游戏和玩游戏区别的时候不要去报名学习。如果真的有意从事这个行业,那你就去做一些了解,通过各种书刊报纸,各种公开讲座以及自己拿起一两本游戏制作方面的书(游戏美术,编程,策划等等)来看看。也不要怕麻烦,多调查多论证一下,在此之后别人再想蛊惑你就很难了。

  对于希望进入这个行业的朋友来说,最重要的是,你要对将要学习的东西要有一些了解,这和学习她一点都不矛盾。作为学程序的,我就有这种感触,学习编程绝非我们大多数渴望做游戏程序员的新手所想象的那样,这岂是能用一个“酷”字了得。这个成长过程是个困惑相伴的经历,想成为高手,并非一朝一夕。很多同学不很了解这一点在学习时很容易受挫,之后就有放弃的念头,这样很危险的。我现在就有种苦行僧的感觉,还有好多困难在前面等着呢,不过绝不能放弃。

  看过了前辈的介绍和新人的感触,大家应该都体会倒想做一名游戏开发程序员并不是一件轻松的事情。但是,目前国内的游戏行业正式蓬勃发展需要人才的时候,而且游戏开发终究是一个可以给人很大成就感和回报的职业。每一个投身于中国游戏事业的人都欢迎更多有理想有能力朋友加入进来我们的行列中来。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-6-28 14:13:00 | 显示全部楼层

Re:如何成为游戏程序员

。。。这算不算是。。。广告什么的?

1

主题

10

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2005-6-28 16:58:00 | 显示全部楼层

Re:如何成为游戏程序员

晕,越到后面越象广告。呵呵。

45

主题

181

帖子

181

积分

注册会员

Rank: 2

积分
181
发表于 2005-6-28 20:19:00 | 显示全部楼层

Re:如何成为游戏程序员

前三分之一很好,后面的确是。。。广告

3

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2005-7-1 19:45:00 | 显示全部楼层

Re:如何成为游戏程序员

的确如此。。。。。。。。

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
QQ
发表于 2005-7-6 17:40:00 | 显示全部楼层

Re:如何成为游戏程序员

既然后面是广告,恐怕前面也不能幸免,彻头彻尾的

10

主题

82

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2005-7-7 10:09:00 | 显示全部楼层

Re:如何成为游戏程序员

不是吧。。。。

3

主题

186

帖子

190

积分

注册会员

Rank: 2

积分
190
发表于 2005-7-7 15:07:00 | 显示全部楼层

Re:如何成为游戏程序员

通宵加班?极为B4这种行为,说实话通宵做的事情,你自己都不敢保证,等清醒的时候还得去检查一到,极为没效率的做法而且让人很不爽

3

主题

31

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2005-7-8 17:43:00 | 显示全部楼层

Re:如何成为游戏程序员

呵呵,郭赞华原来和我是一个项目组的,人非常的不错。
通宵加班。嗯,如果你有热情,你会觉得和通宵打游戏一样,是非常high的事情。问题是怎么看待了。

0

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2005-7-9 22:06:00 | 显示全部楼层

Re:如何成为游戏程序员

有技巧的广告仍然是广告。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 15:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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