本發(fā)明涉及網(wǎng)絡(luò)游戲開發(fā)技術(shù)領(lǐng)域,具體涉及一種跨平臺(tái)游戲開發(fā)工具的實(shí)現(xiàn)方法。
背景技術(shù):
Mac OS系統(tǒng)是蘋果機(jī)專用系統(tǒng),正常情況下在普通PC機(jī)上無(wú)法安裝和使用?;贒arwin的Mac OS X系統(tǒng)增強(qiáng)了Mac OS系統(tǒng)的穩(wěn)定性、性能以及響應(yīng)能力,它能通過對(duì)稱多處理技術(shù)充分發(fā)揮雙處理器的優(yōu)勢(shì),提供無(wú)與倫比的2D、3D和多媒體圖形性能以及廣泛的字體支持和集成的PDA功能。Mac OS X通過Classic環(huán)境幾乎可以支持所有的Mac OS 9應(yīng)用程序,其具有的直觀的Aqua用戶界面使Mac OS系統(tǒng)的易用性又達(dá)到了一個(gè)全新的水平。
Microsoft開發(fā)的Windows系統(tǒng)是目前世界上用戶最多,且兼容性最強(qiáng)的操作系統(tǒng)。最早的Windows操作系統(tǒng)從1985年就推出了,當(dāng)時(shí)推出的操作系統(tǒng)Windows1.0是基于DOS內(nèi)核的操作系統(tǒng)。Windows1.0改進(jìn)了微軟以往的命令代碼系統(tǒng)Microsoft Disk Operating Systerm(MS-DOS)。Microsoft Windows是彩色界面的操作系統(tǒng),支持鍵鼠功能,默認(rèn)的平臺(tái)由任務(wù)欄和桌面圖標(biāo)組成。任務(wù)欄由顯示正在運(yùn)行的程序、“開始”菜單、時(shí)間、快速啟動(dòng)欄、輸入法以及右下角托盤圖標(biāo)組成。而桌面圖標(biāo)是進(jìn)入程序的途徑,默認(rèn)桌面圖標(biāo)有“我的電腦”、“我的文檔”、“回收站”等。另外,桌面還會(huì)顯示出系統(tǒng)自帶的“Internet Explorer”圖標(biāo)。
隨著Windows系統(tǒng)的全球市場(chǎng)份額的下降和Mac OS系統(tǒng)的全球市場(chǎng)份額的提升,現(xiàn)在的游戲軟件開發(fā)商需要為自己的產(chǎn)品分別在Windows系統(tǒng)和Mac OS系統(tǒng)上應(yīng)用開發(fā)不同的版本,耗費(fèi)了大量的人力物力,從而造成游戲軟件開發(fā)的成本過高。因此急需一種跨平臺(tái)游戲開發(fā)工具的解決方案來實(shí)現(xiàn)同一版本游戲軟件在Windows系統(tǒng)和Mac OS系統(tǒng)的應(yīng)用,以降低產(chǎn)品的開發(fā)成本。
目前,市面上已經(jīng)出現(xiàn)了多種跨平臺(tái)游戲開發(fā)工具,國(guó)外的U3D使用了腳本和內(nèi)建虛擬機(jī),國(guó)內(nèi)的技術(shù)團(tuán)隊(duì)使用了Flash、JAVA以及Html5來實(shí)現(xiàn)同一版本游戲軟件在不同操作系統(tǒng)的應(yīng)用。然而,現(xiàn)有技術(shù)中存在的跨平臺(tái)游戲開發(fā)工具存在以下問題:
一是只使用C++來開發(fā)跨平臺(tái)游戲開發(fā)工具,跨平臺(tái)游戲開發(fā)工具渲染效率高,但使用C++開發(fā)跨平臺(tái)游戲開發(fā)工具的可選方案少,成本高,周期長(zhǎng);
其次是只使用C#,JAVA,Html5來開發(fā)跨平臺(tái)游戲開發(fā)工具,成本低,周期短,但是跨平臺(tái)游戲開發(fā)工具渲染效率低。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問題,本發(fā)明提供了一種跨平臺(tái)游戲開發(fā)工具的實(shí)現(xiàn)方法,同時(shí)使用C++和C#來開發(fā)跨平臺(tái)游戲開發(fā)工具以使同一版本的軟件產(chǎn)品可以靈活應(yīng)用于Windows系統(tǒng)和Mac OS系統(tǒng)中。
本發(fā)明提供了一種跨平臺(tái)游戲開發(fā)工具的實(shí)現(xiàn)方法,所述方法包括:
應(yīng)用C++實(shí)現(xiàn)的渲染引擎作為跨平臺(tái)游戲開發(fā)工具的底層結(jié)構(gòu),支撐跨平臺(tái)游戲開發(fā)工具的邏輯和渲染;
創(chuàng)建C++功能封裝類庫(kù)并實(shí)現(xiàn)跨平臺(tái)游戲開發(fā)工具的渲染;
應(yīng)用C++與C#自動(dòng)生成接口技術(shù)/人工手寫編譯,把C++功能封裝類庫(kù),轉(zhuǎn)化為C#功能封裝類庫(kù);
使用C#實(shí)現(xiàn)跨平臺(tái)游戲開發(fā)工具的主體界面和功能邏輯;
通過P/Invoke技術(shù),利用C#調(diào)用C#功能封裝類庫(kù)和使用C#實(shí)現(xiàn)的跨平臺(tái)游戲開發(fā)工具的主體界面和功能邏輯。
進(jìn)一步的,所述創(chuàng)建C++功能封裝類庫(kù)并實(shí)現(xiàn)跨平臺(tái)游戲開發(fā)工具的渲染,具體為:
創(chuàng)建C++功能封裝類庫(kù),針對(duì)跨平臺(tái)游戲開發(fā)工具中提供的編輯功能,對(duì)軟件產(chǎn)品的類進(jìn)行簡(jiǎn)化封裝,提供更適合跨平臺(tái)游戲開發(fā)工具開發(fā)的接口;
使用跨平臺(tái)同步的方法,針對(duì)不同的平臺(tái),創(chuàng)建可視化的渲染區(qū)域。
更進(jìn)一步的,所述使用跨平臺(tái)同步的方法,針對(duì)不同的平臺(tái),創(chuàng)建可視化的渲染區(qū)域,具體為:
GTK調(diào)用操作系統(tǒng)的API在UI編輯器里創(chuàng)建游戲場(chǎng)景的圖形界面窗口;
UI編輯器調(diào)用跨平臺(tái)的圖形庫(kù),由所述跨平臺(tái)的圖形庫(kù)在所述圖形界面窗口內(nèi)對(duì)游戲場(chǎng)景進(jìn)行渲染。
優(yōu)選的,所述跨平臺(tái)的圖形庫(kù)為OPENGL。
優(yōu)選的,所述應(yīng)用C++實(shí)現(xiàn)的渲染引擎為跨平臺(tái)的游戲引擎Cocos2d-x或Orge或KlayGE。
進(jìn)一步的,MAC平臺(tái)下使用Mono.net支撐C#的開發(fā),使用LLVM支撐C++的編譯。
進(jìn)一步的,Windows平臺(tái)下使用Microsoft.net支撐C#的開發(fā),使用VC++支撐C++的編譯。
本發(fā)明的有益技術(shù)效果為:
本發(fā)明提供的一種跨平臺(tái)游戲開發(fā)工具的實(shí)現(xiàn)方法,同時(shí)使用C++和C#來開發(fā)跨平臺(tái)游戲開發(fā)工具以使同一版本的軟件產(chǎn)品可以靈活應(yīng)用于Windows系統(tǒng)和Mac OS系統(tǒng)中。使用C++實(shí)現(xiàn)復(fù)雜高效的渲染,使用C#實(shí)現(xiàn)簡(jiǎn)單的UI界面和功能邏輯,既保證了跨平臺(tái)游戲開發(fā)工具的渲染效率,同時(shí)也降低了游戲開發(fā)成本。
附圖說明
圖1是本發(fā)明實(shí)施例提供的一種跨平臺(tái)游戲開發(fā)工具的實(shí)現(xiàn)方法的流程示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,不能理解為對(duì)本發(fā)明具體保護(hù)范圍的限定。
如圖1所示,本實(shí)施例以粒子特效系統(tǒng)為例,給出一種能夠使同一版本的粒子特效系統(tǒng)靈活應(yīng)用于Windows系統(tǒng)和Mac OS系統(tǒng)中方法,包括如下步驟:
一、使用C++實(shí)現(xiàn)的渲染引擎作為跨平臺(tái)游戲開發(fā)工具的底層結(jié)構(gòu),支撐跨平臺(tái)游戲開發(fā)工具的邏輯和渲染。在渲染引擎中構(gòu)建粒子系統(tǒng),保證粒子系統(tǒng)能夠正常渲染2D材質(zhì)或者3D模型,編譯引擎庫(kù)。
這里的使用C++實(shí)現(xiàn)的渲染引擎,可以是跨平臺(tái)的游戲引擎Cocos2d-x、Orge、KlayGE,也可以是其他能夠使用C++實(shí)現(xiàn)的渲染引擎。
二、創(chuàng)建C++功能封裝類庫(kù)并實(shí)現(xiàn)跨平臺(tái)游戲開發(fā)工具的渲染,具體為:
創(chuàng)建C++功能封裝類庫(kù),針對(duì)跨平臺(tái)游戲開發(fā)工具中提供的編輯功能,對(duì)粒子特效系統(tǒng)的類進(jìn)行簡(jiǎn)化封裝,提供必要的粒子對(duì)象以及接口方法,比如粒子的初始化,粒子的資源加載,粒子的播放,暫停和停止;
使用跨平臺(tái)同步的方法,針對(duì)不同的平臺(tái),創(chuàng)建可視化的渲染區(qū)域,具體為:
GTK調(diào)用操作系統(tǒng)的API在UI編輯器里創(chuàng)建游戲場(chǎng)景的圖形界面窗口;
其中,GTK是一種跨平臺(tái)的圖形跨平臺(tái)游戲開發(fā)工具包,也可以稱為一個(gè)功能強(qiáng)大、設(shè)計(jì)靈活的一個(gè)通用圖形庫(kù)。它支持創(chuàng)建基于圖形用戶界面(Graphical User Interface,以下簡(jiǎn)稱 GUI)的應(yīng)用程序,從這個(gè)跨平臺(tái)游戲開發(fā)工具包中可以找到用來創(chuàng)建 GUI 的許多已經(jīng)準(zhǔn)備好的構(gòu)造塊。是GNU/Linux下開發(fā)圖形界面的應(yīng)用程序的主流開發(fā)跨平臺(tái)游戲開發(fā)工具之一,也適用于Windows系統(tǒng)或者M(jìn)ac系統(tǒng)。
具體地,在Windows系統(tǒng)下,GTK調(diào)用Windows系統(tǒng)的API在UI編輯器里創(chuàng)建游戲場(chǎng)景的圖形界面窗口;在Mac系統(tǒng)下,GTK調(diào)用Mac系統(tǒng)的API在UI編輯器里創(chuàng)建游戲場(chǎng)景的圖形界面窗口;但本發(fā)明實(shí)施例不限于這兩種操作系統(tǒng),只要能完成本發(fā)明實(shí)施例的操作系統(tǒng)都適用。
UI編輯器調(diào)用跨平臺(tái)的圖形庫(kù),由跨平臺(tái)的圖形庫(kù)在GTK創(chuàng)建的圖形界面窗口內(nèi)對(duì)游戲場(chǎng)景進(jìn)行渲染。
本發(fā)明實(shí)施例中,跨平臺(tái)的圖形庫(kù)為OpenGL。
三、使用C++與C#自動(dòng)生成接口技術(shù),把C++功能封裝類庫(kù)自動(dòng)生成對(duì)應(yīng)的C#類,創(chuàng)建C#的封裝工程,加載自動(dòng)生成的C#類,編譯成C#功能封裝類庫(kù)。
本發(fā)明實(shí)施例中,也可以采用人工手寫編譯來替換C++與C#自動(dòng)生成接口技術(shù)。
四、使用C#實(shí)現(xiàn)跨平臺(tái)游戲開發(fā)工具的主體界面和功能邏輯,包括粒子的創(chuàng)建,粒子屬性的編輯,粒子數(shù)據(jù)文件的序列化相關(guān)業(yè)務(wù)邏輯。
五、通過P/Invoke技術(shù),利用C#調(diào)用上述第三步驟中生成的C#功能封裝類庫(kù)和第四步驟中使用C#實(shí)現(xiàn)跨平臺(tái)游戲開發(fā)工具的主體界面和功能邏輯,創(chuàng)建粒子的封裝對(duì)象,并且加載默認(rèn)的粒子資源,設(shè)置粒子為播放狀態(tài),然后開始對(duì)粒子對(duì)象的自定義編輯操作。
本實(shí)施例中,針對(duì)不同的平臺(tái),使用不同的組件作為跨平臺(tái)游戲開發(fā)工具的開發(fā)和運(yùn)行環(huán)境:MAC平臺(tái)下使用Mono.net支撐C#的開發(fā),使用LLVM支撐C++的編譯;Windows平臺(tái)下用Microsoft.net支撐C#的開發(fā),使用VC++支撐C++的編譯。
其中,Mono.net是一個(gè)由Novell公司主持的項(xiàng)目。該項(xiàng)目的目標(biāo)是創(chuàng)建一系列符合標(biāo)準(zhǔn)ECMA (Ecma-334和Ecma-335)的.Net 工具,包括C #編譯器和共同語(yǔ)言執(zhí)行平臺(tái)CLP(Common Language Platform)。與微軟的.Net不同,Mono.net項(xiàng)目不僅可以運(yùn)行于Windows平臺(tái),還可以運(yùn)行于Linux、 FreeBSD、Unix、 Mac OS X和Solaris等平臺(tái)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,并不用于限制本發(fā)明,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變型,這些改進(jìn)和變型也應(yīng)視為本發(fā)明的保護(hù)范圍。