InfoQ

新闻

Farseer:一个用于Silverlight和XNA的开源物理引擎

作者 Jonathan Allen 译者 朱永光 发布于 2007年11月21日 下午8时41分

社区
.NET
主题
开放源代码,
Silverlight,
XNA
标签
物理引擎

当前在演示和越来越多交互界面的推动下,实时动画在很多情况下已经成为不可或缺的要求。当动画涉及到物体在屏幕上互相反弹或者被重力影响的时候,一个物理引擎就是必要的了。

Farseer Physics Engine(Farseer物理引擎),就是为了满足这个需要而设计的,尽管它首先是为2D游戏编写的。我们为此采访了Jeff Weber,Farseer的设计者。

为什么你决定首先开始这个Farseer物理引擎项目呢?

我创建Farseer物理引擎是因为我希望用.NET做一些2D的物理游戏。我想寻找一个好的用托管代码编写的2D物理引擎,能允许我以自己的方式制作游戏。但没有找到多少,并且它们都不包含我所需要的所有特性。
不过有一个非常有意思的称为Box2D的C++物理引擎,是由Erin Catto编写的。它具有我需要的大部分特性,并且我非常确信我能添加额外的特性,所以我决定使用它作为我自己托管物理引擎的一个基础。Farseer物理引擎就是这样的引擎。
注意:上面连接提到的Box2D 引擎已经有一个Erin Catto的新版本。它们概念相似,但Farseer是基于Box2D引擎的一个早期版本而构建的。

在这之前,你在物理引擎方面是否具有任何背景或者是否进行了一些学习?

我从很早就有数学学士学位。可我从来没有机会真正使用它[译者注:数学知识],直到大约6年前我作为一个业余爱好开始做游戏开发。因此,我一直试图在我的项目中包含一些物理方面的东西。随便提一下,这些物理方面的东西总是在这样或那样的演示后就结束开发了,而不是结束于某个完成的游戏。
我也有幸在一个Truck Driving模拟器的项目里工作了大约1年,而后回到了我已经工作了几年的作为一个.NET开发顾问的真正角色里。对于那个项目,我们使用了一个带有托管.NET包装的Open Dynamics  Engine(ODE) 。
所以,对的,我们有着一些物理和物理引擎方面的经验,但是Farseer物理引擎是我在日常工作之外第一个“完成”的项目。

当创建类似Farseer这样的函数库的时候,如果必须在易用和强大/灵活上做出抉择,你会偏重哪个方向?

让Farseer简单易用是我明确的首要目标。我甚至把“Keep It Simple”写在我的白板上。(其实)我早期一些版本的对象层级关系一开始都过于复杂,它们有着太多的抽象类、接口和Finally级别的继承类;而后我记起了我保持简单的原则,就重构了所有地方以满足这样的目标。我很高兴能以这样的方式开发出来。
通常我会尽量在强大功能、灵活性、易用性和及时完成之间寻找一个平衡。如果我不得不偏向某方,我也依旧会保持简单为美的原则。

你是否考虑过兼容类似Mono这样的非微软运行时?

没有。听起来是不是有点自私?但我真的是为自己需要而创建Farseer的。我不用Mono并且我也没有任何近期计划要用它,所以我从来没有真正考虑过它。我将把这个工作留给其他人。我猜它应该很容易就被移植,因为这个引擎其实没有依靠太多非.NET框架核心的东西。

综合说来,你对Silverlight和XNA用于创建类似这样的软件印象如何?它们是否能提供所需的功能,还是你必须自己做很多额外的事情?

这两个框架我都喜欢,并适当借用了一些功能到Farseer中。Farseer在两个平台上几乎完全相同的。Silverlight版本需要创建一些数学结构体以对应在XNA中同样的结构体,但其他唯一不同之处就是每个版本需要以不同的.NET框架版本来编译。其中的演示当然是能正常工作。Blue Rose Games 公司的Bill Reiss把Farseer物理引擎和它的演示移植到Silverlight上。做这个移植真的是个好主意,我非常高兴他为我完成这件事。
当前,我已经把注意力从XNA移开一段时间了,对Silverlight关注更多些。我能够完成一些屏幕上的事,并能让其在Silverlight上运行得比XNA更快些。主要是因为2D矢量绘图机制内建于Silverlight中,我希望微软也能为XNA框架创建一个XAML的解析器。
我也喜欢为Web创建游戏的想法。我想这个方向前途是光明的。

对于Farseer你有什么未来的计划?

我未来的计划主要围绕解决Farseer物理引擎的实际使用问题。在完成之后,我将继续对它进行升级,以让其更有用。
想法/代码可以由用户提交,或者是当我为了正在编写的游戏而需要某些新功能的时候再做添加。我已经有了一些由用户在用户论坛中提交的非常好的内容,同时我已经着手让这些内容合并到引擎中了。
总的来说,我喜欢用这个引擎制作由我领导开发的游戏,并希望从它们那儿获得一些额外收入。我当前有一个Silverlight游戏已经在开发中,我觉得它不像现存的大多数Web游戏。(我知道,他们都这样说)奇怪的是,自从我作为业余爱好开始游戏开发5,6年以来,它是我第一个完成的游戏。

Farseer物理引擎可以在CodePlex网站下载。

查看英文原文:Introducing Farseer - An Open Source Physics Engine for Silverlight and XNA

用于Flash的Box2D移植 发表人 Kevin Chu 发表于 2007年11月21日 下午9时30分
  1. 返回顶部

    用于Flash的Box2D移植

    2007年11月21日 下午9时30分 发表人 Kevin Chu

    可以看:http://www.digglife.cn/articles/physics-emulator-box2dflashas3.html

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。