足够简单的问题:为了成功,所有游戏程序员都应该掌握什么数学?
我并不是在谈论在游戏编程的利基领域中渲染数学或任何东西,更具体地说,甚至是游戏程序员都应该知道的事情,如果他们不这样做,他们可能会发现它很有用。
注意:由于没有一个正确的答案,所以这个问题(及其答案)是社区Wiki。
另外,如果您想使用精美的乳胶数学方程式,请随时使用http://mathurl.com/。
足够简单的问题:为了成功,所有游戏程序员都应该掌握什么数学?
我并不是在谈论在游戏编程的利基领域中渲染数学或任何东西,更具体地说,甚至是游戏程序员都应该知道的事情,如果他们不这样做,他们可能会发现它很有用。
注意:由于没有一个正确的答案,所以这个问题(及其答案)是社区Wiki。
另外,如果您想使用精美的乳胶数学方程式,请随时使用http://mathurl.com/。
Answers:
还有许多其他有用的数学形式,但绝对最低限度您需要了解以下内容:
这些是非常基本的,但是如果您不知道这些,就连成为程序员(更不用说游戏开发者)也没有机会了。
游戏世界中的对象用矢量表示。向量表示诸如对象的位置,外观方向和速度之类的东西。向量数学计算(例如点积,叉积和向量归一化)至关重要。
如何移动游戏对象?新手可能会说:
“我知道!我会做:” object.position.x++
。
不不不。您需要使用向量计算。对象需要一个可用于移动对象的位置,方向和加速度矢量。如果您是新手,就会陷入难以维护的混乱之中,如何使它向与世界XYZ轴不对齐的方向移动?
游戏使用四元数的主要原因是因为它们在空间效率上几乎与Euler角一样快,而又不受万向节锁定的影响。当任何欧拉角绕任何轴旋转90度时,云台锁定就会开始:您立即失去自由度。四元数通过添加第四维来解决此问题。如果卡在欧拉角上,则必须限制一个轴的旋转角度不得超过〜89度。
如果您要为游戏中的物理反应编写数学程序,那么参加物理课将不是一个坏主意。
您需要了解物理方程的原因:
如果您使用物理引擎(或内置了物理引擎的游戏引擎),那么您对物理知识的了解就会很少。不过,知道何时需要弄脏手还是很不错的,因为物理引擎无法正常运行。
我梦想着有一天,游戏开发就像艺术品一样受到数据驱动。我看不到它在地平线上的任何地方,因此现在知道一些数学似乎是必要的。
只要您可以运用数学,数学就像技术,越多越好。
这是我看到的重要性顺序。
我可以继续前进。了解的越多越好,但是学习大量的数学知识并不意味着您会做一个很棒的游戏,但是可以有所帮助。
勾股定理是一个非常基本的定理。也称为距离公式。
其中a
和b
是直角三角形的边缘,c
是斜边。这意味着为了找到向量的长度,您可以执行以下操作:
另一个有趣的注意事项是,如果您只是比较距离,则不必取平方根(这可能会比较昂贵)。这就是为什么大多数框架的向量具有“距离平方”或“长度平方”的原因。
sqrt(V dot V)
它的长度。因此,两点之间的距离是:sqrt((A-B) dot (A-B))
即使您不是图形专家,您也将有80%的时间使用向量和向量数学。它们是我们有趣的肉酱的洋葱。
牢牢把握+
,-
,*
,和/
。没有它们,您将完全陷入困境。
是的,游戏编程往往需要大量的数学运算。您需要什么数学取决于您所从事的工作。当然,就像所有编程一样,基本算术也是必须的。除此之外:
几何对于任何图形工作都至关重要。如果要在屏幕上显示事物,则需要了解坐标系。而且,如果您想沿基本方向以外的任何方向移动它们,那么您将完全迷路,而无需牢牢掌握正弦,余弦和向量(基本触发)。而且,如果您需要在3D模式下工作,则几何形状和Trig要求会变得更加复杂。
如果要建模任何种类的远程现实物理学,则需要进行微积分。(毕竟,这是促使牛顿发明微积分的原因。)
任何种类的概率计算都需要统计知识和概率论知识,才能获得理智的结果,而又不会出现大量的反复试验。
可能还有更多,但这就是我想到的事情。
s=u.t + a.t.t/2
。您需要通过三角函数来获得初始速度(u)。
二元和十六进制编号系统,以及如何将它们转换为十进制数/从十进制数转换。
尽管您通常不需要与 原始二进制数,但是它们经常用于Flag变量,这些变量需要布尔逻辑和移位。
十六进制不是很重要(除非您要处理0xDEADBEEF),但是至少,您需要识别何时使用它们以及原因。
Boolean
和binary
混淆。不确定它们对于游戏编程是否绝对必要。
我认为回报矩阵是一个非常必要的工具。当游戏达到一些有趣的零和公平竞争平衡时,它们通常会更有趣,并且收益矩阵可以帮助您量化复杂情况下的收益。我猜这篇Wikipedia文章和其他文章一样好,并且获得了基本的必要概念:http : //en.wikipedia.org/wiki/Normal-form_game
除了正弦和余弦(我遇到的50%至75%的程序员都不知道如何使用)之外,还要学习神奇的反正切函数以及如何使用它来获取任何矢量的角度。
atan2
需要这样做,因为这可以自己处理象限。
制作游戏是为了将“真实”生活带入虚拟现实。最好多了解现实世界/宇宙,而不要少:)。数学只是工具。如果您正在制定计划,那么您也必须花时间研究计划。
编辑:我看到了一些误解:) ..我认为您需要统治的一组数学习题取决于您要描述的具体事物。谁都不知道。更好的方法是做到这一点。并不是一开始就学习所有东西,而是学习一点点,使用,学习,使用等。然后,如果您有良好的计划,则可以在开发过程中做到。
简单的答案:很多!
详细答案:
在大多数情况下,算术,初等和线性代数都是Trig,如果您要制作3D游戏,则必须进行微积分和物理(物理需要微积分)!