写点什么

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

  • 2007-11-21
  • 本文字数:1925 字

    阅读完需:约 6 分钟

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

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

2007-11-21 20:411572
用户头像

发布了 254 篇内容, 共 64.4 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

今晚直播 | 思码逸陆春蕊:面对研发效能度量落地难点,如何让数据说话?

思码逸研发效能

研发效能

Backgrounds——为所有人准备的mac动态壁纸,让桌面更生动

互联网搬砖工作者

软件测试/测试开发丨Pytest 自动化测试框架(二)

测试人

软件测试 自动化测试 测试开发 pytest

Selenium测试用例如何编写

测吧(北京)科技有限公司

测试

性能报告 | YMatrix 5.0 对比 Greenplum 超 12 倍性能提升,TPC-H 基准测试报告发布

YMatrix 超融合数据库

时序数据库 测试工具 数据库、

如何从1到99做好产品 | 得物技术

得物技术

小技巧:如何让 Windows 应用程序在 Parallels Desktop 中启动得更快

互联网搬砖工作者

玩转服务器之Docker篇:10分钟学会搭建 Docker 环境

京东科技开发者

云计算 容器 Docker 镜像 企业号 4 月 PK 榜

华为阅读发布最新进展,月活用户超1亿,大力发展精品阅读

最新动态

企业级无代码平台,「重塑」软件生产关系

ToB行业头条

白盒的测试方法

测吧(北京)科技有限公司

测试

瓴羊quickbi工具免费体验30天,零基础上手企业数据更直观

对不起该用户已成仙‖

Kubernetes网络策略之详解

乌龟哥哥

三周年连更

算法刷题-单词接龙、矩阵中的最长递增路径、Z 字形变换

共饮一杯无

数据结构 算法 三周年连更

如何搭建自己的ChatGPT网站,它来了

派大星

ChatGPT

使用体验 I 早知道 TDesign 支持 AVIF 图片压缩,我就不用为流量和格式发愁啦!

TDesign

前端 图片压缩 图片格式

深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。

汀丶人工智能

人工智能 深度学习 学习率 warmup batchsize

从 Dev 和 Ops 视角出发,聊聊 DevSecOps 的 What / Why / How

极狐GitLab

DevOps 安全 DevSecOps 安全左移 安全合规

轻松玩转小程序,这样做让你拥有2亿用户

加入高科技仿生人

小程序 低代码 小程序制作 小程序开发

IPv6常见安全问题

穿过生命散发芬芳

ipv6 三周年连更

数据中心厂商超云加入龙蜥社区,多款服务器完成与龙蜥操作系统适配

OpenAnolis小助手

开源 操作系统 龙蜥社区 CLA 长城超云

带你掌握数仓的作业级监控TopSQL

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

“亮相”欧洲!TDengine 在 KubeCon 与开发者探讨云原生与数据库的技术结合

TDengine

tdengine 时序数据库 KubeCON

数字化转型框架如何搭建?

优秀

数字化转型

重新学习Java线程原语

码语者

Java 线程

软件测试/测试开发丨Pytest 自动化测试框架(一)

测试人

软件测试 自动化测试 测试开发 pytest

从零学习SDK(8)SDK的集成和部署

MobTech袤博科技

OpenKruise V1.4 版本解读:新增 Job Sidecar Terminator 能力

阿里巴巴云原生

阿里云 开源 云原生 OpenKruise

新起点!大数据分布式可视化的 DAG 任务调度系统 Taier 正式发布1.4版本

袋鼠云数栈

开源

常用测试策略与测试手段

测吧(北京)科技有限公司

测试发开

户外led电子屏未来发展趋势

Dylan

技术 LED显示屏 户外LED显示屏

Farseer:一个用于Silverlight和XNA的开源物理引擎_.NET_Jonathan Allen_InfoQ精选文章