• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰魂小筑

            討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

                 準備為自己的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綁定。

             

            posted on 2009-12-31 11:42 戰魂小筑 閱讀(2220) 評論(2)  編輯 收藏 引用 所屬分類: 腳本技術C++/ 編程語言

            評論

            # re: 為游戲系統選擇一個接口方式 2009-12-31 17:03
            都沒有說最后的決定嘛。
              回復  更多評論
              

            # re: 為游戲系統選擇一個接口方式[未登錄] 2010-01-06 09:05 christanxw
            Python不慢,我們的已經運營的游戲項目就是用Python做的腳本,上層所有邏輯全部都是Python寫的,不管是服務端還是客戶端。
            我個人還是更喜歡簡潔的LUA。  回復  更多評論
              

            国产精品久久毛片完整版| 亚洲精品NV久久久久久久久久| 国产精品久久久久天天影视| 久久精品国产久精国产思思| 久久久久高潮综合影院| 人妻无码αv中文字幕久久琪琪布| 久久久久亚洲AV成人网人人软件| 久久婷婷色综合一区二区| 久久久亚洲AV波多野结衣| 97久久综合精品久久久综合| 国内精品伊人久久久久影院对白| 国产欧美久久久精品影院| 国内精品久久久久久99蜜桃| 久久香蕉国产线看观看99| 久久精品18| 久久九九有精品国产23百花影院| 亚洲色婷婷综合久久| 久久艹国产| 久久精品人人槡人妻人人玩AV| 久久99久久99精品免视看动漫 | 国产亚洲色婷婷久久99精品91| 一级a性色生活片久久无少妇一级婬片免费放 | 久久久亚洲欧洲日产国码是AV| 99久久www免费人成精品| 亚洲一区精品伊人久久伊人| 精品久久无码中文字幕| 热99RE久久精品这里都是精品免费 | 久久人妻少妇嫩草AV蜜桃| 国产精品一久久香蕉产线看| 欧美日韩中文字幕久久久不卡| 99久久婷婷国产一区二区 | 99久久中文字幕| 亚洲午夜无码久久久久| 四虎影视久久久免费| 久久精品国产半推半就| 国产成人综合久久综合| 久久99精品久久久久子伦| 久久人人爽爽爽人久久久| 久久久久久久久无码精品亚洲日韩| 久久久亚洲欧洲日产国码aⅴ| 人妻少妇久久中文字幕|