题
我正在寻找一些好的参考资料来学习如何在游戏中模拟二维物理。我是 不是 寻找一个图书馆来为我做这件事 - 我想思考和学习,而不是盲目地使用别人的工作。
我在谷歌上做了很多搜索,虽然我找到了一些关于 GameDev 等的教程,但我发现他们的教程很难理解,因为它们要么写得不好,要么假设我不具备一定的数学理解水平。尚未拥有。
对于具体细节 - 我正在寻找如何建模自上而下的 2d 游戏,有点像坦克战斗游戏 - 我想准确地建模(除其他外)加速度和速度、“组件”的热量积聚、之间的碰撞型号和级别边界以及导弹类型武器。
网站、推荐书籍、博客、代码示例 - 如果有助于理解,欢迎提供。我正在考虑使用 C# 和 F# 来构建我的游戏,因此使用这两种语言中的任何一种语言编写的代码示例都很棒 - 但不要让语言阻止您发布良好的链接。=)
编辑:我并不是说我不懂数学 - 更重要的是我不知道我需要知道什么才能理解所涉及的系统,并且真的不知道如何找到可以教授的资源我以一种可以理解的方式。
解决方案
以下是我几年前收集的一些资源。值得注意的是 Verlet 集成。我还提供了当时发现的一些开源和商业物理引擎的链接。这里有一篇关于这个主题的 stackoverflow 文章: 2D 游戏物理?
物理方法
图书
- 《游戏物理引擎开发》, ,伊恩·米林顿——我拥有这本书并强烈推荐它。本书从头开始用 C++ 构建了一个物理引擎。作者从基本粒子物理学开始,然后添加“运动定律”、约束、刚体物理学等等。他自始至终都包含有详细记录的源代码。
物理引擎
其他提示
(来源: oreilly.com )
O'Reilly 游戏开发者物理学,
这是一个很棒的教程,演示了使用闪存的2D物理概念,并不是特定于闪存。 http://www.rodedev.com/tutorials/gamephysics/game_physics.swf
即使你想从下到上学习它,一个编码和记录良好的开源物理库包含的信息远远多于一本书。我如何处理情况x ...在文件中查找可能比纸质索引更快。
原始回复:
什么,没有提及 Box2D ?它是一个暴雪员工的开源项目,有一个很好的社区,而且很好。
在我对Box2D的简要体验中,将它与Torque Game Builder集成,我发现API干净利用,文档清晰,它支持我所期望的所有物理对象(特别是关节是一个要求),以及社区看起来很友好和活跃(2010年初左右)。
根据论坛海报判断,管理人员似乎也接受了来源捐款(没有携带许可证行李)。
这是基于岛屿的求解器看起来非常快,正如我对它的声誉所期望的那样,而不是我做过任何重大的性能测试。
F# 有一个功能叫做 计量单位 它会为您进行尺寸分析,如果您出错则提供错误。例如,如果你说:
let distance : float<meters> = gravity * 3.0<seconds>
这会产生编译错误,因为重力是 < 米/秒^2 > 而不是 < 米 >。此外,由于 F# 只是 .NET,您可以在类库中编写数学/物理代码,并从 C# 中引用它。
我建议您查看这些博客文章以获取更多信息:
这是编写第一台引擎的绝佳资源。它是3D的,但很容易转换为2D。我知道至少有一家大公司在他们的内部引擎上遵循本教程,我个人已经按照他自己的引擎的步骤。他解释了基于弹簧/脉冲的物理学中的所有基本物理概念,并向您展示了如何编写自己的整合器。