Farseer:一个用于Silverlight和XNA的开源物理引擎
生活随笔
收集整理的這篇文章主要介紹了
Farseer:一个用于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
中文原文:http://www.infoq.com/cn/news/2007/11/Farseer
總結
以上是生活随笔為你收集整理的Farseer:一个用于Silverlight和XNA的开源物理引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅论ViewState及其与Sessio
- 下一篇: HDU1002 大数相加