`
wangxiaohigh
  • 浏览: 1427770 次
文章分类
社区版块
存档分类
最新评论

如何成为一名自豪的游戏程序员

 
阅读更多

什么工作最苦,程序员的工作最苦,我们号称软件民工。

什么程序员工作最苦,游戏程序员工作最苦,我们天天加班,拿着微薄的工资,号称为了理想而奋斗。

软件民工,其实有点高抬自己了。其实我们除了衣服领子看着比农民工干净点外,我们内心的压力比农民工高多了,我们必须天天学习新语言新算法新架构,这种痛苦也只有程序员才能够理解。

但是既然是为了理想而奋斗,就要有很多的人为此而前仆后继的付出。本人用切身的体会希望有志于做游戏程序员的人少走弯路,或者给新人一个进入游戏行业的方向。

也许你正在为成为一个游戏程序员而找不到方向,因为你喜欢游戏,希望也能制作自己的游戏,但是你无从下手,更无人给你指点迷津,那就希望我写的东西对你有点帮助,有帮助了就顶一下。

要成为一个游戏程序员,首先你必须成为一个程序员,否则那是空谈。只有你成为了一个“程序员”,你才有可能成为一个“游戏程序员”,游戏程序员要比其他行业的程序员付出更多艰辛的努力,要学习更多的知识,面临的挑战和困难也是你无法想象的。你不进入这个行业,可能你是无法体会的。

如果你连成为一个程序员的勇气都没有, 那肯定无法成为一个游戏程序员了。一个合格的游戏程序员一定是一个合格的程序员,需要具备程序员的基础知识。而一个程序员,必须有扎实的数据结构,操作系统,软件工程知识。语言你还必须掌握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游戏中三维空间的寻路算法就更复杂了。总之作为一个程序员,要多动手写代码,调试代码,没有什么捷径可走。


推荐几本个人感觉不错的游戏书籍

Windows游戏编程大师技巧

3D游戏编程大师技巧

这两本书从底层的原理入手讲解了游戏开发的基础知识,对游戏入门者非常实用。


分享到:
评论

相关推荐

    给年轻程序员的建议

    下面就是我认为的成为一名优秀的程序员需要做的一些事情。记住,想成为一名程序员,很多条路可  本文是从Advicetoyoungprogrammers这篇文章翻译而来。  偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,...

    C++游戏开发 源码

    本书系统介绍使用C++进行游戏编程的概念、方法、技巧、实例以及综合运用。本书共分为五部分,第一部分简要介绍编写游戏所需的工具和...既适合作为有志于成为游戏程序员的读者的基础读物,也可用作游戏程序员的参考书。

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、...

    如何成为编程高手的八大奥秘

    本文提供了怎样在学习过程中注意培养自己的某些方面,达到成为一名优秀的程序员的梦想

    程序员考试刷题-VirtualFESB:OpenGL游戏引擎和用它制作的教育游戏

    程序员考试刷题虚拟FESB 描述:OpenGL 游戏引擎和用它制作的教育游戏 ...你是一名学生,你需要在学院大楼里找到所有的考试。 每场考试有 7 道随机题。 至少解决 4 个才能通过测试。 解决所有考试以完成游戏。 截图预览

    计算机游戏程序设计(“游戏”相关文档)共25张.pptx

    由于游戏是一种集剧情故事、美术、音乐、动画、程序等技术为一体的复合艺术,所以一名游戏从业人员必须兼具软件行业专家和艺术家的创造力,而当前符合这一要求的人才却是少之又少。因而专家呼吁,培养游戏软件专业...

    C语言扫雷游戏一步一步的实现

    作为C语言的初学者,通过逐步实现扫雷游戏,可以更好地理解和掌握C语言的基本语法和编程逻辑...因此,如果你想真正掌握C语言,不妨尝试挑战自己,亲手构建自己的扫雷游戏——这可能是成为一名优秀的C语言程序员的关键!

    程序员刷题app排行榜-BGG-hotness:一个Android应用程序,显示来自BoardGameGeek的最新热度排名

    程序员刷题app排行榜BGG Hotness 安卓应用 一个显示来自 ...除了是一名程序员,我还是一个棋盘游戏的忠实粉丝。 我在学校最后一年的某个时候发现了现代棋盘游戏。 从那以后,我建立了一个不小的游戏收

    程序员为什么还要刷题-GCS17Proj1-1:项目1-1游戏开发贴花

    名程序员。 该项目分为 3 个部分。 每个团队都必须做编辑和编程部分,如果你的团队中有美工,你只需要做美术部分。 您可以通过广场的“寻找队友”帖子找到合作伙伴。 ##Grade 细分:要求:55% 复杂性:25% 创造力:...

    java程序员刷题软件-full-stack-employee-guide:想成为一名全栈员工吗?浏览这些资源玩得开心

    想成为一名全栈员工吗? 浏览这些资源玩得开心。 最重要的是,这里列出的所有东西都是免费的(如免费比萨饼)。 随意进行更改。 受此媒体帖子的启发,其中包括: #The Plan Layout 理想情况下,一个人应该是编码方面...

    玩游戏游戏学编程 CodeCombat.zip

    你要扮演得是一名非常有力量的魔法师,要通过你写代码魔法,让你的人去消灭怪兽(其实是怪物)。看起来像是塔防游戏——《王城保卫战》,但却是一款即时战略游戏。每关都会有对话讲解如何操作(遗憾没有中文)左侧是...

    GPT 只用 1 分钟!就帮我开发好了C语言贪吃蛇小游戏

    假如你是一名程序员,能帮我做些什么事? GPT:作为一名程序员,我可以帮你完成以下任务。 1、开发软件或应用程序:我可以使用各种编程语言和工具来开发各种类型的软件和应用程序,包括桌面应用程序、Web 应用程序...

    Voider:Jmonkeyengine 3D游戏

    Voider 该游戏正在创作中。 这样做的基本思想是创建一个刺客信条Unity副本,但差别很小。 它是用Java编写并在Blender中设计的。 目前,登录,加载屏幕,游戏... 团队由一名程序员和一名设计师负责徽标和搅拌器模型。

    box2d中文教程

    Box2D 是一个用于游戏的 2D 刚体仿真库 程序员可以在他们的游戏里使用它 它可以使物体的运动 更加可信 让世界看起来更具交互性 从游戏的视角来看 物理引擎就是一个程序性动画 procedural animation 的系统 而不是由...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    所以我们相信,XML做为一种先进的数据处理方法,将使网络跨越到一个新的境界。 六. XML的严格格式 吸取HTML松散格式带来的经验教训,XML一开始就坚持实行"良好的格式"。 我们先看HTML的一些语句,这些语句在HTML中...

    java程序员刷题知乎-CodingTrivia:CS-441团队项目KeremGurses、UgurcanDemir、BirkanAk

    java程序员刷题知乎编码琐事 ...要成为一名成功的程序员,学习计算机科学、软件工程、网络创建和互联网技术。 如果您想成为前端或后端开发人员,或者只是想增强您的编码技能,那么玩琐事是一种既有趣又简单的方法

    Box2D用户使用手册

    程序员可以在他们的游戏里使用它,它可以使物体的运动 更加可信,让世界看起来更具交互性。从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让...

    Box2D入门必备书籍

    程序员可以在他们的游戏里使用它,它可以使物体的运动 更加可信,让世界看起来更具交互性。从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让...

Global site tag (gtag.js) - Google Analytics