什么工作最苦,程序员的工作最苦,我们号称软件民工。
什么程序员工作最苦,游戏程序员工作最苦,我们天天加班,拿着微薄的工资,号称为了理想而奋斗。
软件民工,其实有点高抬自己了。其实我们除了衣服领子看着比农民工干净点外,我们内心的压力比农民工高多了,我们必须天天学习新语言新算法新架构,这种痛苦也只有程序员才能够理解。
但是既然是为了理想而奋斗,就要有很多的人为此而前仆后继的付出。本人用切身的体会希望有志于做游戏程序员的人少走弯路,或者给新人一个进入游戏行业的方向。
也许你正在为成为一个游戏程序员而找不到方向,因为你喜欢游戏,希望也能制作自己的游戏,但是你无从下手,更无人给你指点迷津,那就希望我写的东西对你有点帮助,有帮助了就顶一下。
要成为一个游戏程序员,首先你必须成为一个程序员,否则那是空谈。只有你成为了一个“程序员”,你才有可能成为一个“游戏程序员”,游戏程序员要比其他行业的程序员付出更多艰辛的努力,要学习更多的知识,面临的挑战和困难也是你无法想象的。你不进入这个行业,可能你是无法体会的。
如果你连成为一个程序员的勇气都没有, 那肯定无法成为一个游戏程序员了。一个合格的游戏程序员一定是一个合格的程序员,需要具备程序员的基础知识。而一个程序员,必须有扎实的数据结构,操作系统,软件工程知识。语言你还必须掌握C/C++,否则一切将成为空中楼阁。
如果你目前只是一个普通的程序员,或者你还只是一个新人,但是你希望进入游戏行业,那么你不要着急学游戏相关的东西,还是先准备成为一个合格的程序员,在考虑进入游戏行业磨练吧。
首先你必须熟练掌握C/C++语言,至于要如何成为C/C++程序员,我博客里面有相关的文章,你可以看看。当你熟练掌握了C/C++语言,数据结构,操作系统的基础知识后,下来最好也是最快的办法就是应聘一个游戏公司,进入到这个行业里面去向高手学习,向同行业的人学习,去做一个完整的游戏,让别人带着你一步步走下去,这样你才知道你下来该从哪里入手,从哪里深入进去。
游戏开发涉及到的东西太多太杂,是一个包罗万象的复杂的系统工程,一个简单的网络对战棋牌游戏的代码量都在20万行以上。
下面我从框架上讲讲游戏开发的底层引擎吧。
游戏开发引擎有哪些?
1.图形引擎(这是最核心的最复杂的,代码量也是最大的。本人推荐研究OGRE或IRRLICHT。国内用得最多的开源图形引擎就是OGRE了,OGRE有良好的架构,代码质量和可读性都非常不错,值得研究。下来对初学者而言irrlicht这个3D引擎不错,代码可读性很好,关键是代码量少,简单,容易看懂。)
2.声音引擎(声音引擎相对简单得多了,推荐大家使用FMOD这个免费的引擎,很多世界一流的牛逼的游戏都是用得这个声音引擎,使用简单方便,效果也不错,支持的功能也很多。)
3.物理引擎(物理引擎在国内的游戏里面用的不多,一些物理效果基本都是3DMAX直接建模做的动画,而不是程序去计算的,如果你的游戏需要物理引擎的支持,推荐使用ODE这个物理引擎。)
4.游戏引擎(游戏引擎一般是一个游戏框架,里面封装了对图像,对声音,对网络,对脚本等的一整套封装解决方案,另外还附带各种工具等,比如地图编辑器,粒子编辑器,关卡编辑器,声音编辑器,脚本编辑器等,游戏引擎可能还包括服务器端对数据库,对寻路算法等的封装。总之是一个非常复杂的系统工程。)
5.网络引擎(网络引擎需要根据不同的游戏类型做不同的封装,可能需要支持P2P功能,并且要对大规模大并发提供稳定的支持。开源的网络引擎推荐libevent, ACE,libev等。ACE比较庞大,学习曲线陡峭,但是一旦掌握了会非常好使,libevent比较轻量级,效率也非常高效。)
6、UI引擎(顾名思义,就是游戏里面供玩家点击的各种按钮,比如背包,血条,聊天框等,游戏行业中用的比较多的是CEGUI这个开源库,不过CEGUI并不能完全满足游戏的需求,需要对其进行二次开发和封装,工作量也比较大。)
7、脚本引擎(在游戏行业里面用得最多的脚本就是lua了,另外python用的也比较多。脚本引擎可以对封装了让策划直接使用,通过可视化的界面设置NPC的逻辑,属性值等。)
看到上面这么多的引擎,大家不要迷糊,每个人的发展方向不一样,一个人不可能把所有这些东西全部掌握,在游戏公司里面,可能你只需要掌握其中的一种,钻研到精通的程度即可。在游戏公司里面有专门负责3D引擎图像渲染的人,有专门负责游戏逻辑的人, 有专门负责UI逻辑的人,还有专门负责数据库的人,如果你只懂C/C++语言, 那你可以应聘游戏逻辑程序员,或者应聘UI程序员。进入到这个行业,你再学习具体的图形引擎渲染知识。另外游戏行业常用的算法你可以直接从网上找资料,用得最多的可能要算寻路算法了,无论是2D游戏还是3D游戏,都牵扯到寻路,寻路算法大家可以上网找资料,3D游戏中三维空间的寻路算法就更复杂了。总之作为一个程序员,要多动手写代码,调试代码,没有什么捷径可走。
推荐几本个人感觉不错的游戏书籍
这两本书从底层的原理入手讲解了游戏开发的基础知识,对游戏入门者非常实用。
分享到:
相关推荐
下面就是我认为的成为一名优秀的程序员需要做的一些事情。记住,想成为一名程序员,很多条路可 本文是从Advicetoyoungprogrammers这篇文章翻译而来。 偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,...
本书系统介绍使用C++进行游戏编程的概念、方法、技巧、实例以及综合运用。本书共分为五部分,第一部分简要介绍编写游戏所需的工具和...既适合作为有志于成为游戏程序员的读者的基础读物,也可用作游戏程序员的参考书。
C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、...
本文提供了怎样在学习过程中注意培养自己的某些方面,达到成为一名优秀的程序员的梦想
程序员考试刷题虚拟FESB 描述:OpenGL 游戏引擎和用它制作的教育游戏 ...你是一名学生,你需要在学院大楼里找到所有的考试。 每场考试有 7 道随机题。 至少解决 4 个才能通过测试。 解决所有考试以完成游戏。 截图预览
由于游戏是一种集剧情故事、美术、音乐、动画、程序等技术为一体的复合艺术,所以一名游戏从业人员必须兼具软件行业专家和艺术家的创造力,而当前符合这一要求的人才却是少之又少。因而专家呼吁,培养游戏软件专业...
作为C语言的初学者,通过逐步实现扫雷游戏,可以更好地理解和掌握C语言的基本语法和编程逻辑...因此,如果你想真正掌握C语言,不妨尝试挑战自己,亲手构建自己的扫雷游戏——这可能是成为一名优秀的C语言程序员的关键!
程序员刷题app排行榜BGG Hotness 安卓应用 一个显示来自 ...除了是一名程序员,我还是一个棋盘游戏的忠实粉丝。 我在学校最后一年的某个时候发现了现代棋盘游戏。 从那以后,我建立了一个不小的游戏收
名程序员。 该项目分为 3 个部分。 每个团队都必须做编辑和编程部分,如果你的团队中有美工,你只需要做美术部分。 您可以通过广场的“寻找队友”帖子找到合作伙伴。 ##Grade 细分:要求:55% 复杂性:25% 创造力:...
想成为一名全栈员工吗? 浏览这些资源玩得开心。 最重要的是,这里列出的所有东西都是免费的(如免费比萨饼)。 随意进行更改。 受此媒体帖子的启发,其中包括: #The Plan Layout 理想情况下,一个人应该是编码方面...
你要扮演得是一名非常有力量的魔法师,要通过你写代码魔法,让你的人去消灭怪兽(其实是怪物)。看起来像是塔防游戏——《王城保卫战》,但却是一款即时战略游戏。每关都会有对话讲解如何操作(遗憾没有中文)左侧是...
假如你是一名程序员,能帮我做些什么事? GPT:作为一名程序员,我可以帮你完成以下任务。 1、开发软件或应用程序:我可以使用各种编程语言和工具来开发各种类型的软件和应用程序,包括桌面应用程序、Web 应用程序...
Voider 该游戏正在创作中。 这样做的基本思想是创建一个刺客信条Unity副本,但差别很小。 它是用Java编写并在Blender中设计的。 目前,登录,加载屏幕,游戏... 团队由一名程序员和一名设计师负责徽标和搅拌器模型。
Box2D 是一个用于游戏的 2D 刚体仿真库 程序员可以在他们的游戏里使用它 它可以使物体的运动 更加可信 让世界看起来更具交互性 从游戏的视角来看 物理引擎就是一个程序性动画 procedural animation 的系统 而不是由...
所以我们相信,XML做为一种先进的数据处理方法,将使网络跨越到一个新的境界。 六. XML的严格格式 吸取HTML松散格式带来的经验教训,XML一开始就坚持实行"良好的格式"。 我们先看HTML的一些语句,这些语句在HTML中...
java程序员刷题知乎编码琐事 ...要成为一名成功的程序员,学习计算机科学、软件工程、网络创建和互联网技术。 如果您想成为前端或后端开发人员,或者只是想增强您的编码技能,那么玩琐事是一种既有趣又简单的方法
程序员可以在他们的游戏里使用它,它可以使物体的运动 更加可信,让世界看起来更具交互性。从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让...
程序员可以在他们的游戏里使用它,它可以使物体的运动 更加可信,让世界看起来更具交互性。从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让...