818這些年我所遭遇過的遊戲中間件


818這些年我所遭遇過的遊戲中間件html

    生活中總有些以前從沒想過的東西,卻出如今本身之後的生活中.好比,上中學時我從沒想過本身能上大學.在學校時屢次路過一家公司,看它的大樓非常個性,從沒想過本身畢業後會坑在這家公司.第一次據說中間件,是我讀研時的一個舍友,他的研究方向就是中間件.我問他什麼是中間件,他口若懸河地講了一大坨我聽不懂也記不住的話.沒想到我工做以後卻和中間件有着難解之緣.什麼是中間件,百度上的解釋以下:
    "中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源。中間件位於客戶機/服務器的操做系統之上,管理計算機資源和網絡通信。是鏈接兩個獨立應用程序或獨立系統的軟件。相鏈接的系統,即便它們具備不一樣的接口,但經過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞。經過中間件,應用程序能夠工做於多平臺或OS環境。"
    上述語句我也看不懂,由於這不是我所搞的中間件,大概是我那舍友所搞的中間件吧.還有另一種中間件,百度上的定義以下:"中間件(middleware)是基礎軟件的一大類,屬於可複用軟件的範疇。顧名思義,中間件處於操做系統軟件與用戶的應用軟件的中間。"這個定義意思上大概差很少有那麼點合乎個人理解.我對中間件的定義是:爲編程中某一功能提供具體實現的軟件開發工具包.中間件和SDK差很少是一個東西."軟件開發工具包(Software Development Kit, SDK)通常是一些被軟件工程師用於爲特定的軟件包、軟件框架、硬件平臺、操做系統等建立應用軟件的開發工具的集合." 它或許只是簡單的爲某個程序設計語言提供應用程序接口的一些文件,但也可能包括能與某種嵌入式系統通信的複雜的硬件。通常的工具包括用於調試和其餘用途的實用工具。SDK還常常包括示例代碼、支持性的技術註解或者其餘的爲基本參考資料澄清疑點的支持文檔。web

    中間件是由第三方爲實現某一功能開發的,較爲成熟而且可複用的lib庫或dll庫.開發者能夠經過其提供的接口來實現其功能.中間件所實現的功能有多有少,其複雜程度有大有小.複雜的如一些遊戲引擎:osg,ogre.簡單的如一些圖像格式解析的庫,jpglib,pnglib.其特色就是能夠嵌入其餘的程序中.之因此定義它爲中間件是由於,它不是具體的執行程序,沒法執行,但它爲具體的執行程序提供服務.好吧,按照個人定義,中間件和軟件開發工具包就是一個東西.一般咱們將一些比較低層的東西叫作軟件開發工具包,如openGL,D3D,openCL,也會把一些功能全面又複雜的東西叫軟件開發工具包,如:VTK,ogre,osg.而中間件則多指功能具體並且單一的東西,如:用於物理的Havok,PhysX,Bullet,用於界面的Scaleform,用於人工智能尋路的Kynapse,Navigation.
    這種中間件並非處於操做系統與應用軟件的中間,而是處於開發環境與開發程序之間.若是要問"STL算中間件嗎?",我更傾向於它屬於開發環境的一部分.但若是你又寫了一套STL,併發布出去,這就算是中間件了.算法

    你如果問我:"中間件靠譜嗎?",我會堅決果斷地回答:"靠".一方面,中間件爲開發者提供現成的功能,咱們能夠簡單調用其接口實現一些很複雜的算法.但另外一方面,中間件大多不開源,開源的又大多看不懂,一旦出有問題或有了新需求將很難維護.總之,中間件在下降開發成本的同時,會提升維護成本.你可能只須要花幾星期或是幾天寫出一個看上去頗有技術含量的DEMO,但當將這個DEMO移植到具體的遊戲中時,總會出現這樣那樣的問題.Shit often happens.幾乎全部我遭遇過的中間件都會有奇葩的事情出現.而這些出現問題中,大約三分之一能獲得完善解決,有三分之一能夠經過別的方式繞過去,剩下的就只能將就着用吧.有時會發現某款中間件就如同雞肋,欲罷不能,欲進無力.然而有些東西咱們只能用中間件來解決,例如物理,這個要獨立開發的話,坑實在是太大了.編程

下面的將全部我遭遇過的遊戲中間件列舉出來,打算將對每一款都寫個小文章,記錄下本身的親身經歷.服務器

(1)VTK:一款圖形開發包.http://www.cnblogs.com/WhyEngine/p/3473713.html
(2)Havok:物理中間件.http://www.cnblogs.com/WhyEngine/p/3469600.html
(3)Speedtree:用於場景植被渲染的中間件.http://www.cnblogs.com/WhyEngine/p/3504198.html
(4)Physx:物理中間件.http://www.cnblogs.com/WhyEngine/p/3474035.html
(5)Scaleform:用於Flash界面的中間件.http://www.cnblogs.com/WhyEngine/p/3489953.html
(6)FlashOcx:Adobe提供的Flash界面插件.http://www.cnblogs.com/WhyEngine/p/3491132.html
(7)Kynapse:用於人工智能的中間件.http://www.cnblogs.com/WhyEngine/p/3494743.html
(8)HumanIK:用於反向動力學的中間件.http://www.cnblogs.com/WhyEngine/p/3504189.html
(9)Substance Redux:用於紋理壓縮與合成的中間件.http://www.cnblogs.com/WhyEngine/p/3484408.html
(10)dxtlib:用於DXT格式轉化,DDS文件生成的開發包.http://www.cnblogs.com/WhyEngine/p/3504197.html網絡

(11)Apex:對PhysX的擴展中間件.http://www.cnblogs.com/WhyEngine/p/3474313.html
(12)Bullet:物理中間件.這個因爲尚未將它用於具體的項目,並且這是一個開源的中間件還沒有進行太深刻的研究,因此還沒寫.先提供個我用Bullet寫的Demo:http://www.cnblogs.com/WhyEngine/p/3428311.html併發

(13)MaxSDK: 3D Max的開發包.http://www.cnblogs.com/WhyEngine/p/3541698.htmlapp

相關文章
相關標籤/搜索