2d游戏物理资源

时间:2008-10-03 02:13:12

标签: c# f# 2d physics

我正在寻找一些很好的参考资料来学习如何在游戏中建模2d物理。我寻找图书馆为我做这件事 - 我想思考和学习,而不是盲目地利用别人的工作。

我已经做了很多谷歌搜索,虽然我已经在GameDev等上找到了一些教程,但我发现他们的教程难以理解,因为它们写得不好,或者假设一定程度的数学理解我还没有。

具体而言 - 我正在寻找如何模拟自上而下的2D游戏,有点像坦克战斗游戏 - 我想准确地模拟(除其他外)加速度和速度,'组件的热量积累, “模型和等级界限之间的碰撞,以及导弹型武器。

网站,推荐书籍,博客,代码示例 - 如果有助于理解,欢迎所有人。我正在考虑使用C#和F#来构建我的游戏,所以这两种语言中的代码示例都会很棒 - 但是不要让语言阻止你发布一个好的链接。 =)

编辑:我并不是说我不理解数学 - 更多的是我不知道我需要知道什么才能理解所涉及的系统,并且不要我真的知道如何找到能以可理解的方式教会我的资源。

8 个答案:

答案 0 :(得分:19)

这是我几年前收集的一些资源。值得注意的是Verlet集成。 我还包括我当时发现的一些开源和商业物理引擎的链接。这里有关于此主题的stackoverflow文章:2d game physics?

物理方法

<强>图书

  • "Game Physics Engine Development",Ian Millington - 我拥有这本书并强烈推荐它。本书从头开始用C ++构建物理引擎。作者从基本粒子物理学开始,然后添加“运动定律”,约束,刚体物理等等。他一直包括详细记录的源代码。

物理引擎

答案 1 :(得分:7)


(来源:oreilly.com

O'Reilly的

Physics for Game Developers

答案 2 :(得分:6)

根据经验,实施2D物理引擎非常困难。我将详细介绍我在创建引擎时采取的几个步骤。

  1. 碰撞检测。即使您没有处理3D世界或网络模拟,碰撞检测也可能是一个难题。对于2D物理,你肯定想使用Separating Axis Theorem。一旦你实施了SAT,你就完成了发动机动力学部分的一半。

  2. 运动学/动力学。克里斯·赫克尔写了一篇优秀的online resource,它逐步引导我完成碰撞响应。

  3. 其他一切。一旦你完成了碰撞检测/响应,就可以在引擎中实现你想要的其他一切。这可能包括摩擦力,接触力,关节以及您能想到的任何其他内容。

  4. 玩得开心!创建自己的物理模拟是一种非常有益的体验。

答案 3 :(得分:3)

这是一个很棒的教程,演示了使用闪存的2D物理概念,并不是特定于闪存。 http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

答案 4 :(得分:3)

即使你想从下到上学习它,一个编码和记录良好的开源物理库包含的信息远远多于一本书。我如何处理情况x ...在文件中查找可能比纸质索引更快。

原始回复:

什么,没有提到Box2D?它是一个暴雪员工的开源项目,有一个很好的社区,而且很好。

在我对Box2D的简要体验中,将它与Torque Game Builder集成,我发现API干净利用,文档清晰,它支持我所期望的所有物理对象(特别是关节是一个要求),以及社区看起来很友好和活跃(2010年初左右)。

根据论坛海报判断,管理人员似乎也接受了来源捐款(没有携带许可证行李)。

这是基于岛屿的求解器看起来非常快,正如我对它的声誉所期望的那样,而不是我做过任何重大的性能测试。

答案 5 :(得分:2)

F#有一个名为计量单位的功能,可以为您进行维度分析,如果您弄错了则会提供错误。例如,如果你说:

let distance : float<meters> = gravity * 3.0<seconds>

这会产生编译错误,因为重力是&lt;米/秒^ 2&gt;而不是&lt;米&gt;。此外,由于F#只是.NET,您可以在类库中编写数学/物理代码,并从C#中引用它。

我建议您查看这些博客文章以获取更多信息:

答案 6 :(得分:1)

This is a great resource用于编写第一个引擎。它是3D的,但很容易转换为2D。我知道至少有一家大公司在他们的内部引擎上遵循本教程,我个人已经按照他自己的引擎的步骤。他解释了基于弹簧/脉冲的物理学中的所有基本物理概念,并向您展示了如何编写自己的整合器。

答案 7 :(得分:0)

The F#.NET Journal发表了两篇关于此的文章: