数学和游戏编程

16

我想编写比我已经掌握的基本 2D 游戏更复杂的图形 2D 游戏。我不想进行 3D 编程,只是想做更复杂的 2D 编程。在我能够学到很多东西之前,我就辍学了,所以我只有足够的代数知识来平衡我的支票账户并进行一些轻量级的二维笛卡尔编程。

是否有任何好的资源供一个注意力有限的人使用(比如我每次只能关注 20 分钟)逐渐学习如何在编程中运用数学来实现更有用的东西?


2
+1 意味着退出,你是 SO 中最酷的家伙。 - siaooo
11个回答

17

你需要精通三角学:维基百科Mathworld

即使您不想进行3D编程,2D游戏也使用向量和矩阵。(来自线性代数)

线性代数资源:维基百科Mathworld

在进行三角函数编程时,一个能够节省大量工作的要点是意识到需要使用 atan2() 函数,而不是 atan() 函数。这在确定两个点之间的方向时非常重要。

能够在各种坐标系之间移动是一个很大的优势。这需要经验。让人们困惑的两个常见问题是:

a) 大多数屏幕系统将原点(0,0)放在左上角,正 x 轴向右延伸,正 y 轴向下延伸。标准笛卡尔坐标假定第一象限的原点(其中 x 和 y 始终为正或零)在左下角。这需要程序员在某个阶段“翻转”y方向。

b) 典型的地理学将0度作为北方,正度数顺时针扫过。所有三角函数将0度作为东方,正度数逆时针扫过。

最后,即使我们倾向于使用度数,真正的库也会使用弧度。 最佳实践是将角度存储为弧度(在“数学”方向而不是“地理”方向),并在显示调试信息时进行转换。


6
我目前正在学习David M. Bourg的“Physics for Game Developers”。到目前为止,我会推荐它。它提供了数学概念,可以轻松应用于2D领域,以增强游戏体验。请注意保留HTML标签。

4

2

我一直在观看那个网站上的视频,并想,如果有人能指出哪些东西用于游戏编程,那就太棒了!所以干杯! - superlogical
游戏编程使用大量的线性代数,例如向量(以及与它们相关的任何内容:投影、单位向量、距离等)、平面(平面与向量和其他平面的碰撞)、核、跨度、子集、变换(非常多),矩阵等。 良好的线性代数资源:http://tutorial.math.lamar.edu/Classes/Alg/Alg.aspx 之后,您可以转向一些严肃的3D内容。 - vexe

2
如果您居住在美国,为什么不去当地社区大学报名参加您错过的数学课程呢?他们将提供资源来帮助需要补习技能课程和可能有学习障碍的学生。您有学习的动力,现在意识到教育的价值。想要学习并没有什么羞耻之处。去找一位学术顾问,他们会帮助您。加油吧。

1
如果你想要一个通用的数学网站,我会推荐planetmath.org。那里的文章往往比维基百科(在我看来,维基百科在数学方面有时候真的很糟糕)更具有高标准,并且比Mathworld更加用户友好。如果你是一名数学家并需要某个术语的完整正确定义,那么Mathworld是不错的选择,但对于日常使用来说,它往往过于理论化和晦涩难懂。

1

我不同意推荐《物理学为游戏开发者》这本书。

我觉得那本书相当无聊,而且我也不认为我的注意力会那么短。

我认为要想变得优秀,最重要的是掌握向量,使用三角函数来操作它们,然后在此基础上应用与你当前项目相关的物理知识。

我只是打开谷歌/维基百科,开始浏览网页,吸收一些随机的东西,当你的有限注意力变得焦躁时,再去浏览其他内容。

阅读那本书可能不会让你沉迷其中并激发灵感。


1
你可以从学习Processing!开始。
然后,继续阅读Daniel Shiffman的精彩著作'The Nature of Code'。该书也有在线版本,其中包含使用Processing.js编写的交互式示例。

http://natureofcode.com/book/

这本书涵盖了:
1. VECTORS
2. FORCES
3. OSCILLATION
4. PARTICLE SYSTEMS
5. PHYSICS LIBRARIES
6. AUTONOMOUS AGENTS
7. CELLULAR AUTOMATA
8. FRACTALS
9. THE EVOLUTION OF CODE
10. NEURAL NETWORKS

他还在Vimeo上传了视频,解释了每一章的概念!http://vimeo.com/shiffman/videos/sort:date/format:detail 如何在软件中捕捉自然的不可预测的进化和新兴属性?理解我们物理世界背后的数学原理如何帮助我们创建数字世界?本书侧重于使用Processing进行自然系统计算机模拟的编程策略和技术。
他还写了一本书,教你基础的Learning processing

http://www.learningprocessing.com/

这本书讲述了一个故事。这是一个解放的故事,是关于理解计算机基础知识、编写自己的代码、创建自己的媒体,摆脱现有软件工具束缚的第一步。这个故事不仅适用于计算机科学家和工程师,也适用于你。

0
你可能想查看有关该主题的 O'Reilly 文本。它们有很好的示例,可以让你深入了解编程是否适合你。如果你想进入游戏编程领域,最好的方法是实际开始游戏编程。只要开始并在遇到问题时查找答案(其他回复中的链接),就能更好地理解。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接