為遊戲系統選擇一個介面方式—轉載

來源:互聯網
上載者:User

準備為自己的2D遊戲動畫系統選擇一套給外部使用的介面方式,有如下幾種選擇:

1. 純C API方式匯出,類似於Windows API方式
優點:簡潔,可以供C/C#乃至其他可以匯入C DLL的語言使用
缺點:C++的系統轉化為C會遇到很多效能以及架構的折損,對於對象控制類功能匯出比較多的系統,這種方式簡直是噩夢

2. C++方式匯出,宏方式實現RTTI以及C++反射系統
優點:強大,易用。
缺點:對象生命週期不容易控制,反射系統設計比較費時,可能暴露很多類的細節,只能給C++使用

3. COM方式,類DirectX的介面方式
優點:商業項目已經證明這種介面方式的強大地方。無論是多個對象的類功能匯出,還是COM介面重載都非常方便。而且,可以極為容易的讓.NET訪問。XBOX SDK裡的XUI就是採用這種方式,而且還設計了一套C API搭配的強大C++反射系統,支援動態類建立,RTTI,動態類型轉換等等。
缺點:需要系統註冊,不能跨平台。COM標準學習起來需要時間

4. 指令碼綁定
優點:保持你的系統對外C/C++介面的乾淨,簡潔。通過指令碼類綁定,可以很快的將C++功能註冊到指令碼中。
缺點:指令碼如果沒有調試器,將會讓開發中碰到的棘手問題,甚至於在後期維護系統以及系統架構大變動變得異常複雜。指令碼的效能決定了不能讓其做即時處理,例如:渲染
最終選擇下來,由於有自己的介面系統Motion使用lua的函數綁定的前例,因此還是決定選擇一款指令碼語言來做系統的對外介面,這裡有幾個選擇:

1. Lua
可以說最好的遊戲系統指令碼語言。穩定,高效,bug幾乎沒有(即便有,普通開發人員也是很難察覺的)。配上LuaPlus的強大C++繫結系統,你的系統開發效率可以提高很多。這裡推薦notepad++來做lua開發,稍微配置下,彈出提示給你感覺在使用Visual Studio,:)
同時需要指出的是,lua的類功能確實比較弱。雖然可以用metatable方式來類比。但逼近跟native class支援還差很遠,實際開發中,你能體會出class中的許可權控制(private,protected)有多麼重要。

2. Python
誠然,這是個最OO的指令碼。但是對於遊戲,它太慢了。雖然本人只是用python寫過一些build系統,但從很多朋友反應的情況來看,Python嵌入遊戲系統,確實太慢。用Stackless Python? 用第三方開源產品,還是認準品牌,呵呵,這裡如果有用過的同學,歡迎提供感受。

3. C#
語言和系統都很美,但是想嵌入遊戲,還是很痛的。.net平台可惜就在於,到現在為止,可能還不是所有機器預設安裝有.net平台。如果你的遊戲是C++寫成,但卻要安裝.net以便你的指令碼能運行,這很奇怪吧?所以,如果要用C#,還不如不用指令碼,全盤.net就好了。Managed DX? 那東西幾年前就被MS打入冷宮了。XNA? 那東西只是一個玩具,別摸。

4.Squirrel松鼠指令碼

這是個好東西。類lua的文法,C/C++/Java的語言結構,純正的native class外加OO支援。擁有開源的C++類繫結系統。最爽的是,SQDEV支援日食(Eclipse)下的遠端偵錯,開發環境還支援動態語法檢查。oh,my god。還說不定哪天這指令碼被MS招安,跟IronPython一樣弄個.net綁定。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.