c++游戏开发流程

来源:互联网 发布:竞品分析知乎 编辑:程序博客网 时间:2024/04/28 15:13

 面对群里很多兄弟不太了解客户端到底学到什么程度可以工作,那么我简单介绍如下。
     游戏客户端工程师需要掌握什么课程呢,大概流程如下,

      游戏客户端是用来运行游戏的程序,是制连接网络游戏的终端服务器,使玩家可以登陆到游戏。那么作为一个游戏客户端工程师需要掌握哪些知识就是下面说的:

  
  游戏客户端,游戏库客户使用端,相对于游戏服务端的另一端,服务端是为游戏数据库服务的,客户端就是游戏数据使用端。而你要让自己达到所谓的客户端工程师这个称号必须学会以下几个地方,当然比较基本知识不用说了,你不懂那些下面的估计也还没全懂。那么如下
  
  1、熟练掌握C++,STL、WindowsAPI,以及windows编程
  
  2、熟练掌握数据结构和常用算法,设计模式,计算机图形学
  
  3、熟悉DirectX或OpenGL
  
  4、研究过任意一款开源图形引擎者
  
  5、熟悉网络编程和一种脚本语言
  
6、有游戏客户端实战项目开发经验

满足以上估计你感觉就不同了




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


1、基础知识
首先是编程语言。现在游戏开发的主流语言是C++。C++是一门复杂的语言,学了这么多年,我都不敢说自己精通C++。要想用好它必须付诸长时间的努力。需要特别注意的是STL是C++中非常重要的部分,不要忽视对它的学习和使用。


然后是操作系统及其API相关的知识。要想开发出在某个操作系统上高效运行的程序,对操作系统有深入的了解是必要的。我主要在Win32下开发,对其他平台接触较少,举例来说FileMap,IOCP都是操作系统特有的功能,用好这些功能可以使程序发挥出操作系统更多的功能。还有一些细节,如果不了解就很容易出问题,例如DLL链接的问题。

软件工程知识。不要只顾着低头编程,要注意你所在的项目,要很好的和别人沟通。无论把自己定位成技术高手还是技术领导者,都需要学习软件工程的知识。



丰富的游戏经验也是很重要的。如果你极少玩游戏,那么你在一个游戏开发的团队中是很难与别人交流的。例如,有人会说我希望镜头效果象《古墓丽影》那样,如果你没有玩过类似的游戏是很理解的。你甚至连策划案都看不懂,或者你认为你看懂了,结果做出来的东西完全不符合游戏的常理。所以,你至少应该玩过主流的游戏,特别是你正在制作的同类型的主流游戏。对于一个不是真正喜欢游戏的,这一点是很难做到的。


2、客户端方向
术业有专功,游戏越做越大,需要的知识越来越多,一个人很难对所有方面都学的很深入。如果你想致力与客户端引擎技术方面,那么下面这些知识都要学。
一些图像处理技术。例如颜色混合,图像平滑,轮廓查找,无论你是做2D游戏还是3D游戏,这些东西都用的着。
3D图形学基础。不要以为渲染工作都丢给显卡去做了,你就可以不管其中的理论,要想做3D引擎,基础知识掌握好很重要。
熟悉D3D。现在主流的3D API应该是D3D,必须要掌握,没什么好说的。
3DS MAX插件开发。顺便了解一下3DS MAX的体系结构,肯定很有好处。
编辑器开发,一个游戏需要很多内部的工具。甚至可以说需要一个内容制作平台,一般要用到MFC,也可以用C#开发。
3D引擎技术,这是最吸引人的一部分了,包含的内容很多例如,碰撞检测,Shader编程等等,很多很多。建议先找一个开源的看看,OGRE就是个不错的选择。
人工智能和物理模拟。这两个方面往往不被重视,特别是在网络游戏中。实际上,如果你实现了一个很好的群体行为,或者刚体运动模拟,效果是很惊人的!


3、服务器方向
不太懂 


4、其他
脚本语言。前几年大家还都在实现自己的脚本语言,现在好像用Python或者Lua的成了主流




0 0