游戏程序开发主要学这些内容的:
JAVA语言、C语言、C++语言、
手机游戏开发、手机网络游戏开发、2D/3DPC网络游戏开发等。
适合做这些工作:游戏程序测试员、手机游戏开发程序员、
网络游戏客户端开发程序员,游戏引擎开发程序员等。
广州的新广动漫教育中心就有得学。
从广义上来讲,参与游戏制作的都可以被称为游戏设计师,包括了游戏玩法策划、游戏美术设计、游戏程序开发、游戏运营维护等几大岗位的从业者;从狭义上来看,游戏设计师主要指的是游戏美术设计师。
游戏美术设计师就是对玩家肉眼可见的前端画面的各方面的组成进行美术设计。游戏核心的玩法有限,但是游戏美术形象、风格设计可是丰富多样。正是不同的游戏美术设计与不同的玩法组合,才有着丰富多样的游戏作品。一般来说,游戏美术设计包括原画设计、3D建模设计、动作特效设计、游戏UI设计等。
游戏原画设计是指依据文字策划进行角色形象、场景、道具等内容的概念设计的岗位,他们为后期的3D建模、动作特效设计提供设计蓝图、标准参考;3D建模是3D游戏美术设计中的重点;动作特效设计顾名思义,是为3D模型进行动画设计制作,以及游戏特效设计的岗位;
游戏UI设计师则负责游戏前端画面的图标、界面、交互逻辑设计,为游戏玩家提供更好的游戏体验。游戏美术设计师都需要有一定的美术绘画基础、相应的电脑软件 *** 作以及一定的游戏专业知识。
1、基础知识
首先是编程语言。现在游戏开发的主流语言是C++。C++是一门复杂的语言,学了这么多年,我都不敢说自己精通C++。要想用好它必须付诸长时间的努力。需要特别注意的是STL是C++中非常重要的部分,不要忽视对它的学习和使用。
然后是 *** 作系统及其API相关的知识。要想开发出在某个 *** 作系统上高效运行的程序,对 *** 作系统有深入的了解是必要的。我主要在Win32下开发,对其他平台接触较少,举例来说FileMap,IOCP都是 *** 作系统特有的功能,用好这些功能可以使程序发挥出 *** 作系统更多的功能。还有一些细节,如果不了解就很容易出问题,例如DLL链接的问题。
软件工程知识。不要只顾着低头编程,要注意你所在的项目,要很好的和别人沟通。无论把自己定位成技术高手还是技术领导者,都需要学习软件工程的知识。
熟练使用开发环境和版本控制软件。常用的有MS Visual Studio Net 2003,MS Visual Source Safe,GCC,CVS。
丰富的游戏经验也是很重要的。如果你极少玩游戏,那么你在一个游戏开发的团队中是很难与别人交流的。例如,有人会说我希望镜头效果象《古墓丽影》那样,如果你没有玩过类似的游戏是很理解的。你甚至连策划案都看不懂,或者你认为你看懂了,结果做出来的东西完全不符合游戏的常理。所以,你至少应该玩过主流的游戏,特别是你正在制作的同类型的主流游戏。对于一个不是真正喜欢游戏的,这一点是很难做到的。
2、客户端方向
术业有专功,游戏越做越大,需要的知识越来越多,一个人很难对所有方面都学的很深入。如果你想致力与客户端引擎技术方面,那么下面这些知识都要学。
一些图像处理技术。例如颜色混合,图像平滑,轮廓查找,无论你是做2D游戏还是3D游戏,这些东西都用的着。
3D图形学基础。不要以为渲染工作都丢给显卡去做了,你就可以不管其中的理论,要想做3D引擎,基础知识掌握好很重要。
熟悉D3D。现在主流的3D API应该是D3D,必须要掌握,没什么好说的。
3DS MAX插件开发。将美术制作的模型和材质导入到游戏中。另外,顺便了解一下3DS MAX的体系结构,肯定很有好处。
编辑器开发,一个游戏需要很多内部的工具。甚至可以说需要一个内容制作平台,一般要用到MFC,也可以用C#开发。
3D引擎技术,这是最吸引人的一部分了,包含的内容很多例如SceneGraph,Portal,Terrain,Shadow,碰撞检测,Shader编程等等,很多很多。建议先找一个开源的看看,OGRE就是个不错的选择。
人工智能和物理模拟。这两个方面往往不被重视,特别是在网络游戏中。实际上,如果你实现了一个很好的群体行为,或者刚体运动模拟,效果是很惊人的!
3、服务器方向
先说明一下我并没有服务器编程的经验,这里就我的一些了解,试着说说。:)
多线程编程。现在的服务器几乎都会使用多线程,好的多线程设计会大大增加程序的效率。
数据库。玩家的数据必定要使用数据库来存储,现在用SQL Server或者MySql的比较多。
大规模的通讯程序设计。想象一个游戏世界需要负载几千人,这个通讯量可不小。对于程序设计来说大数据量和高效率总是难题。
4、其他
脚本语言。前几年大家还都在实现自己的脚本语言,现在好像用Python或者Lua的成了主流。
1 ,C++游戏程序员现状
中国C++程序员100%都是自学的。因为中国几乎没有象样的C++培训机构。大家都知道社会培训是赚钱为主要目的。能在那里成才是个大运气。也不象JAVA有SUN公司一手推行。中国大学教育里也根本没有C++教学。关于C/C++基础课的知识,只是让学生入门。但对于实际的C++软件工程应用,大学课本知识实践意义不大。最重要的是,大学里没有合格的C++老师。编程是门技术,叫手艺也行。而大学是搞科研的,多的是科学家,靠出PAPER教科凭职称为生。并不是技术员。没有10万行以上代码经验和成功软件项目经验的人,很难教出中高级C++程序员。
游戏制作业对C++程序员的要求是比较高的。比一般行业软件高很多。因为任何一个MMO都是个中大型软件项目。日使用人次达到几十万上百万,同时使用人数几十万在线的大型网络多人交互软件,集成了超过十几项专业领域编程技术的软件,想不大都不行。
另外,中高级C++程序员能力一般都很强。因为都是自学成才,这需要较高智商,很强的自学能力,解决问题能力,和克服困难的毅力。但是这种人才在游戏行业里人数并不多。抛开凤毛麟角具备整体大型软件架构能力的高级人才不谈。能够承担独立模块开发,具备独立解决问题的能力,写出在空间,性能,可维护性等几个方面达到要求的C++程序员,也是很难找到的。而具备这些能力,同时又具备一些专业领域技术的人(图形引擎,网络引擎,等),更加稀少。
所以,即便是大游戏公司,对于C++游戏程序员的需求,也是永远不能够得到满足。而已经在公司工作的C++程序员,不经过短则3个月,长达1年的锻炼,也无法真正胜任独当一面的C++游戏程序开发工作。
2 ,MMO游戏开发对C++游戏程序员要求
前面提到,所有MMO游戏都是中大型软件。软件占用空间,稳定性,性能,可维护性等各项衡量软件质量的指标,对MMO游戏软件的要求都非常严格。远大于普通行业软件。这种规模和银行系统类似。而客户端和软件逻辑比一般的商业软件又要复杂很多倍。这就要求软件编写人员具备较高的程序编写素质。
游戏软件中,解决好软件工程部分,只是项目的1/3。另外两部分是策划和美术/音频。从经验来看,需求变更对于MMO游戏软件,不是偶然事件,而是一种MMO游戏软件开发的基本属性。游戏软件投入大,周期长,风险高。MMO市场变化也大,交互电子游戏发展迅速。游戏软件必须面对外界变动。又因为开发周期长,所以软件需求变动成为了软件开发的一种基本属性。犹如复杂性是软件工程的一项基本属性一样。
这导致游戏软件的开发充满了不确定性。交互娱乐不同于商业应用。娱乐是属于理性和感性之间的领域。而C++开发面对就是0和1的二元世界逻辑。这两个领域存在着不可调和的矛盾。这种情况,对C++游戏程序员提出了更高的要求。
首先,基本C++知识,C/C++运用技能,必须极其扎实。并不是游戏软件开发用到什么平时书本上很难得到的知识点或者技能点。游戏C++开发的知识体系和技能体系,利用现有C++书籍就可以满足。比如《C++ PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECT C++》《MORE EFFECT C++》等。但是在开始游戏编程之前,把这些书本吃透并且实践熟练的人,非常难遇到。当然能够真做到这点的人,已经是个中高级C++程序员了。我曾经遇到过一个,毕业工作不久就去了GOOGLE
其次,对于面向对象的深入理解。是非常重要的。熟练掌握C/C++语法,编程技巧,只是满足了C++游戏程序员一部分要求。而面向对象观念的深刻理解,会为大型C++项目开发带来翻天覆地的变化。有时候,在一个10人以上并行开发的C++游戏项目中,面向对象方法会成为救命稻草。《设计模式》以及《设计模式解析》相关的书籍,也是必修课。
最后,好技术人员的本质是自大的。这属于正常。但是如果这种习性影响了自身继续提高和团队合作。以及影响了其成为技术管理者和项目技术核心时,那么这种技术人员的自身价值会大打折扣。如果早日越过自命不凡这一关,扩大眼界,继续在综合素质上提高。在技术管理能力,架构能力上提高,其自身价值才会继续增长。落到实处,就是待遇和身家增长。
由于游戏开发的本质是团队开发。任何时候,只有对一个团队有价值的技术人员,其本身的价值才有可能得以体现。
3 ,成长和技术发展路线
一般技术人员发展有几个阶段
1 ,具备独立开发局部功能的能力
比如为某个UI编写逻辑接口函数。为某个LOGIN对话框编写自绘制控件等。
2 ,具备独立开发和攻关某个功能模块的能力
比如为游戏增加一个小型逻辑功能模块。
3 ,具备独立设计并开发某个系统的能力
比如设计和开发AUTOPATCH 系统
4 ,具备解决技术难题,设计架构的能力
比如开发网络同步仿真系统,开发一个中大型游戏制作工具
5 ,具备整体架构,管理,协调其他人共同开发一个大系统的能力
客户端主程,服务器主程,引擎主程等
6 ,技术director
制定技术发展方向,技术团队建立,技术管理等
在迈向每个阶段的过程中,伴随的都是巨大的工作量和工程压力。有时候是跨越1年的失败等等。在公司项目不成功时转换单位,重新开始,或者继续做为核心团队留在公司继续从新的机会做起,都是好的办法。但关键是吸取经验教训,尽量多学多练。并且结合自身长处发展。当然,游戏制作人员,最好还是依靠一个核心团队。成为核心团队的一员。
能够达到第三档的程序,已经是公司不可缺少的人才了。但往往程序员自身对自己的认识,和公司对其的认识,有时候会有差异。我碰到过一些人,脑子好用,写东西很快。各种技术都有涉猎。但总是不放心让他独立开发设计某个系统。哪怕是相对独立的工具。也会被搞得一塌糊涂。要后面人不停擦屁股。可自己还觉着自己水平很高。这种人浮躁,眼高手低,不愿意细致周全的做好一件完整的事。所以就可以看到他不停的跳来跳去,可在新公司的职位也没有见多么提高。公司非常重视交给一个程序员一件事,他是否能完整,考虑周全的把事情做完。哪怕时间长一点,也不能不做完。这会给工程带来致命的后果。
学习游戏开发需要熟练掌握游戏编辑软件,熟练掌握好这些基础的游戏软件功能就可以了。
常用的编辑软件有以下6种。
1、3dsMAX:大多数游戏开发公司美工使用,效率较高,可以独立制作游戏中所有美术相关资源。
2、MAYA:跟3dsMAX差不多的软件,因个人喜好而定,MAYA在制作动作的方面较MAX稍差,不过在很多方面这两款软件都是可以兼容的。
3、Deeppaint3D:可以直接打开3维模型文件,在上面绘制贴图。
4、C++:程序使用,用来实现游戏中的各种功能,调试BUG等。
5、Photoshop与Panter:配合MAX或MAYA来绘制各种模型需要用的贴图。
6、ZBrush:美工制作超高模用的,然后可以生成法线贴图,在MAYA或MAX中使用。
作为一个游戏程序员,我来分享我的经验。
首先做好这个项目的成功,至少在短期内你会增加的收益。找到自己的方向(技术)现在是一个信息爆炸的世界,过滤掉无用的信息,不要让自己过于分散,你可能没有什么,更多的掌握基本理论和一些有用的和不太容易改变的,不受欢迎的技术,学习一些花哨的容易改变(有很多这样的作为游戏引擎却可以掌握图形技术来改变现状,而最好的掌握一个或两个流行的引擎)
其次多学,多交流,多学习别人的成果,学习别人的思维方式,阅读,看论文,混论坛,阅读源码,问问别人如何处理这个问题,或者能为提供一些启示。多思考,多总结。今天有什么计划?明天我要做什么?有没有更好的方法呢?您想提交本周的版本吗?我从本周看到的那本书中学到了什么?为什么会导致这个bug?下级容易出错。我怎样才能尽可能地防止他的错误呢?我生命的意义是什么?我想追求什么?我的优点和缺点是什么?我该做什么才是正确的?工业界关心的新技术是什么?新产品的最后可能是什么技术?哪些公司在进行资本运营?
最后自定义任务列表好就忘了,别忘了要做的事情来加强执行力,强迫自己去做的事情的清单,回想起来,有一种成就感的任务和期限十年专注于一件事,这里会有成功的地方。他们想要的,当然不是,不要分散的注意力。一般的好习惯,习惯可以改变,看看你是否愿意养成良好的习惯可以让你更健康,更饱满的精神灵感马上就下来了
计划好每一天,好好利用时间碎片。协调工作和生活,和家庭相处,毕竟工作只是生活的一部分,大多数人都是生活中的一员。
以上就是关于游戏开发都学习什么全部的内容,包括:游戏开发都学习什么、游戏设计主要做哪些工作、游戏程序员一般要精通哪些编程语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)