zoukankan      html  css  js  c++  java
  • 游戏程序员所需的知识体系

    我见过一些朋友,他们想学习游戏编程,太过急于求成,总是一位的追求最新的技术,最高深的技术。例如一个刚刚大学毕业的朋友,我看他对于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的成了主流。

  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/cm186man/p/1561234.html
Copyright © 2011-2022 走看看