二维游戏物理资源

我正在寻找一些很好的参考资料来学习如何在游戏中模拟2D物理。 我不是在找一个图书馆来为我做 – 我想思考和学习,不要盲目地使用别人的作品。

我做了一些Googlesearch,当我在GameDev等上find一些教程时,我发现他们的教程很难理解,因为它们要么写得不好,要么假设一定程度的math理解,还没有。

具体来说,我正在寻找如何build模一个自上而下的二维游戏,有点像坦克战斗游戏 – 我想准确地build模(除其他外)加速度和速度,“组件”的热积累,模型和水平边界,以及导弹式武器。

网站,推荐的书籍,博客,代码示例 – 如果能帮助理解的话,都是值得欢迎的。 我正在考虑使用C#和F#来构build我的游戏,所以使用这两种语言中的代码示例都很好,但是不要让语言停止发布一个好的链接。 =)

编辑 :我不是说我不懂math – 我不知道我需要知道什么,以了解所涉及的系统,并不真正知道如何find资源会以一种可以理解的方式教给我。

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

物理方法

  • Verlet整合 (维基百科文章)
  • 高级angular色物理学 (伟大的文章!包括运动,碰撞,关节和其他限制)

图书

  • “游戏物理引擎开发” ,伊恩·米林顿 – 我拥有这本书,并强烈推荐它。 本书从头开始用C ++构build物理引擎。 作者从基本粒子物理开始,然后添加“运动定律”,约束,刚体物理等等。 他包含了有效的文档源代码。

物理引擎

  • 托卡马克 (开源物理API)
  • APE (Actionscript物理引擎)
  • FLADE (Flash动力引擎)
  • Fisix引擎 (另一个Flash动作引擎)
  • 简单物理引擎 (商业)

http://oreilly.com/catalog/covers/0596000065_cat.gif

游戏开发者的物理学由O'Reilly提供

从经验上讲,实现2D物理引擎是相当困难的。 我将详细介绍创build引擎时所采取的几个步骤。

  1. 碰撞检测。 碰撞检测可能是一个难题,即使你不处理3D世界或networking模拟。 对于二维物理,你一定要使用分离轴定理 。 一旦你实现了SAT,你已经完成了你的引擎dynamic部分的一半。

  2. 运动学/动力学。 克里斯·海克尔写了一个很好的在线资源 ,通过碰撞反应一步一步地走过我。

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

玩的开心! 创build你自己的物理模拟是一个令人难以置信的有益的经验。

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

即使你想从头开始学习它,一个开源的物理图书馆,编码和文件都比一本书包含更多的信息。 如何处理情况x …在文件中查找可能比纸张索引更快。

原始回复:

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

在使用Box2D的(简短的)经验中,将它与Torque Game Builder整合,我发现使用的API清晰,文档清晰,支持我期望的所有物理对象(特别是关节是一个要求),社区看起来很友好并积极(2010年初左右)。

通过论坛海报来看,pipe理者似乎也接受了来源捐款(没有携带执照的行李)。

这个以岛屿为基础的求解器似乎相当快,正如我所预期的那样,并不是说我做过任何重大的性能testing。

F#有一个称为度量单位的function,可以为您进行尺寸分析,如果发现错误,则会提供错误。 例如,如果你说:

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

这将产生一个编译错误,因为重力是<米/秒^ 2>而不是<米>。 另外,由于F#只是.NET,所以您可以将math/物理代码写入类库,并从C#中引用。

我build议你看看这些博客文章的更多信息:

  • F#中使用度量单位的简单WPF游戏
  • 安德鲁·肯尼迪的博客

这是编写第一个引擎的好资源 。 这是在3D中,但很容易转换为2D。 我知道至less有一个大公司遵循这个教程,为他们的内部引擎,我个人已经跟着他的步骤为自己的引擎。 他解释了基于春季/冲动的物理学的所有基本物理学概念,并向您展示如何编写自己的整合。

F#.NET杂志发表了两篇有关这方面的文章:

  • 实时有限元素材仿真 (2008年6月15日)。

  • 刚体动力学 (2010年1月15日)