游戏程序员所需的知识体系

我见过一些朋友,他们想学习游戏编程,太过急于求成,总是一位的追求最新的技术,最高深的技术。例如一个刚刚大学毕业的朋友,我看他对于C语言指针的概念理解的很混乱,就劝他应该加强语言基础学习,过了一段时间又遇到他,他却想和我讨论多线程的程序设计。基础知识不牢固,等遇到问题的时候往往摸不到头脑。就像《Joel说软件》中说的那样:抽象层往往是有漏洞的,所以在一个项目中必须至少有一位了解所有细节的“编程高手”!下面是我认为一个职业游戏程序员需要具备的知识,或者是学习路线。匆匆写来,也许有疏漏,但是花时间去学下面这些东西肯定是值得的!

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的成了主流。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么还要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值