当前位置 : IT培训网 > IT培训 > 交流分享 > 游戏编程要学什么 包头游戏编程学习班在哪里

游戏编程要学什么 包头游戏编程学习班在哪里

时间:2018-11-22 14:10:25  来源:技能培训网  作者:IT培训网  已有:名学员访问该课程
游戏编程需要的基础知识?学习就和盖楼一样,要想上层建筑牢固,你就要有坚实的基础,基础好了,才能越走越高,否则就会半途而废,这里介绍的基础是你从事游戏编程最基础,希望对于热爱游戏开发的人而言,能够有所帮助与

  游戏编程需要的基础知识?学习就和盖楼一样,要想上层建筑牢固,你就要有坚实的基础,基础好了,才能越走越高,否则就会半途而废,这里介绍的基础是你从事游戏编程最基础,希望对于热爱游戏开发的人而言,能够有所帮助与提升。

游戏编程要学什么 包头游戏编程学习班在哪里_www.itpxw.cn

  游戏编程需要学哪些知识?

  一、 数学

  数学是游戏中支柱,没有了它,任何都不要谈,在你编写你游戏的时候,你就会知道,世界抽象成一堆数学是多么的神奇,突然你会觉得以前枯燥无味的数学现在是一顿大餐,但这个是霸王餐。国外人写关于引擎方面书的人,都可以说是数学高手,他们理论和实践都很厉害,让我崇拜的不得了。大学里是你学好数学的最好机会,一定要弄明白它的现实意义,任何理论都不是凭空出来的,它一定有现实基础,这个现实基础,就可以帮助你很好理解这个理论。

  1、高等数学——微积分理论

  在游戏引擎中,很多游戏特效都是通过微积分方程来解得的,高度仿真是现在游戏的追求,真实感越强就需要越多的计算量。极限,一元微积分,多元微积分,级数,微分方程等等在游戏图形图象和物理上都有明显体现。有时一个硕士或者一个博士为了拟真一个效果要花费几个月或者几年的时间,做为一个游戏程序员,微积分到达什么层次我很难给出定义,但起码如果别人给出了原理我们能看明白,并把它实现,我觉得就很可贵了。

  2、线性代数和空间解析几何

  在大学课本中,空间解析几何是放在高等数学书里面讲的,但游戏中,它和线性代数放到一起我认为更加合适。线性代数所有知识都要掌握,在游戏中它们比微积分体现的更淋漓尽致,理解上我个人认为相对微积分更容易。

  空间解析几何主要讲向量,平面,线,体,这些东西并通过线形代数矩阵进行空间变换,最后达到游戏想要的目标。

  3、四元数

  这个在大学里面不学数学的,估计很少有人接触,它也是来用来变换空间,理解起来不是那么容易,但最常用的就是用四元数来表示旋转。我这里只是一概而过,上面任何知识在游戏中都有应用,但大学里的数学不是为了游戏而开设的,所以和游戏中用的数学在知识分列和讲解上还是有很大差异,尤其是线性代数和空间解析几何,不用担心,我在后面介绍给大家一些好的游戏书籍,对大家学习游戏编程和有帮助的。

  二、语言

  编写游戏c和c++是你首选,相对来讲C++是你更应该掌握的。

  1、其他语言为什么不是当今流行的编写游戏程序语言?

  VB,JAVA,C#,等等其他语言,并不是说它们不能做游戏,它们能做,由于语言本身设计机理的限制,只能做一些对游戏速度要求低的游戏,对于运行速度要求高的游戏,它们被判成死刑。当然这个也取决于硬件的发展,以前8bit FC游戏都用C语言和汇编来写,现在由于硬件速度提高,用VB,JAVA,C#来写这些游戏运行也是可以的,例如现在兴起的WebGame(网页游戏)。但如果你真想做游戏的话,你一定想要了解现在最流行游戏编写,C和C++是你最好的选择,也是你走上真正的游戏编程道路的重要武器。

  2、C和C++应该选择那一个?

  C和C++,这里面我还要说一说,我个人更看好C++。大家都知道C是面向过程的,而C++是面向对象的,虽然C++的面向对象特性还不是很完善,但出于对大型软件设计上的考虑,因为游戏引擎是大的工程,框架设计远远要比编程重要,一般框架设计用面向对象方式更直接,所以C++比C更有优越性性,而且如果你合理用好C++,并不见得C++比C速度慢。有时一个软件架构和软件运行上问题,很难取舍,对于大应用程序来说,都是一点点牺牲速度来获得好的架构,是利大于弊的事情,这里确实体现软件工程的重要性质。

  3、汇编,很重要吗?

  汇编语言也是你要掌握的,你说你语言学的好,但却不会汇编,是一个天大的笑话。现在很少有汇编高手能写出比编译器优化出来的汇编代码运行效率要高,因为语言的不同,思考问题的方式就会有不同,就象最早纸带机上的原语言一样(可计算性与计算复杂性就讲这东西)。如果游戏都用汇编来写,写代码效率很低,所以我们都用高级语言来写,同时还要与底层有密切联系的,C和C++担任大部分工作量。对于游戏速度频颈问题,有时我们用C和C++即使优化很多,代码精简很多,算法也改良很多,但由于语言本身设计上问题,和高效汇编来编写还是有不同的,这时就要是汇编高手来做速度最快,内存和寄存器使用最少汇编程序。所以汇编还是很重要的。

  4、其他CPU硬件指令

  这里只是说 INTER 和 AMD CPU 都支持的指令集,也是最常用指令集。MMX和SSE SSE2是游戏编程中最常用的指令集,这个指令集是 SIMD(single instruction multiple data),也就是单指令多数据流指令集,一个指令可以处理多个数据流运算。

  汇编CPU指令,一个指令只能执行一个数据流运算。

  例如:

  汇编中

  ADD EAX,EBX

  这是一个加法指令,EAX,EBX是寄存器,是32位的。这个指令就是 EAX = EAX + EBX。

  这个过程只有一个数据流相加。而SIMD思想是,如果现在有2个指令

  ADD EAX,EBX

  ADD ECX,EDX

  能不能让他们一起执行?所以SIMD 指令提供这样的功能,他用很大的寄存器,前一部分装EAX值,后一部分装ECX值,再用一个寄存器,前一部分装EBX,后一部分装EDX.

  SIMD 寄存器分成2部分[1部分][2部分]

  SIMD ADD 指令 积存器1 ,积存器2

  运算过程为 寄存器1 [1部分] = 寄存器1 [1部分] + 寄存器2 [1部分] ;

  寄存器1 [2部分] = 寄存器1 [2部分] + 寄存器2 [2部分] ;

  这2个运行是在一个SIMD积寄存器用硬件来执行ADD 同时运行的。

  这里只是说了SIMD思想,现在简单介绍下 MMX,SSE,SSE2。

  MMX寄存器是32位的,所以它可以执行4个8bit数据同时运算,也可以执行2个16bit数据同时运算,具体要看使用哪个指令,在早期没有SSE指令时,就用MMX,但MMX有缺点,它和FPU(浮点运算单元,专门执行浮点数运算)共用同样寄存器,所以当你指令有中断,从浮点运算跳到MMX运算,要告诉CPU,从MMX跳到FPU 也要告诉CPU,这样数据要临时保存,降低了处理速度。早期2D游戏经常用这个。

  现在SSE,SSE2有自己单独的寄存器可以使用,而且它们是128位的,支持4个32位整数或者浮点数同时运算。这些指令都没有分支,所以使用时效率要我们掌握,因为执行都是并行的,一个指令完成多个计算,所以即使你编写SIMD代码很差,速度也会提高几倍,游戏中经常用SIMD处理颜色和数学运算问题。在游戏速度瓶颈地方用这样的代码,公德无量。

  5、 ASM SHADER语言 和 高级SHADER 语言

  开始学游戏编程时,这个知识不一定要具备,因为你不了解3D流水线内部细节学起来还是比较困难,所当你做完“软引擎” 了解3D流水线,在学这个语言很容易,接下来的语言发挥,就靠你自己了。

  早期的游戏,所有的图形图象处理基本都由CPU来完成,然后把处理完的数据传到显存,用显卡来显示。现在的设计理念尽量解放CPU,把与图形图象有关的运算用显卡来完成。但早期显卡只支持固定流水线,所谓的固定流水线就是所有3D数据处理过程都是事先用硬件实现好的,这个过程是一个大过程,里面封状了很多小过程细节,用户只需要输入数据,显卡负责输出数据,至于用户无法干预这个大过程,小过程更是接触不到。再说的通俗一点,一个空间3D三角形要想显示到计算机屏幕上,基本要经历2个大过程,顶点处理和象素处理,顶点处理封状了很多空间变换的小过程,象素处理包括象素混合小过程。这个过程是不可以访问的,我们只能通过显卡提供的接口来控制,而且改变方式很单一。(刚接触这些可能不明白,现在你知道的不用太详细,就知道大过程是不可以干预的就可以了,或者是只有很少一部分可以干预)为了让图形图象处理更加完善话,让人们可以参与到整个3D流水线中,实现更多丰富的效果,显卡开始出现GPU单元(图形处理单元),这时的3D流水线从固定流水编成了可编程流水线,有了早期的GPU 指令,大家都称为 SHADER指令,也就是ASM SHADER,和汇编一样,这些指令都是和GPU指令一一对应的,随着硬件更新,GPU越来越强大,支持指令越来越多,ASM SHADER 从1。0 到 1。4 ,到现在3。0版本。由于ASM SHADER 用起来不方便,就象我们用汇编写程序一样,所以又出现了高级SHADER语言,有DirectX3D下支持HLSL(high level shader language)和 OPGL下支持的GLSL(opengl shader language)这些语言都是面向过程。由于硬件设计限制,这些语言不能象C语言那样随意使用,SHADER语言有自己的使用规范,大家学习时一定要弄明白3D流水线内部实现过程,再使用SHADER简直很容易。

  还有一个要说的是,GPU现在还不支持分支预测,但GPU编程语言现在已经提供了丰富的条件判断,条件判断还是会影响到速度的。

  综上所述,数学,c和c++,汇编,数据结构,基本掌握的是计算机体系结构,离散数学,编译原理,计算机网络,操作系统,软件工程,数据库,人工智能。可以说这些是计算机最基础的学科,你只有掌握了它们,无论你专研计算机哪个领域,你的基础都是足够的,游戏编程中这些学科都可以用到,我们不用每个学科都精通的要命,我们要精通的是游戏编程,也就是接触到和游戏相关的,我们有这些基础完全可以看懂,然后我们在用自己时间来去专研这些学科在游戏领域的应用。这下大家对于游戏编程开发需要学什么有了清晰的认识了吧!

  包头游戏编程培训班哪家好?IT培训网作为包头首家以游戏编程开发起步的培训机构,经过多年的努力,在当地已有一定的品碑,有一定的实力,以专业的课程传授给你最为精髓的技术,让你在一个新的领域有新突破,有新创举,包头游戏开发培训为数众多,当你选择的时候一定要擦亮眼睛,让你的学习更进一步,与成功近距离接触,就在此时。

顶一下
(0)
0%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容