成为游戏编程必备的知识

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

很长时间以来,游戏产业不允许新的血液加入,因为每个职位都要求申请人有2年以上的经验。但是现在是加入游戏产业的最好的时机。因为研发队伍的急剧 增长,有经验的人很难找了,所以越来越多的公司从大学里招人。不管你上的是什么大学,你都有机会在游戏产业里找到一份工作。你需要熟悉以下领域。

    数学 - 对于视频游戏开发,这个非常重要。不,你不需要去记如何求一个绕x轴旋转的曲面的表面积。 你需要有很好的线性代数技能。如果你不知道点乘的公式(a dot b = a.x * b.x + a.y * b.y + a.z *b.z )和它的几何意义( ¦a ¦ * ¦b ¦ * a和b夹角的余弦), 你是不可能获得工作的。你需要知道如何把一个向量投影到另一个向量上(a到 b的投影 = (a dotb)/ ¦b ¦^2* b) 以及一个平面上。你需要知道向量积(叉乘)是什么(a x b = [a.y *b.z – a.z * b.y, a.z * b.x – a.x * b.z, a.x * b.y – a.y * b.x]),以及它的几何意义(一个和两个向量都垂直的向量,长度等于原来两向量的长度乘以两向量的夹角的正弦)。 我记忆向量积公式的方法是把i,j,k 放在矩阵的第一行,然后是第一个向量,最后一行是第二个向量, 然后计算这个行列式。 如果你不知道什么是行列式或者如何计算一个行列式, 这可不是个好的信号! 你应该知道一个矩阵的逆以及如何计算,你应该知道如何转置一个矩阵。 你应该知道什么是正交矩阵以及求它的逆的简单方法(求它的转置就行了)。 熟悉各种坐标空间之间的转换是很重要的。 碰撞检测函数背后的数学原理也很需要学习。 你如何找到一条光线和另一条光线的碰撞点?一个平面呢?一个球面呢? 什么是四元数(quaternions)? 你如何对它们做一些常见的操作? 如果你的数学已经不那么熟了或者不知道如何开始, 我推荐 "3D Math Primer for Graphicsand Game Development "。我读过以后发现它很好地覆盖了所有的基础知识。 我没有读过别的书来做比较, 但是这本书肯定会给你打下很好地基础,同时它也是很多游戏开发中常见数学运算的参考资料。

    物理 - 你需要对各种抛物体的公式非常熟悉。如果你不能记住或推导出d = v0 * t + 0.5 * a * t^2, 你肯定会在面试或编程测试中遇上麻烦。 你应该能轻松解决任何涉及到抛物体和重力的问题。不论未知量是重力加速度, 发射角, y方向速度, xz方向速度, 时间,距离, 或其他任何可解的组合,你应该能没有任何困难的求出解来。你应该熟悉弹性和非弹性碰撞下的动量和动能变化。 滑动和摩擦力也是你应该理解的概念。

    C++ - 虽然一些地方还在用c多过c++,但是C++已经是游戏编程中向被广泛接受的几乎标准的语言。 C++的知识是非常重要的。因为如果用的不好, 你会写出非常糟糕的代码。首先,你应该知道什么是虚函数,以及如何使用它。 理解虚函数表是如何工作的也同样重要,这样你就能够理解当你调用虚函数时需要的额外步骤,这些步骤会降低性能(每个对象都有一个隐藏的虚函数表指针[具体 在哪取决于编译,并且对指针做类型转换时,this会有变化],这样调用一个虚函数,你需要根据这个指针找到那个函数表,然后跳到它所包含的函数指针所指 的函数里,这会降低cache的效果)。 知道如何有效地使用模板和操作符重载也很重要。 关于C++,好的OO设计是最重要的。 最常用的一些类层次很深而且很费解,你最后需要做可怕的虚拟继承或者为一些不需要的变量浪费内存。

    人工智能 - 我在大学里学习了标准的人工智能课程,但是这些东西没有一点在游戏AI中是可接受的。 教的很多算法很难实现或者对游戏而言不现实。 你知道什么是有穷状态机就够了。 绝大部分游戏使用有穷状态机, 而那些不用这个的游戏,使用的是简单的基于规则的系统。 "白与黑 "(包括它的续集)是我能想到的唯一的使用了其他东西(神经网络)的例外, 而且很多玩家对它的结果并不满意。 如果你想找本书, 我推荐 "AI Game Programming Wisdom 3 "。 里面有两篇特别优秀的文章,一个是关于有趣的游戏AI设计,另一个是关于行为合成。 严肃的说,虽然书会很有帮助,但是学习游戏AI的最好的方法是实际做一个。

    图形学 - 这是一个重要的领域。 如果图形是你的主要感兴趣的方向,那么你应该知道的比这里说的多。但是,不论你想要在这个产业里做什么职位, 你应该知道一些基础。 你需要知道什么是渲染状态以及通常都有哪些渲染状态?(cull, z write, ztest之类的)。什么是标准的光照方程?(I =ka*Ia + Ii*(kd*(L dot N) + ks*(R dot V)^n) )。 材质映射是如何工作的?材质的wrapping和clamping有什么区别? 如何高效的渲染程序中一组几何体?(按照渲染状态组织你的几何体,按照你的硬件最快的primitive分批,饭后发给图形卡)。你需要知道 skinning 是如何工作的。 如果你对书感兴趣, 我推荐 "3D Computer Graphics "。 这个不是专为游戏写的,多以它包括了一些在游戏中不现实的技术。但是,我想一个总体的了解是有帮助的,而且,随着游戏硬件的发展, 那些现在看来不现实的技术会变的普通的。

    工具开发 - C# 看来在游戏业界获得了不少地位。所以你也应该让你熟悉一下C#。C#在加快工具的开发上表现出不少优势。很多人说工具可以制造下一代的游戏, 我同意这一点。 拥有的工具越多,团队花在可以被轻易自动化的工作上的时间就越少。 可能你的团队有10个美工, 花程序员的一个人年来开发一个可以给美工每天省15分钟的工具并不值得,但是如果你有50个美工,那这就肯定值得了。C#可以快速的创建GUI,而且和其 他一些能简化创建GUI的方法不同, 这些GUI很好理解和使用,因为他们是标准的windows组件,允许你方便的设定快捷键,就像其他Windows程序一样。 Visual Studio 里的Form Designer 真的很好用,而且C#的metadata和event驱动的设计使得工具的开发轻而易举。你最好也对mfc有基本的了解,因为可能面试你的开发人员会有点 落后与时代。如果你有兴趣学习很多关于这些技术是如何工作的(这会让你写出更好的C#代码),我强烈推荐 "Applied Microsoft 。NET Framework Programming ",我在空闲的时候读这本书,然后我就不能放下了。我一章一章不停的读,因为我是那么激动的像学习下一章的话题了。记住, 这本书不会教你各种framework里的类和这些类是干嘛的。它讲的是这个语言的核心机制,它是如何工作的。 这本书也不是专门为C#写的。 它告诉了你如何用VB。net做一些在C#里不能做的是,它还提供了用MSIL(MicrosoftIntermediate Language, 所有。net语言的编译器都会编译出这种字节码)写的例子,实现一些不被任何一种。net语言支持的功能。

    操作系统 - 虽然这个看起来和这个和游戏开发相对而言不是太相关, 但是我很高兴我在大学学习了操作系统的课程,因为我经常会用到从这门课学到的知识。 关于操作系统的知识非常重要,因为它在幕后为程序处理着很多重要的工作。特别是由于下一代的游戏终端和双核PC上的多核特性,多此案成的知识是至关重要 的。对虚拟内存的了解当然是很有用的。关于文件系统,内核态和用户态切换,分页的知识对PC游戏开发更为有用, 不过随着一代代的发展,终端也在变的越来越像PC。所以,知道这些东西没有坏处。

    编译器 - 虽然知道如何写一个分析器可能并不重要, 但重要的是知道你的代码是如何编程汇编代码的。这样你就能明白如何写出更优化的代码。你显然必须熟悉把你写的程序变为可执行文件的4个步骤:预处理、编 译、汇编和链接。 编译器如何处理常量的? 很好的理解宏和知道如何用它来简化一些常用的操作是很重要的。 知道你正在用的编译器的调用约定,因为参数超过一定数目的时候,会导致它们被放在栈上而不是在预留的寄存器里。 调用约定的知识在你用汇编写函数的时候也是有用的。

    这些只是一个作为一个游戏程序员,你应该具备的各种知识和技能的入门介绍。 对每个领域,根据你的工作类型,总会有更多的你需要学习的东西。 知道一些实际使用的知识之外的东西总是没有坏处的。

 

转自 http://job.17173.com/content/2009-05-21/20090521114438894.shtml

编程小白如何成为大神 阅读详情

相关推荐

游戏编程所需要的知识

C的话其实比较好学,谭浩强的大学C教材基本上就可以满足需求,只要掌握指针部分C语言就可以算入门了. 接下来就是C++,国内外大部分的C++书籍我不说都看完,看个大概是有的,c++ primer, C++之父的 c++程序设计语言,大学教材 c++程序语言设计,范磊从新手到高手:C++全方位学习 c++ primer plus,C++沉思录,不知道是我自己笨还是理解能力有问题,反正我是一本都看

Ascii_d的专栏 2621

游戏编程——需要精通些什么?(转)

  很长时间以来,游戏产业不允许新的血液加入,因为每个职位都要求申请人有2年以上的经验. 但是现在是加入游戏产业的最好的时机. 因为研发队伍的急剧增长, 有经验的人很难找了, 所以越来越多的公司从大学里招人. 不管你上的是什么大学,你都有机会在游戏产业里找到一份工作. 你需要熟悉以下领域.    数学 - 对于视频游戏开发,这个非常重要. 不,你不需要去记如何求一个绕x轴旋转的曲面的表面积. 你需

wm_cindy的专栏 1012

一个游戏程序员的学习资料

想 起写这篇文章是在看侯杰先生的《深入浅出MFC》时,突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码参考。一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值。我的原则是只写自己研究过或准备研究的资料,所以内容无 疑会带上强烈的个人喜好色彩,比如对网络,数据库等重要方面完全没有涉及。因为自己主要对三维图形...

dogasshole 982

游戏开发需要具备那些知识或技能?

游戏开发需要具备那些知识或技能? 这是我之前在csdn上发的一个贴的名字,今天忽然想起来进行了整理。希望看到关心这方面的人有所启示。 下面是csdner的回复: freezezdj: 游戏分客户端和服务器端。 hoya5121(老李): 与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,...

weixin_34413103的博客 507

游戏编辑器制作MOD脱颖而出

【导读】 立志成为游戏策划的你,和千千万万的游戏玩家的不同之处在哪? 是你玩过很多的游戏?别人也玩过 是你游戏打得比别人好?也许电子竞技更适合你 是你对游戏的理解比别人深,知道如何设计出更好玩的游戏?嗯,是的,可是怎么证明呢? Action speaks louder than words! 最好的证明就是拿出你自己制作的游戏MOD,这胜过一万字的文字简历。可做mod难吗?不难,需要的只是你的一

痞子龙3D编程 1万+

怎么样学习开发游戏呢?

怎么样学习开发游戏呢? 很多人会问怎么样学习开发游戏呢?比如想开发像《星际争霸》、《帝国时代》或者《大话西游》那样的游戏。其实开发游戏就是一件努力工作,努力工作,更努力工作的事情,没有其它什么秘密可言了。 当然,要想成为一个游戏开发人员,就得先成为一个很好的程序开发人员。当你成为一个很好的程序开发人员时,就可以考虑学习游戏开发了。要想成为一个非常好的游戏开发人员,最重要的一点,就是需要...

yuanjinxiu 154

关于学什么编程语言可以找到工作

学任何一门编程语言都找不到工作编程语言本身只有语法,和一些简单地使用。比如说,你想显示一张图片你不知道怎么显示,虽然编程语言的语法你都懂,但你只知道printf,输出。所以很多人感觉学会了C/C++但是就是做不出东西来。 首先,我们要选定一个行业,比如说游戏行业 接着,我们要知道这个行业需要什么编程语言 然后,我们需要平台相关的知识 这个时候你就知道我要在...

weixin_30952535的博客 108

成为优秀的程序员真不简单

真正精通一门语言,特别是c++这样的复杂语言,不简单。况且可能需要熟悉3,4种语言,而且要防止惯性的干扰,不简单。精通数据结构和算法以及优化,正确分析选择问题所需要的数据结构和算法,不简单。熟悉自己工作的平台的方方面面,从硬件到操作系统到编译器到各种开发库,不简单。能实用的运用设计模式去设计软件,系统结构清晰合理,开发高效,易维护,不简单。编写的代码就像艺术品,增一行则多,减一

兵临城下专栏 459

推荐一些有趣的在线编程游戏

1.Robocode 让坦克们互相博弈的游戏,你可以看到它们飞奔,碾碎一切挡道的东西。机器人配有雷达与火炮,选手在躲避对手进攻的同时攻击对手,以此来较量得分的多少。这个游戏很有意思,曾经令我沉迷… 你可以用Java、Scala、C#编程语言,编写人工智能程序,驱动机器人。 2.Code Combat Code Combat是一款学习编程的角色扮演游戏。每一关都用任务的形式设立目标,用实时的反馈...

九章算法的博客 2万+

关于游戏运营策划管理相关必备知识

本文帮朋友发,作者:罗笄。游戏运营管理或者游戏策划涉及大量的相关知识,本文归纳整理总结必备知识,归纳成体系。 网易互娱有什么独特的的特点? 与腾讯游戏、暴雪有什么区别? 旗下有哪些代表性的游戏? 客户特点、游戏模式、用户编存? 日活率是什么?如何进行市场推广? 不同游戏的优劣势,发展方向? 游戏满足人的什么需求?有哪些设计原则? 目录 一、网易互娱的主要游戏有哪些? 1.1 端游...

祥瑞的技术博客 9533

如何学好游戏编程

今天偶然发现一篇介绍如何学好游戏编程的文章,相见恨晚呀,特转载,转帖地址:http://new.qzone.qq.com/79134054/blog/1226580538#!。            《如何学好游戏编程》 此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰           ——阿哲VS自己  自序 这篇文

rabbit729的专栏 3万+

【UE 游戏编程基础知识

文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。

hhw_hhw的博客 1369

用c++做游戏开发至少要掌握哪些知识

关于【用C++做游戏开发】 一、基础知识 二、必备知识 三、C++语言基础‌ 四、数据结构和算法 五、GUI库 六、数据库知识 七、系统编程和并发处理九、设计模式和库的使用 八、网络编程 九、设计模式和库的使用

zhaoylzy的博客 1522

CodeCombat终极指南:如何在游戏成为编程大师

想要通过游戏化方式轻松掌握编程技能吗?CodeCombat作为一款创新的**编程学习游戏**,让编程学习变得像玩游戏一样有趣!本指南将带你深入了解这个强大的学习平台,从基础入门到高级应用,一步步教你如何在这个游戏成为真正的编程大师。🚀 ## 为什么选择CodeCombat学习编程? CodeCombat采用游戏化的教学方法,将枯燥的代码编写变成刺激的冒险任务。你不需要面对沉闷的黑白代码编辑

gitblog_00317的博客 1074

如何成为一名少儿编程老师?成为少儿编程老师必要条件

作为一名编程老师,建立个人品牌可以提高自己的知名度和影响力。除了掌握编程知识和教学方法,编程老师还需要具备一定的教学能力。可以通过参加教育培训、观摩其他老师的课程、实践教学等方式提升自己的教学能力。因此,编程老师需要熟悉少儿编程教学方法,如游戏化教学、项目式教学等。编程教育是一个不断发展的领域,编程老师需要关注编程教育前沿,了解最新的教学方法和技术。可以通过参加编程教育机构的教学实践、志愿者教学、开设编程课程等方式积累经验。编程教育是一个不断发展和变化的领域,编程老师需要不断学习和提升自己的知识和能力。

chinaherolts2008的博客 1352

计算机必备四大游戏,超大型游戏必备插件

不知道怎么下载?点我游戏介绍游戏必备插件即是游戏运行所必须要安装的程序,如果没有这些程序,某些游戏可能无法正常运行。如果某些大型游戏下载后,点击快捷方式不能正常运行,请安装插件包中的所有插件,一般问题可以解决。本款资源已经更新,加入全新游戏运行必备组件,帮助玩家顺利体验游戏:点击下载运行库大全Visual C++ 2005 运行库(x86) 8.0.61187Visual C++ 2005 运行库...

weixin_29580355的博客 3780
上一篇: MIDP2.0 Game API简介
下一篇: 开始Admob广告盈利模式详细教程
Vicent85
博客等级 码龄20年 24粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值