2D游戏物理资源
我正在寻找一些很好的参考,以学习如何在游戏中为2D物理建模。我不是在寻找图书馆为我想思考和学习的图书馆,而不是盲目使用别人的作品。
我做了很多Google搜寻工作,虽然我在GameDev等上找到了一些教程,但是我发现他们的教程很难理解,因为它们写得不好,或者假设我对数学的理解程度不高还没有。
具体来说,我正在寻找如何对自上而下的2D游戏建模,就像坦克战斗游戏一样,我想准确地建模(除其他外)加速度和速度,"零件"的热量积累,模型之间的碰撞以及水平边界和导弹型武器。
欢迎访问网站,推荐书籍,博客,代码示例,如果它们有助于理解。我正在考虑使用Cand F来构建游戏,因此使用这两种语言中的任何一种代码示例都很好,但不要让语言阻止我们发布良好的链接。 =)
编辑:我并不是说我不懂数学,更多的情况是我不知道我需要了解什么才能理解所涉及的系统,并且真的不知道如何找到将要使用的资源。以一种可以理解的方式教我。
解决方案
http://oreilly.com/catalog/covers/0596000065_cat.gif
O'Reilly的游戏开发人员物理学
这是几年前我收集的一些资源。值得注意的是Verlet集成。
我还包括到我当时发现的一些开源和商业物理引擎的链接。这里有一个关于该主题的stackoverflow文章:2d游戏物理?
物理方法
- Verlet集成(维基百科文章)
- 高级角色物理(很棒的文章!包括运动,碰撞,关节和其他约束。)
图书
- 伊恩·米林顿(Ian Millington),《游戏物理引擎开发》(Game Physics Engine Development),我拥有这本书,并强烈推荐它。本书从零开始用C ++构建了一个物理引擎。作者从基本粒子物理学开始,然后添加"运动定律",约束,刚体物理学等等。他从头到尾都包含有据可查的源代码。
物理引擎
- 托卡马克(开源物理API)
- APE(动作脚本物理引擎)
- FLADE(Flash动态引擎)
- Fisix引擎(另一个Flash Actionscript引擎)
- 简单物理引擎(商业)
具有称为"计量单位"的功能,可以为我们进行尺寸分析,如果弄错了会提供错误。例如,如果我们说:
let distance : float<meters> = gravity * 3.0<seconds>
由于重力是<米/秒^ 2>而不是<米>,因此会产生编译错误。另外,由于Fis只是.NET,因此我们可以在类库中编写数学/物理代码,然后从C#中引用它。
我建议我们查看这些博客文章以获取更多信息:
- F#中使用计量单位的简单WPF游戏
- 安德鲁·肯尼迪(Andew Kennedy)的博客
这是一个很棒的教程,它演示了使用Flash的2D物理概念,并且不特定于Flash。
http://www.rodedev.com/tutorials/gamephysics/game_physics.swf
这是编写第一个引擎的绝佳资源。它以3D格式显示,但很容易转换为2D格式。我知道至少有一家大公司遵循了本教程的内部引擎,而我个人也遵循了他的步骤来开发自己的引擎。他解释了基于弹簧/脉冲的物理学中的所有基本物理学概念,并向我们展示了如何编写自己的交织器。
即使我们想从头开始学习所有内容,一个经过良好编码和记录的开源物理库所包含的信息也远不止一本书。我该如何处理情况x ...在文件中查找可以比纸张索引更快。
原始回复:
什么,更不用说Box2D了?它是暴雪员工的开源项目,拥有一个良好的社区,而且运作良好。
在我与Box2D的简要介绍中(将其与Torque Game Builder集成),我发现该API易于使用,文档清晰,支持我期望的所有物理对象(尤其是关节),并且社区看起来很友好并且活跃(大约在2010年初左右)。
从论坛张贴者的判断来看,似乎经理人也愿意接受来源捐款(不携带执照包)。
正如我从它的声誉所期望的那样,它是基于岛的求解器,看起来似乎非常快,而不是我进行了任何重大的性能测试。
F#.NET Journal发表了两篇有关此的文章:
- 实时有限元材料模拟(2008年6月15日)。
- 刚体动力学(2010年1月15日)