專利名稱:開放式的游戲內(nèi)置平臺的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是一種能夠在游戲環(huán)境植入外部應(yīng)用程序的方法。
背景技術(shù):
當前網(wǎng)絡(luò)游戲是互聯(lián)網(wǎng)各細分行業(yè)中的領(lǐng)頭羊,經(jīng)歷10余年的快速發(fā)展,持續(xù)引領(lǐng)網(wǎng)民的大眾化娛樂消費需求。當前網(wǎng)絡(luò)游戲的研發(fā)也進入高速發(fā)展階段,從最初的每年只發(fā)布2 3款新游戲到現(xiàn)在平均每天發(fā)布1款新游戲。網(wǎng)絡(luò)游戲數(shù)量的劇增,大大的增加了網(wǎng)民娛樂的選擇性,然而從產(chǎn)品角度也帶來了一系列問題。其一,每一款游戲的所有組件、服務(wù)例如注冊、登陸、支付等都是獨立開發(fā),不但耗費時間也大大增加研發(fā)成本;其二, 每款游戲的所有組件獨立研發(fā)帶來同一團隊公司的產(chǎn)品無法形成一體化的服務(wù)模式,資源無法統(tǒng)一協(xié)調(diào);其三,眾多游戲玩家的附屬需求難以實現(xiàn),例如語聊、截圖、錄像、即時通訊、 瀏覽器等,絕大部分研發(fā)團隊難以完全實現(xiàn)為玩家提供這些服務(wù)。而從研發(fā)角度來說,游戲本身又是一個封閉的系統(tǒng),外部開發(fā)者難以為游戲開發(fā)插件或模塊,這就游戲產(chǎn)品本身的封閉性。
發(fā)明內(nèi)容
本發(fā)明旨在打破游戲產(chǎn)品的封閉性,以內(nèi)嵌技術(shù)為基礎(chǔ),為游戲提供開放式的內(nèi)置平臺。游戲內(nèi)置平臺的本質(zhì)是實現(xiàn)游戲與外部應(yīng)用程序的通道,基于這個平臺能夠讓外部開發(fā)者以第三方身份為游戲開發(fā)更多擴展功能。從技術(shù)模型上來說,游戲內(nèi)置平臺是基于插件式的管理模型,根據(jù)插件規(guī)范進行配置并開發(fā)相應(yīng)業(yè)務(wù)邏輯模塊。本發(fā)明的游戲內(nèi)置平臺適用于所有的具有客戶端的網(wǎng)絡(luò)游戲,能夠自動監(jiān)測目標游戲的啟動,并把內(nèi)置平臺注入到游戲中,然后通過插件管理器加載各項已配置的功能插件。
圖1是本發(fā)明開放式游戲內(nèi)置平臺的整體架構(gòu)圖;圖2是本發(fā)明開放式游戲內(nèi)置平臺中掛接引擎的功能原理具體實施例方式本發(fā)明基于插件式管理模型實現(xiàn)游戲內(nèi)置平臺,破除游戲產(chǎn)品技術(shù)本身的封閉性,能夠從第三方角度為游戲提供更多擴展功能。游戲內(nèi)置平臺的整體架構(gòu)如圖1所示。本發(fā)明游戲內(nèi)置平臺核心包括5個部分游戲監(jiān)測引擎、事件掛接引擎、內(nèi)嵌渲染、插件管理器、插件與規(guī)范。(1)游戲監(jiān)測引擎游戲監(jiān)測引擎的作用是監(jiān)測游戲的啟動與結(jié)束。當應(yīng)用程序啟動時獲取進程名, 通過把該進程名稱與預(yù)存游戲進程名列表進行比較,可以確定是否游戲進程,且可以確定是什么游戲。對于進程啟動與結(jié)束的監(jiān)測可以使用全局鉤子技術(shù)實現(xiàn)。
游戲監(jiān)測引擎的另外一個作用是,當游戲啟動時負責把游戲內(nèi)置平臺模塊內(nèi)嵌到游戲中,當游戲結(jié)束時把游戲內(nèi)置平臺從游戲中卸載。全局鉤子技術(shù)能夠捕獲所有進程的啟動與結(jié)束事件,游戲監(jiān)測引擎只需要在捕獲到啟動與結(jié)束事件時判定該事件是否發(fā)生在游戲進程即可。當游戲啟動并被截獲事件后,游戲監(jiān)測引擎就會把游戲內(nèi)置平臺模塊內(nèi)嵌到游戲中。(2)事件掛接引擎當游戲內(nèi)置平臺模塊進入到游戲進程后,首先就需要掛接各類事件,便于在后續(xù)傳遞給插件管理器并進行相應(yīng)派發(fā),實現(xiàn)對插件功能的驅(qū)動。要在游戲中顯示各項插件UI, 需要依賴掛接圖形渲染引擎;插件功能的實現(xiàn)則需要能夠接收用戶的鼠標鍵盤消息;而為使插件功能的正常執(zhí)行還需要攔截一些功能事件。圖2就是掛接引擎的功能原理圖。游戲內(nèi)置平臺需要掛接4部分事件>圖形渲染事件掛接圖形渲染引擎,攔截圖形渲染事件是為能夠?qū)崿F(xiàn)內(nèi)嵌渲染,當游戲運行時隨著主線程的消息循環(huán)會不斷觸發(fā)渲染事件用于實現(xiàn)游戲界面渲染。 渲染事件分為五種創(chuàng)建設(shè)備、銷毀設(shè)備、渲染、設(shè)備重置、設(shè)備丟失。根據(jù)渲染引擎的不同,攔截方法也不同。對于⑶I類型游戲,只需要攔截BeginPaint和EndPaint這兩個API接口即可;對于OpenGL類型游戲,需要攔截SwapBuffer接口 ;對于DirectX類型游戲,需要截取 IDirect3DDevice9 的 TestCooperativeLevel、Reset、Present 接口 以及 IDirect3DSwapChain9 白勺 Present 。>消息事件指對于游戲窗體消息處理過程的攔截,通aktWindowLong設(shè)置窗體消息處理新過程,替換原消息處理過程。>操作事件攔截用戶的鼠標、鍵盤、手柄的操作,用于實現(xiàn)對插件功能的驅(qū)動。>其他功能事件改變窗體大小的事件、輸入法事件、調(diào)節(jié)分辨率等。(3)內(nèi)嵌渲染通過本發(fā)明游戲內(nèi)置平臺中的事件掛接引擎,已經(jīng)攔截到圖形渲染事件,那么就表明兩點其一,渲染時機,每次需要渲染時就能得到通知;其二,渲染設(shè)備,對于同一個游戲渲染設(shè)備是相同的。由于各插件本身并不實現(xiàn)UI渲染,只實現(xiàn)插件功能業(yè)務(wù)邏輯,UI部分都是由內(nèi)置平臺本身內(nèi)部實現(xiàn)。因而要把各項插件的圖形渲染到游戲界面,首先要把插件UI轉(zhuǎn)化為位圖,因而不同插件的UI是一樣的,都是位圖。這樣對于游戲內(nèi)置平臺來說,只需要針對不同的渲染引擎實現(xiàn)位圖貼圖功能即可實現(xiàn)插件UI在游戲中的內(nèi)嵌渲染。對于GDI、0penGL類型的游戲,采用⑶I貼圖方式即可。對于DirectX、DDraw類型的游戲,則需要為插件UI建立動態(tài)紋理,并把UI位圖數(shù)據(jù)更新到動態(tài)紋理,最后才把該動態(tài)紋理渲染到游戲界面。(4)插件管理器插件管理器的作用是組織與管理各項插件。在Windows桌面環(huán)境,系統(tǒng)對于各個應(yīng)用程序進行管理,確保同一時刻僅有一個窗口處于激活狀態(tài),各種設(shè)備輸入消息都會派發(fā)到處于激活狀態(tài)的窗口。游戲內(nèi)置平臺是通過強制手段把應(yīng)用程序內(nèi)嵌到游戲的,因而對于游戲環(huán)境而言原本并沒有窗體管理這個概念,為實現(xiàn)對各項插件的管理,就需要實現(xiàn)插件管理器,以便維護窗口焦點狀態(tài)以及各項參數(shù),用于進行各項事件派發(fā)。
插件管理器,首先維護一個插件鏈表,處于鏈表頭的插件表示處于激活狀態(tài)。當焦點改變時,需要調(diào)整鏈表順序。對于圖形渲染事件,確保派發(fā)給每一個插件;對于消息、操作事件,根據(jù)插件鏈表依次進行派發(fā),直到有一個插件處理為止。(5)插件與規(guī)范為確保游戲內(nèi)置平臺的插件開發(fā)盡量簡單,在插件中只包含目標功能的業(yè)務(wù)邏輯,而UI的渲染都是由內(nèi)置平臺本身內(nèi)部實現(xiàn)。為使插件管理器能夠識別插件,在應(yīng)用之前需要對插件進行相關(guān)配置,包括界面大小、問題、UI元素、功能參數(shù)等,這些即為插件規(guī)范。本發(fā)明并不限定此規(guī)范的嚴格定義, 按照實際應(yīng)用需求定義即可。
權(quán)利要求
1.開放式的游戲內(nèi)置平臺,其特征在于,能夠自動監(jiān)測游戲的啟動并內(nèi)嵌到游戲中,通過插件管理器加載各項已配置的功能插件。游戲內(nèi)置平臺被加載到游戲中后,掛接各類事件,便于在后續(xù)傳遞給插件管理器并進行相應(yīng)派發(fā),實現(xiàn)對插件功能的驅(qū)動。
2.根據(jù)權(quán)利1所述的開放式的游戲內(nèi)置平臺,其特征在于,采用插件式的管理模型,能夠讓外部開發(fā)者以第三方身份為游戲開發(fā)更多擴展功能,而不需要游戲開發(fā)團隊從代碼級別的接入。
3.根據(jù)權(quán)利1所述的開放式的游戲內(nèi)置平臺,其特征在于,適用于所有的具有客戶端的網(wǎng)絡(luò)游戲,能夠自動監(jiān)測游戲的啟動并內(nèi)嵌到游戲中。
4.根據(jù)權(quán)利1所述的開放式的游戲內(nèi)置平臺,其特征在于,游戲內(nèi)置平臺內(nèi)嵌到游戲后,至少掛接3類事件圖形渲染事件、窗體消息事件、用戶的鼠標、鍵盤、手柄等操作事件。
5.根據(jù)權(quán)利1所述的開放式的游戲內(nèi)置平臺,其特征在于,能夠讓第三方功能組件的界面在游戲中實現(xiàn)渲染。
6.根據(jù)權(quán)利1所述的開放式的游戲內(nèi)置平臺,其特征在于,所有操作僅通過掛接底層接口實現(xiàn),不對游戲主程序作任何修改。
7.根據(jù)權(quán)利4所述的開放式的游戲內(nèi)置平臺,圖形渲染事件是指基于⑶I、DirectX, DDraw、OpenGL這4類渲染引擎的應(yīng)用程序在執(zhí)行圖形渲染時調(diào)用相應(yīng)函數(shù)接口的動作。
全文摘要
本發(fā)明旨在打破游戲產(chǎn)品的封閉性,以內(nèi)嵌技術(shù)為基礎(chǔ),為游戲提供開放式的內(nèi)置平臺。游戲內(nèi)置平臺的本質(zhì)是實現(xiàn)游戲與外部應(yīng)用程序的通道,基于這個平臺能夠讓外部開發(fā)者以第三方身份為游戲開發(fā)更多擴展功能。從技術(shù)模型上來說,游戲內(nèi)置平臺是基于插件式的管理模型,根據(jù)插件規(guī)范進行配置并開發(fā)相應(yīng)業(yè)務(wù)邏輯模塊。本發(fā)明的游戲內(nèi)置平臺適用于所有的具有客戶端的網(wǎng)絡(luò)游戲,能夠自動監(jiān)測目標游戲的啟動,并把內(nèi)置平臺注入到游戲中,然后通過插件管理器加載各項已配置的功能插件。
文檔編號G06F19/00GK102254079SQ201010177309
公開日2011年11月23日 申請日期2010年5月17日 優(yōu)先權(quán)日2010年5月17日
發(fā)明者張靜盛 申請人:張靜盛