專利名稱:用于生成跨平臺(tái)程序的方法及其中間件平臺(tái)引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種跨平臺(tái)程序,并且更具體地涉及一種在配備有異類中間 件平臺(tái)的多個(gè)設(shè)備之間移植程序的方法及其使用的中間件平臺(tái)引擎。
背景技術(shù):
無(wú)線互聯(lián)網(wǎng)交互平臺(tái)(WIPI)是在保持Java語(yǔ)言優(yōu)勢(shì)的同時(shí)為執(zhí)行本 地二進(jìn)制格式文件而開(kāi)發(fā)的一種中間件平臺(tái)。通常,無(wú)線互聯(lián)網(wǎng)平臺(tái)是用虛 擬機(jī)(VM)或本地二進(jìn)制技術(shù)實(shí)現(xiàn)的,在使用VM和本地二進(jìn)制技術(shù)之間 有折衷方案。
VM是機(jī)器的軟件實(shí)現(xiàn)方式,它如真實(shí)機(jī)器一樣執(zhí)行程序。在VM技術(shù) 中,程序被轉(zhuǎn)換成中間代碼,以便在軟件中央處理單元(CPU)中被執(zhí)行。 VM將中間代碼解釋成機(jī)器語(yǔ)言。
VM技術(shù)已經(jīng)被廣泛使用,Java虛擬機(jī)(JVM)已經(jīng)被用作無(wú)線互聯(lián)網(wǎng) 平臺(tái)中的一種平臺(tái)。而且開(kāi)發(fā)出了以mini-C編寫(xiě)的通用虛擬機(jī)(GVM), 并且在韓國(guó)提供了基于GVM的服務(wù)。
在本地二進(jìn)制技術(shù)中,程序被編譯以便被執(zhí)行。即,被開(kāi)發(fā)的程序被轉(zhuǎn) 換成可以在CPU上運(yùn)行的機(jī)器語(yǔ)言?;诒镜囟M(jìn)制技術(shù)的無(wú)線互聯(lián)網(wǎng)平 臺(tái)之一是由Qualcomm所創(chuàng)建的無(wú)線二進(jìn)制運(yùn)行環(huán)境(BREW)。在基于VM 的無(wú)線互聯(lián)網(wǎng)平臺(tái)中,軟件CPU將程序解釋成中間代碼,因此,用戶會(huì)感 覺(jué)到在CPU和資源有限的移動(dòng)電話中有處理延遲。然而,基于VM的平臺(tái) 有利于提供相對(duì)高的系統(tǒng)穩(wěn)定性和安全性。
同時(shí),與需要中間代碼解釋的基于VM的平臺(tái)不同,基于本地二進(jìn)制的 平臺(tái)能夠利用100。/。的CPU能力,從而提供高的執(zhí)行速度。然而,由于本地 二進(jìn)制技術(shù)通常是用0/0++作為編程程序編寫(xiě)的,所以可能出現(xiàn)無(wú)效或惡意 的存儲(chǔ)器訪問(wèn),導(dǎo)致系統(tǒng)不穩(wěn)定。已經(jīng)開(kāi)發(fā)的WIPI平臺(tái)具有VM和本地二 進(jìn)制技術(shù)兩者的優(yōu)勢(shì)。即,WIPI平臺(tái)提供了 Java語(yǔ)言的優(yōu)勢(shì),同時(shí)保持了本地二進(jìn)制代碼的高執(zhí)行性能。
WIPI平臺(tái)允許用(:"++語(yǔ)言及Java語(yǔ)言開(kāi)發(fā)程序,并允許應(yīng)用程序確 保本地二進(jìn)制的執(zhí)行性能。在0"++情況下,生成本地二進(jìn)制代碼是沒(méi)有問(wèn) 題的。但是,Java語(yǔ)言是考慮虛擬機(jī)設(shè)計(jì)的,這樣Java應(yīng)當(dāng)被編譯為設(shè)備可 執(zhí)行的二進(jìn)制代碼。按需要進(jìn)行編譯(COD)是一種負(fù)責(zé)在WIPI下生成可 執(zhí)行二進(jìn)制代碼的組件。
隨著近來(lái)游戲手機(jī)的出現(xiàn), 一直存在對(duì)高級(jí)游戲服務(wù)的需求。為此,要 求在傳統(tǒng)Open GL和DirectX的基礎(chǔ)上,達(dá)到WIPI和API之間的互用性, 并確保有足以在設(shè)備上運(yùn)行游戲的性能。
另外,需要通過(guò)以動(dòng)態(tài)鏈接方法實(shí)現(xiàn)手機(jī)游戲中間件來(lái)有利于游戲的開(kāi) 發(fā),并開(kāi)發(fā)為了移動(dòng)環(huán)境而優(yōu)化的游戲引擎。優(yōu)選地,應(yīng)當(dāng)考慮移動(dòng)設(shè)備的 發(fā)展和移動(dòng)架構(gòu)的改進(jìn)來(lái)設(shè)計(jì)這種中間件,以便適應(yīng)各種開(kāi)發(fā)環(huán)境
發(fā)明內(nèi)容
技術(shù)問(wèn)題
本發(fā)明致力于解決上述問(wèn)題,本發(fā)明的目的是提供一種在具有異類中間 件平臺(tái)的多個(gè)設(shè)備之間移植程序以降低移植時(shí)間的方法和中間件平臺(tái)引擎。
本發(fā)明的另一目的是提供一種在具有異類中間件平臺(tái)的多個(gè)設(shè)備之間 移植程序的方法和中間件平臺(tái)引擎,其能夠通過(guò)改迸平臺(tái)間的可操作性來(lái)促 進(jìn)手機(jī)游戲業(yè)務(wù)。
上述目的和其它目的是通過(guò)在后文描述的用于移植程序的方法和中間 件平臺(tái)層來(lái)實(shí)現(xiàn)的。
技術(shù)方案
根據(jù)本發(fā)明的一方案, 一種用于將API從源中間件平臺(tái)移植到目標(biāo)中間
件平臺(tái)的方法包括將分配給多個(gè)源API的索引號(hào)存儲(chǔ)在與源中間件平臺(tái)相
關(guān)聯(lián)的存儲(chǔ)器中;提取用于生成目標(biāo)API所需的并與所述源API對(duì)應(yīng)的至少 一個(gè)索引;以及使用由所述至少一個(gè)索引指示的至少一個(gè)源API生成至少一 個(gè)目標(biāo)API。
優(yōu)選地,存儲(chǔ)索引號(hào)包括提取可在目標(biāo)中間件平臺(tái)引擎上執(zhí)行的至少一個(gè)代碼,并存儲(chǔ)所述至少一個(gè)代碼。
優(yōu)選地,調(diào)用所述索引中的一個(gè)索引包括提取與所述至少一個(gè)索引對(duì)應(yīng) 的至少一個(gè)目標(biāo)代碼。
優(yōu)選地,生成至少一個(gè)目標(biāo)API包括通過(guò)組合所述至少一個(gè)目標(biāo)代碼來(lái)
創(chuàng)建所述至少一個(gè)目標(biāo)API。
根據(jù)本發(fā)明的另一方案, 一種用于在具有不同中間件平臺(tái)的多個(gè)設(shè)備之
間移植應(yīng)用編程接口的中間件平臺(tái)引擎包括存儲(chǔ)單元,用于將索引號(hào)分配
給多個(gè)源API,并在存儲(chǔ)器中存儲(chǔ)所述索引號(hào);索引調(diào)用器,用于調(diào)用與至 少一個(gè)目標(biāo)API對(duì)應(yīng)的至少一個(gè)源API的至少一個(gè)索引號(hào);API生成器,用 于使用由所述至少一個(gè)索引指示的所述至少一個(gè)源API來(lái)生成所述至少一個(gè) 目標(biāo)API。
優(yōu)選地,所述存儲(chǔ)單元從所述至少一個(gè)源API提取可在目標(biāo)中間件平臺(tái) 上執(zhí)行的至少一個(gè)代碼。
優(yōu)選地,所述索引調(diào)用器提取與所述至少一個(gè)索引號(hào)對(duì)應(yīng)的至少一個(gè)代碼。
優(yōu)選地,所述API生成器通過(guò)組合所述至少一個(gè)目標(biāo)代碼來(lái)生成所述至 少一個(gè)目標(biāo)API。
優(yōu)選地,所述中間件平臺(tái)引擎還包括與所述至少一個(gè)目標(biāo)API的結(jié)構(gòu)對(duì) 應(yīng)的圖形庫(kù)、媒介庫(kù)、物理庫(kù)和人工智能(AI)庫(kù)中的至少一個(gè)。 優(yōu)選地,所述媒介庫(kù)是圖形庫(kù)或聲音庫(kù)。
有益效果
本發(fā)明的方法和中間件平臺(tái)引擎有利于降低在異類平臺(tái)之間移植以傳 統(tǒng)方式開(kāi)發(fā)的3維(3D)游戲的移植時(shí)間。
而且,本發(fā)明的方法和中間件平臺(tái)引擎允許在異類平臺(tái)上運(yùn)行各種手機(jī) 游戲,從而促進(jìn)手機(jī)游戲業(yè)務(wù)。
通過(guò)下文結(jié)合附圖的詳細(xì)描述,本發(fā)明的上述目的和其它目的以及優(yōu)點(diǎn)
將是顯而易見(jiàn)的,其中圖1示出了根據(jù)本發(fā)明的示例性實(shí)施例的具有跨平臺(tái)程序生成裝置的設(shè)
備的架構(gòu)圖2是示出了根據(jù)本發(fā)明的示例性實(shí)施例的程序移植機(jī)制的方框圖3是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例的設(shè)備架構(gòu)的方框圖4是示出了根據(jù)本發(fā)明的示例性實(shí)施例在跨平臺(tái)程序生成裝置中生成 API函數(shù)的方法的方框圖5是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例在跨平臺(tái)程序生成裝置中 生成API函數(shù)的方法的方框圖6是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例在跨平臺(tái)程序生成裝置中 生成API函數(shù)的方法的方框圖7是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例在跨平臺(tái)程序生成裝置中 生成API函數(shù)的方法的方框圖8是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序生成裝置的程序 開(kāi)發(fā)工具配置的方框圖9是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序移植方法的程序 開(kāi)發(fā)工具使用的程序開(kāi)發(fā)環(huán)境的方框圖10是示出了根據(jù)本發(fā)明的示例性實(shí)施例的程序開(kāi)發(fā)工具的配置的方 框圖11是示出了根據(jù)本發(fā)明的示例性實(shí)施例的程序開(kāi)發(fā)工具的編譯器的 方框圖12是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序移植裝置的存 儲(chǔ)器利用機(jī)制的配置的方框圖;以及
圖13是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序移植裝置的UI 工具與存儲(chǔ)器之間的關(guān)系的方框圖。
具體實(shí)施方式
發(fā)明方式
將參考附圖詳細(xì)描述本發(fā)明的示例性實(shí)施例。盡管是參考其特定的實(shí)施 例描述本發(fā)明的,但應(yīng)理解功能上等同的各種變型都在本發(fā)明的范圍內(nèi)。 在下文,包括常用數(shù)字的術(shù)語(yǔ),如"第一"和"第二",可用來(lái)描述不同元件。然而,元件并不受這些術(shù)語(yǔ)的限制。這些術(shù)語(yǔ)只用來(lái)區(qū)分元件。例 如,第一元件可被重新命名為第二元件,第二元件也可被重新命名為第一元 件。術(shù)語(yǔ)"和/或"用來(lái)表示相關(guān)聯(lián)的多個(gè)元件的組合或相關(guān)聯(lián)的多個(gè)元件中 的一個(gè)元件。
當(dāng)描述一元件"連接到"另一元件或與另一元件"相關(guān)聯(lián)"時(shí),這些元 件可以彼此直接連接或者彼此相關(guān)聯(lián),但是,也可以理解為第三元件插入在 第一元件和第二元件之間。同時(shí),當(dāng)描述元件彼此"直接連接"或"直接相 關(guān)聯(lián)"時(shí),必須理解的是這兩個(gè)元件之間沒(méi)有其它的元件。
提供下列定義以便清楚一致地理解下文的詳細(xì)描述。除非另外指出,單 數(shù)表達(dá)也包括復(fù)數(shù)表達(dá)。在下文中,詞"包括"或"具有"只用來(lái)指示說(shuō)明 書(shū)中公開(kāi)的特征、數(shù)目、步驟、操作、元件、部件或其組合的存在,但不排 除一個(gè)或多個(gè)其它特征、數(shù)目、步驟、操作、元件、部件或其組合。
除非另外指出,相關(guān)技術(shù)領(lǐng)域的技術(shù)人員應(yīng)根據(jù)常規(guī)用法理解在下文描 述中使用的所有術(shù)語(yǔ),包括技術(shù)術(shù)語(yǔ)和科技術(shù)語(yǔ)在內(nèi)。在常用詞典中定義的 術(shù)語(yǔ)應(yīng)理解為等同于在現(xiàn)有技術(shù)的背景下定義的術(shù)語(yǔ)。在本發(fā)明中除非另外
指出,絕不應(yīng)以理想方式或額外含義來(lái)進(jìn)行解釋。
在所有附圖中使用相同的附圖標(biāo)記來(lái)指代相同或相似部件。省去了對(duì)并 入本文的已知功能和結(jié)構(gòu)的詳細(xì)描述,以避免使本發(fā)明的主題模糊不清。
用于在異類平臺(tái)之間移植程序的中間件平臺(tái)層可包括用來(lái)生成跨平臺(tái) 程序的裝置。在下文中描述本發(fā)明的整個(gè)結(jié)構(gòu),重點(diǎn)放在用于生成跨平臺(tái)程 序的裝置。
圖1是示出了根據(jù)本發(fā)明的示例性實(shí)施例的設(shè)備架構(gòu)圖。參照?qǐng)D1,手
持設(shè)備架構(gòu)包括應(yīng)用層110、中間件適配層]20、庫(kù)層130、框架層140、中 間件平臺(tái)引擎層150、異類運(yùn)行時(shí)間引擎層160、手持設(shè)備適配層(HAL) 170、手持設(shè)備硬件&本地系統(tǒng)軟件層180和應(yīng)用程序接口 (API) 190。
應(yīng)用層IIO包括最高層應(yīng)用程序,例如游戲程序。在此實(shí)施例中,結(jié)合 作為應(yīng)用程序的游戲程序來(lái)描述本發(fā)明。為了簡(jiǎn)化說(shuō)明,參照下列情況來(lái)描 述本發(fā)明,即,為個(gè)人計(jì)算機(jī)(PC)環(huán)境設(shè)計(jì)的程序被轉(zhuǎn)換成可在移動(dòng)環(huán)境 (例如,移動(dòng)電話或者后PC (post PC)環(huán)境)中執(zhí)行的程序。當(dāng)然,可以 將程序從移動(dòng)環(huán)境移植到PC環(huán)境。中間件適配層120負(fù)責(zé)跨平臺(tái)程序的可操作性。中間件適配層120包括 API提取單元,用來(lái)提取與源API對(duì)應(yīng)的目標(biāo)API、以及源API和目標(biāo)API 的數(shù)目。中間件適配層120可包括API映射單元,用于考慮源API和目標(biāo) API的數(shù)目來(lái)將源API映射到目標(biāo)API。這里,源API是被轉(zhuǎn)換之前的API, 目標(biāo)API是對(duì)應(yīng)于源API而創(chuàng)建的API。源API或目標(biāo)API可以是諸如 DirectX、開(kāi)放圖形語(yǔ)言(OpenGL) 、 OpenGL嵌入式系統(tǒng)(OpenGL ES)和 RenderWare之類的函數(shù)中的 一個(gè)。
在將DirectX映射到OpenGL ES的情況下,中間件適配層120支持 DirectX模塊,以便于移植在windows平臺(tái)上設(shè)計(jì)的普通PC游戲。
在將OpenGL映射到OpenGL ES的情況下,中間件適配層120支持移植 在Linux平臺(tái)上設(shè)計(jì)的游戲、以及使用OpenGL開(kāi)發(fā)的游戲和內(nèi)容。部分支 持OpenGL的OpenGL ES可通過(guò)OpenGL的其它功能而被增強(qiáng)。
在將RenderWare映射到OpenGL ES的情況下,中間件適配層120支持 移植使用RenderWare開(kāi)發(fā)的游戲,為游戲控制臺(tái)提供跨平臺(tái)開(kāi)發(fā)環(huán)境,其 中所述游戲控制臺(tái)例如為游戲站2 (PS2) 、 PS3、 Xbox、 GameCube、 PC、 PSP和N-gate。中間件適配層120支持移植PS游戲和基于其它平臺(tái)的游戲。
在支持基于OpenGL ES的擴(kuò)展庫(kù)的情況下,中間件適配層120可提供開(kāi) 發(fā)庫(kù),以改進(jìn)在具有OpenGL ES芯片的移動(dòng)電話和便攜式終端中基于基本 AP擴(kuò)展的功能和性能。
庫(kù)層130提供一組待在轉(zhuǎn)換后的程序上執(zhí)行的庫(kù)。例如,庫(kù)層130配備 了針對(duì)移動(dòng)通信終端和后PC平臺(tái)優(yōu)化的游戲庫(kù)。所述庫(kù)包括圖形、動(dòng)畫(huà)、 聲音、物理、AI和Ext庫(kù)。
框架層140提供了移動(dòng)環(huán)境框架,包括平臺(tái)、硬件(H/W)、接口 (I/F)等。
中間件平臺(tái)引擎150配備有引擎選擇器,用來(lái)選擇中間件引擎和移動(dòng)環(huán) 境引擎。這里,中間件引擎包括存儲(chǔ)模塊、索引調(diào)用模塊和API生成模塊, 其中,所述存儲(chǔ)模塊將索引號(hào)分配給源API,并將API連同索引號(hào)一起存儲(chǔ) 在存儲(chǔ)器中,所述索引調(diào)用模塊調(diào)用創(chuàng)建對(duì)應(yīng)目標(biāo)API所需的源API的索引 號(hào),所述API生成模塊使用由索引號(hào)指示的源API來(lái)創(chuàng)建目標(biāo)API。
存儲(chǔ)模塊從源API中提取執(zhí)行目標(biāo)API的平臺(tái)所需的代碼。此時(shí),索引調(diào)用模塊還提取與索引號(hào)對(duì)應(yīng)的代碼,API通過(guò)將代碼進(jìn)行組合來(lái)生成目標(biāo)
APL
艮卩,中間件平臺(tái)引擎150可使用分別通過(guò)API、功能和結(jié)構(gòu)在中間件適 配層120選擇的函數(shù)來(lái)創(chuàng)建目標(biāo)API。
異類運(yùn)行時(shí)間引擎層160、 HAL 170和手持設(shè)備硬件&本地系統(tǒng)軟件層 180是通常在移動(dòng)環(huán)境中實(shí)現(xiàn)的層。即,這些較低層由與API 190交互操作 的硬件和軟件實(shí)現(xiàn),其中所述API 190包括2D API、 3DAPI、 M&U API、 EglxAPI和擴(kuò)展API。
圖2是示出了根據(jù)本發(fā)明的示例性實(shí)施例的程序移植機(jī)制的方框圖。在 圖2中,示出了源API 210和第二平臺(tái)架構(gòu)220。第二平臺(tái)架構(gòu)220包括中 間件適配層225、中間件適配層引擎230、中間件平臺(tái)引擎240、軟件3D引 擎250和目標(biāo)API 260。描述的重點(diǎn)在不同的結(jié)構(gòu)和功能上。
源API 210可以是DirectX 213、 OpenGL/OpenGL ES 215禾卩RenderWare 217中的一個(gè)。API210中使用的函數(shù)和存儲(chǔ)器結(jié)構(gòu)與目標(biāo)API260中使用的 不同。因此,中間件適配層225、中間件適配層引擎230和中間件平臺(tái)引擎 240修改了函數(shù)結(jié)構(gòu),以便生成適于第二平臺(tái)220的目標(biāo)API 260。
中間件適配層引擎230在中間件適配層225以中間件平臺(tái)引擎240的形 式修改為目標(biāo)API 260適當(dāng)提取的源API 210的函數(shù)。
中間件平臺(tái)引擎240包括中間件引擎243和引擎選擇器245。如上所述, 中間件引擎243使用源API的函數(shù)來(lái)生成目標(biāo)API。引擎選擇器245選擇目 標(biāo)API,以便在相應(yīng)的軟件引擎250上執(zhí)行。
軟件3D引擎250接收通過(guò)引擎選擇器245輸出的目標(biāo)API 260,并執(zhí)行 目標(biāo)API 260。這里,軟件3D引擎250是執(zhí)行3D的引擎。本發(fā)明并不局限 于3D。
圖3是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例的設(shè)備架構(gòu)的方框圖。描 述重點(diǎn)在不同結(jié)構(gòu)和函數(shù)上。
由中間件平臺(tái)引擎150創(chuàng)建的目標(biāo)API在第二平臺(tái)350上執(zhí)行。可以用 HAL和手持設(shè)備硬件&本地系統(tǒng)軟件353、 PDA或移動(dòng)設(shè)備356以及操作系 統(tǒng)(OS) 359來(lái)選擇性地操作第二平臺(tái)350的架構(gòu)。
因此,可通過(guò)中間件平臺(tái)引擎150來(lái)修改目標(biāo)API,以便適于第二平臺(tái)到目前為止,已經(jīng)描述了用來(lái)移植跨平臺(tái)程序的設(shè)備的結(jié)構(gòu)和功能。在 后文將以示例性實(shí)施例的方式描述如何在上述設(shè)備架構(gòu)中轉(zhuǎn)換API函數(shù)。不
過(guò),本發(fā)明并不局限于這些實(shí)施例。
圖4是示出了根據(jù)本發(fā)明的示例性實(shí)施例在跨平臺(tái)程序生成裝中生成 API函數(shù)的方法的方框圖。
在源API210與目標(biāo)API對(duì)應(yīng)的情況下,從源API的因子410中提取生 成目標(biāo)API所需的因子420。這里,因子410是從源API 210的函數(shù)或代碼 中提取的,且可以是創(chuàng)建目標(biāo)API所需的要素之一。創(chuàng)建目標(biāo)API所需的因 子420可用來(lái)通過(guò)中間件平臺(tái)引擎240生成目標(biāo)API。
在一個(gè)源API 210與目標(biāo)API對(duì)應(yīng)的情況下,只分析源API的一個(gè)API 函數(shù)或代碼以提取所需因子,從而容易地生成目標(biāo)API。
為了提取因子,API提取器或中間件平臺(tái)引擎240可將源API和目標(biāo) API的結(jié)構(gòu)進(jìn)行比較。兩個(gè)API的結(jié)構(gòu)彼此相同,中間件平臺(tái)引擎240可直 接將源API轉(zhuǎn)換成目標(biāo)API。如果兩個(gè)API的結(jié)構(gòu)彼此不相同,則API提取 器或中間件平臺(tái)引擎240提取相似因子,并使用提取的因子生成目標(biāo)API。
提取的因子410和420被存儲(chǔ)在存儲(chǔ)器中,并在需要時(shí)被隨時(shí)調(diào)用。提 取的因子410和420可以其原來(lái)的方式直接存儲(chǔ)在存儲(chǔ)器中。而且,可只存 儲(chǔ)因子410和420的索引或存儲(chǔ)器地址。在這種情況下,可使用索引或存儲(chǔ) 器地址調(diào)用這些因子。
圖5是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例在跨平臺(tái)程序生成裝中 生成API函數(shù)的方法的方框圖。
在一個(gè)源API 210對(duì)應(yīng)于多個(gè)目標(biāo)API的情況下,從源API的因子510 中提取目標(biāo)API的多個(gè)因子520和525。這里,從源API 210的函數(shù)或代碼 中提取因子510,并將它們修改為生成目標(biāo)API所需的因子520和530。
盡管存在從源API提取的一個(gè)因子對(duì)應(yīng)于多個(gè)目標(biāo)API的情況,多個(gè) API 520和525也可對(duì)應(yīng)于單個(gè)API。
圖6是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例在跨平臺(tái)程序生成裝中 生成API函數(shù)的方法的方框圖。
在多個(gè)源API 210對(duì)應(yīng)于單個(gè)目標(biāo)API的情況下,從多個(gè)源API 610和615的因子中提取生成目標(biāo)API所需的因子520。
圖7是示出了根據(jù)本發(fā)明的另一示例性實(shí)施例在跨平臺(tái)程序生成裝置中 生成API函數(shù)的方法的方框圖。
在多個(gè)源API 210對(duì)應(yīng)于多個(gè)目標(biāo)API的情況下,從多個(gè)源API的多個(gè) 因子710和715中提取生成多個(gè)API所需的多個(gè)因子710和725。當(dāng)然,多 個(gè)因子720可用來(lái)生成單個(gè)目標(biāo)API。
圖8是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序生成裝置的程序 開(kāi)發(fā)工具的配置的方框圖。
參照?qǐng)D8,程序開(kāi)發(fā)工具配備有源數(shù)據(jù)資源810和850、源轉(zhuǎn)換器820、 工具830、源轉(zhuǎn)換器840、輸出器860、 API鏈接表870和程序源880。在此 實(shí)施例中,假設(shè)程序是游戲程序。
根據(jù)本發(fā)明一實(shí)施例的程序開(kāi)發(fā)工具包括函數(shù)提取器、存儲(chǔ)器地址生成 器和API轉(zhuǎn)換器,其中,所述函數(shù)提取器用來(lái)從源API中提取特定函數(shù),所 述存儲(chǔ)器地址生成器用來(lái)生成與所述函數(shù)對(duì)應(yīng)的存儲(chǔ)器地址,所述API轉(zhuǎn)換 器通過(guò)調(diào)用存儲(chǔ)器地址來(lái)提取源API的函數(shù),并使用提取的函數(shù)生成目標(biāo) API。
生成目標(biāo)API所需的函數(shù)以塊(block)的形式被存儲(chǔ)在預(yù)定存儲(chǔ)器中。 通過(guò)存儲(chǔ)器地址調(diào)用函數(shù),以便使用提取的函數(shù)生成目標(biāo)API。
源數(shù)據(jù)資源810和850是原始數(shù)據(jù),包括3D對(duì)象、圖像、聲音、3D Max/Light wave數(shù)據(jù)等。
資源轉(zhuǎn)換器820將源API函數(shù)的資源轉(zhuǎn)換成與目標(biāo)API對(duì)應(yīng)的平臺(tái)格 式。即,資源轉(zhuǎn)換器820轉(zhuǎn)換在一平臺(tái)上運(yùn)行的資源(其包括2D、 3D、動(dòng) 畫(huà)、移動(dòng)圖片和程序(例如游戲)的聲音數(shù)據(jù))以便適于第二平臺(tái)(例如, 移動(dòng)格式),并優(yōu)化所轉(zhuǎn)換的資源。
工具830將與動(dòng)畫(huà)、地圖、效果和UI相關(guān)的數(shù)據(jù)轉(zhuǎn)換成適于第二平臺(tái) 的另一種類型的數(shù)據(jù)。例如,工具830的動(dòng)畫(huà)工具通過(guò)網(wǎng)格(mesh)將使用 3D Max和Lightwave創(chuàng)建的動(dòng)畫(huà)進(jìn)行組合。
映射工具可與背景相關(guān)聯(lián)地在工具830上加載地圖片圖案(Map Tile Pattern)配置,并通過(guò)網(wǎng)格(cell)在地圖上自動(dòng)指定所加載的地圖片(Map Tile)。映射工具還使用工具上提供的位圖像素的RGB值或刷子,通過(guò)網(wǎng)格用2的冪來(lái)設(shè)置地圖尺寸,并設(shè)置地形高度。映射工具還配備用于設(shè)置霧和 光的功能(即,用于通過(guò)地圖設(shè)置光的亮度和色彩以及霧的厚度的功能)。 在這種情況下,映射工具允許通過(guò)網(wǎng)格設(shè)置構(gòu)成地圖的對(duì)象。映射工具還通 過(guò)網(wǎng)格設(shè)置屬性(不可移動(dòng)區(qū)域、可移動(dòng)區(qū)域以及安全區(qū)域)。使用該功能,
可根據(jù)對(duì)象來(lái)指定對(duì)象的移動(dòng)路線。例如,移動(dòng)對(duì)象(mob)、非玩家角色 (NPC)和角色可根據(jù)對(duì)象獨(dú)立地分配其路線。
使用工具830的UI工具,使得程序員對(duì)接口進(jìn)行編程時(shí)的投入最小化, 并優(yōu)化了圖形數(shù)據(jù)量。資源工具支持TGA、 BMP和其它文件格式。資源工 具將構(gòu)成位圖的資源切割成合適尺寸,并給切割的片(tile)分配ID。資源 工具還將接口所需資源的自動(dòng)組合模式分配給創(chuàng)建按鈕的動(dòng)作。
UI工具中的接口工具通過(guò)文件夾并通過(guò)配置每個(gè)文件夾來(lái)管理游戲接 口。接口工具還支持使用資源工具所分配的ID和模式來(lái)組成接口。接口工 具指定接口的初始打開(kāi)位置和快捷鍵,以單獨(dú)文件形式來(lái)管理接口上的文 本,并配置接口的alpha混合程度。
源轉(zhuǎn)換器840轉(zhuǎn)換源API的庫(kù),以便成為目標(biāo)API的平臺(tái)格式。源轉(zhuǎn)換 器840負(fù)責(zé)自動(dòng)將DirectX、 OpenGL和RenderWare圖形庫(kù)轉(zhuǎn)換成適合于手 機(jī)游戲中間件平臺(tái)結(jié)構(gòu)。源轉(zhuǎn)換器840將DirectX、 RenderWare禾卩OpenGL 庫(kù)轉(zhuǎn)換成中間件平臺(tái)庫(kù),例如DirectX->penGL ES或RenderWare->penGL ES。
輸出器860轉(zhuǎn)換源API的內(nèi)容,以便成為目標(biāo)API的平臺(tái)格式。輸出器 860負(fù)責(zé)將2D、 3D和動(dòng)作圖形圖像轉(zhuǎn)換成適于移動(dòng)環(huán)境的格式。例如,輸 出器860配備有輸出程序(explorer program),以便將使用3D Max創(chuàng)建的 3D圖形圖像轉(zhuǎn)換成移動(dòng)3D格式,并將如Photoshop和Audio Video Interleave (AVI)文件之類的其它內(nèi)容轉(zhuǎn)換成適于移動(dòng)環(huán)境的格式。
API鏈接表870配備有API鏈接表值,以便將DirectX、 RenderWare和 OpenGL庫(kù)鏈接到中間件平臺(tái)庫(kù)。
程序源880配備有原始程序源。例如,程序源880可包括游戲程序源、 內(nèi)容程序源等。
這里,程序源880可包括由編譯器(參見(jiàn)圖11)生成的中間數(shù)據(jù)。可選 擇地提供API鏈接表870和源程序880。
圖9是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序移植方法的程序開(kāi)發(fā)工具使用的程序開(kāi)發(fā)環(huán)境的方框圖。參照?qǐng)D9,程序開(kāi)發(fā)環(huán)境包括規(guī)劃
部分910、編程部分920和設(shè)計(jì)部分930。
規(guī)劃部分910負(fù)責(zé)任務(wù)915,如文本輸入、菜單框架配置、鍵事件處理、
模擬測(cè)試、數(shù)據(jù)加載和存儲(chǔ)器管理。
編程部分920負(fù)責(zé)任務(wù)925,如游戲引擎開(kāi)發(fā)和電話測(cè)試。 設(shè)計(jì)部分930負(fù)責(zé)任務(wù)930,如鍵事件處理、菜單/窗口配置、圖像設(shè)計(jì)、
屏幕布局和模擬測(cè)試。
規(guī)劃部分910、編程部分920和設(shè)計(jì)部分930共同合作,以便使用上述
UI工具和游戲編輯器940高效開(kāi)發(fā)游戲程序。使用UI工具和游戲編輯器940
所開(kāi)發(fā)的游戲通過(guò)游戲運(yùn)行引擎950最終創(chuàng)建為游戲程序960。
圖10是示出了根據(jù)本發(fā)明的示例性實(shí)施例的程序開(kāi)發(fā)工具的配置的方
框圖。參照?qǐng)D10,程序開(kāi)發(fā)工具包括類層結(jié)構(gòu)1010、 UI工具1020、輸出器
1030、對(duì)象1040、事件1050、時(shí)間線1060和模擬器1070。 類層結(jié)構(gòu)101被設(shè)計(jì)成可繼承和再次使用相同功能和資源。 UI工具1020收集原始圖像和圖形數(shù)據(jù),從而創(chuàng)建用戶接口數(shù)據(jù)。 輸出器1030重新處理原始源,如圖像(BMP, PNG)、圖形、文本和
聲音,以適于第二平臺(tái)格式,且UI工具和游戲編輯器940生成可用對(duì)象1040。
對(duì)象被設(shè)置在時(shí)間線1060上,使得模擬器1070模擬分配給各個(gè)框架的資源
和事件。
模擬器1070配備有調(diào)試功能和測(cè)試運(yùn)行功能,以便上載程序,提前調(diào) 試程序出現(xiàn)的問(wèn)題。
圖11是示出了根據(jù)本發(fā)明的示例性實(shí)施例的程序開(kāi)發(fā)工具的編譯器的 方框圖。
參照?qǐng)Dll,編譯器包括掃描器1U0、 1140和1170,解析器(parser) 1120、 1150和1180,中間語(yǔ)言生成器1130,匯編語(yǔ)言生成器1160和二進(jìn)制 代碼生成器1190。
掃描器1110、 1140和1170,解析器1120、 1150和1180掃描讀取C/CPP 源代碼或用于生成中間語(yǔ)言、匯編語(yǔ)言和二進(jìn)制代碼的專用語(yǔ)言代碼,然后 在解析過(guò)程中通過(guò)語(yǔ)法指示轉(zhuǎn)換或者通過(guò)中間表現(xiàn)形式(如ASP)直接生成 代碼。中間語(yǔ)言生成器1130接收輸入源程序,并由源代碼生成中間語(yǔ)言代碼。 源程序通過(guò)語(yǔ)義、語(yǔ)法分析生成中間表現(xiàn)形式,且中間生成器1130將中間 表現(xiàn)形式翻譯成中間語(yǔ)言。此時(shí),中間語(yǔ)言生成器1130在語(yǔ)義分析過(guò)程中 驗(yàn)證句子,如果在語(yǔ)義分析中發(fā)現(xiàn)錯(cuò)誤則報(bào)告錯(cuò)誤,以便編譯器用戶更正錯(cuò) 誤。只有那些既沒(méi)有語(yǔ)義錯(cuò)誤也沒(méi)有語(yǔ)法錯(cuò)誤的句子才會(huì)被翻譯成中間語(yǔ)
言。有兩種中間語(yǔ)言生成方法前一種在解析過(guò)程中通過(guò)語(yǔ)義指示轉(zhuǎn)換在解 析過(guò)程中直接生成代碼;后一種由在解析過(guò)程中間生成的中間表現(xiàn)形式(如 解析樹(shù)或者抽象語(yǔ)義樹(shù)(AST))來(lái)生成代碼。盡管AST和專用游戲中間語(yǔ) 言被用作中間表現(xiàn)形式和中間語(yǔ)言,但本發(fā)明并不局限于此。
匯編語(yǔ)言生成器1160通過(guò)中間語(yǔ)言生成過(guò)程生成匯編語(yǔ)言,且二進(jìn)制 代碼生成器1190通過(guò)類似過(guò)程生成二進(jìn)制代碼。
圖12是根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序移植裝置的存儲(chǔ)器使 用機(jī)制配置的方框圖。參照?qǐng)D12,存儲(chǔ)器使用機(jī)制包括第一平臺(tái)函數(shù)1210、 中間件平臺(tái)引擎1220和第二平臺(tái)結(jié)構(gòu)1230。
第一平臺(tái)函數(shù)1210和中間件平臺(tái)引擎1220與上述API函數(shù)(DirectX、 OpenGL、 OpenGLES和RenderWare)和中間件平臺(tái)引擎對(duì)應(yīng)。
根據(jù)硬件和軟件,以不同的存儲(chǔ)器結(jié)構(gòu)來(lái)實(shí)現(xiàn)第二平臺(tái)結(jié)構(gòu)1230,因此 應(yīng)當(dāng)考慮與中間件平臺(tái)引擎1220的兼容性來(lái)設(shè)計(jì)存儲(chǔ)器結(jié)構(gòu)。例如,在 OpenGL ES中并不支持多寫(xiě)(multi write)及緩沖器映射。在這種情況下, 硬件存儲(chǔ)器結(jié)構(gòu)不兼容,但軟件存儲(chǔ)器結(jié)構(gòu)能兼容。因此,單獨(dú)分配軟件中 使用的結(jié)構(gòu)和存儲(chǔ)器結(jié)構(gòu)。
圖13是示出了根據(jù)本發(fā)明的示例性實(shí)施例的跨平臺(tái)程序移植裝置的UI 工具與存儲(chǔ)器之間的關(guān)系的方框圖。參照?qǐng)D13,顯示了公用存儲(chǔ)器1310、 UI執(zhí)行命令1320以及函數(shù)API 1333、 1336和1339。
還通過(guò)在UI處生成的命令來(lái)調(diào)用函數(shù),且用指針訪問(wèn)所調(diào)用的函數(shù)。 在這種情況下,通過(guò)UI命令所需的公用存儲(chǔ)器1310來(lái)進(jìn)行信息交換。艮口, UI命令所需的公用存儲(chǔ)器1310作為媒介,通過(guò)它可傳送變量和結(jié)構(gòu)。
因此,UI執(zhí)行命令1320參照UI命令所需的公用存儲(chǔ)器1310,并調(diào)用 所需的函數(shù)API 1333、 1336和1339。
如上所述,本發(fā)明的程序移植和跨平臺(tái)程序開(kāi)發(fā)方法存儲(chǔ)在存儲(chǔ)媒介中,并由存儲(chǔ)媒介所附連的設(shè)備(如移動(dòng)手持設(shè)備)來(lái)執(zhí)行。這里,存儲(chǔ)媒
介包括磁的和光的存儲(chǔ)媒介,如硬盤(pán)、磁帶、壓縮盤(pán)(CD)、影像CD (VCD)、 數(shù)字影像盤(pán)(DVD)、以及布置在離線或在線網(wǎng)絡(luò)上的客戶或服務(wù)器計(jì)算機(jī) 的數(shù)據(jù)庫(kù)。
盡管上文已經(jīng)詳細(xì)描述了本發(fā)明的示例性實(shí)施例,但應(yīng)清楚理解,本文 教導(dǎo)的、對(duì)本領(lǐng)域技術(shù)人員而言顯而易見(jiàn)的基本發(fā)明構(gòu)思的許多變型和/或改 進(jìn)仍落在由所附權(quán)利要求限定的本發(fā)明的精神和范圍內(nèi)。
工業(yè)實(shí)用性
本發(fā)明可應(yīng)用到用來(lái)移植程序的各種應(yīng)用程序編程領(lǐng)域,使得可在不同 平臺(tái)上運(yùn)行的設(shè)備中執(zhí)行程序。
權(quán)利要求
1.一種用于將API從源中間件平臺(tái)移植到目標(biāo)中間件平臺(tái)的方法,包括將分配給多個(gè)源API的索引號(hào)存儲(chǔ)在與源中間件平臺(tái)相關(guān)聯(lián)的存儲(chǔ)器中;提取用于生成目標(biāo)API所需的并與所述源API對(duì)應(yīng)的至少一個(gè)索引;以及使用由所述至少一個(gè)索引指示的至少一個(gè)源API生成至少一個(gè)目標(biāo)API。
2. 如權(quán)利要求l所述的方法,其中存儲(chǔ)索引號(hào)包括提取能在目標(biāo)中間 件平臺(tái)引擎上執(zhí)行的至少一個(gè)代碼,并存儲(chǔ)所述至少一個(gè)代碼。
3. 如權(quán)利要求2所述的方法,其中調(diào)用所述索引中的一個(gè)索引包括提 取與所述至少一個(gè)索引對(duì)應(yīng)的至少一個(gè)目標(biāo)代碼。
4. 如權(quán)利要求3所述的方法,其中生成至少一個(gè)目標(biāo)API包括通過(guò)組合所述至少一個(gè)目標(biāo)代碼來(lái)創(chuàng)建所述至少一個(gè)目標(biāo)API。
5. —種用于在具有不同中間件平臺(tái)的多個(gè)裝置之間移植應(yīng)用編程接口的中間件平臺(tái)引擎,包括存儲(chǔ)單元,用于將索引號(hào)分配給多個(gè)源API,并在存儲(chǔ)器中存儲(chǔ)所述索 引號(hào);索引調(diào)用器,用于調(diào)用與至少一個(gè)目標(biāo)API對(duì)應(yīng)的至少一個(gè)源API的至 少一個(gè)索引號(hào);API生成器,用于使用由所述至少一個(gè)索引指示的所述至少一個(gè)源API 來(lái)生成所述至少一個(gè)目標(biāo)API。
6. 如權(quán)利要求5所述的中間件平臺(tái)引擎,其中所述存儲(chǔ)單元從所述至少 一個(gè)源API中提取能在目標(biāo)中間件平臺(tái)上執(zhí)行的至少一個(gè)代碼。
7. 如權(quán)利要求6所述的中間件平臺(tái)引擎,其中所述索引調(diào)用器提取與所 述至少一個(gè)索弓I號(hào)對(duì)應(yīng)的至少一個(gè)代碼。
8. 如權(quán)利要求7所述的中間件平臺(tái)引擎,其中所述API生成器通過(guò)組合 所述至少一個(gè)目標(biāo)代碼來(lái)生成所述至少一個(gè)目標(biāo)API。
9. 如權(quán)利要求5所述的中間件平臺(tái)引擎,還包括與所述至少一個(gè)目標(biāo)API的結(jié)構(gòu)對(duì)應(yīng)的圖形庫(kù)、媒介庫(kù)、物理庫(kù)和人工智能(AI)庫(kù)中的至少一個(gè)。
10. 如權(quán)利要求9所述的中間件平臺(tái)引擎,其中所述媒介庫(kù)是圖形庫(kù)或 聲音庫(kù)。
全文摘要
提供了一種在多個(gè)異類平臺(tái)之間移植跨平臺(tái)程序的方法及用于該方法的中間件平臺(tái)引擎。將API從源中間件平臺(tái)移植到目標(biāo)中間件平臺(tái)的方法包括將分配給多個(gè)源API的索引號(hào)存儲(chǔ)在與源中間件平臺(tái)相關(guān)聯(lián)的存儲(chǔ)器中;提取用于生成目標(biāo)API所需的并與源API對(duì)應(yīng)的至少一個(gè)索引;以及使用由至少一個(gè)索引指示的至少一個(gè)源API生成至少一個(gè)目標(biāo)API。本發(fā)明的方法和中間件平臺(tái)引擎有利于降低以傳統(tǒng)方式開(kāi)發(fā)的3D游戲在異類平臺(tái)之間的移植時(shí)間。
文檔編號(hào)G06F17/00GK101641690SQ200880009344
公開(kāi)日2010年2月3日 申請(qǐng)日期2008年1月22日 優(yōu)先權(quán)日2007年1月22日
發(fā)明者成英淑 申請(qǐng)人:E3網(wǎng)絡(luò)股份有限公司