專利名稱:一種游戲虛擬機及其實現(xiàn)的游戲開發(fā)系統(tǒng)和方法
技術(shù)領域:
本發(fā)明涉及游戲開發(fā)技術(shù),特別是指一種游戲虛擬機以及基于其實現(xiàn)的游 戲開發(fā)系統(tǒng)和方法。
背景技術(shù):
在目前的互聯(lián)網(wǎng)應用中,隨著即時通訊(IM, Instant Messaging )的迅速發(fā) 展,基于即時通訊的各種應用和服務越來越廣泛地被推廣使用,比如多人在 線游戲,同時由兩個或兩個以上用戶進入并參與同一個游戲等等。
現(xiàn)有技術(shù)中,游戲開發(fā)已有一些較為成熟的解決方案,如一些即時通訊游 戲中休閑小游戲的開發(fā),目前已有的一種游戲開發(fā)系統(tǒng)如圖1所示,包括游 戲客戶端IO、游戲平臺20、游戲服務器30、以及游戲服務端40。其中,游戲 客戶端IO,用于為游戲用戶提供游戲界面,并實現(xiàn)游戲邏輯;游戲平臺20,在 實際應用中也稱為游戲大廳,用于與游戲客戶端IO進行通訊,負責游戲用戶進 入、退出游戲,實現(xiàn)各款游戲的下載、安裝、配置、組隊、交流、道具購買等 功能管理,還用于與游戲服務器30進行網(wǎng)絡通訊,獲取各種狀態(tài),并根據(jù)不同 狀態(tài)進行不同處理;游戲服務器30,用于與游戲平臺20進行網(wǎng)絡通訊,并實 現(xiàn)游戲測試、游戲發(fā)布、用戶狀態(tài)查詢、游戲信息轉(zhuǎn)發(fā)、游戲賬戶認證及管理、 賬單記錄等功能;游戲服務端40,用于負責對應款游戲的游戲邏輯,由游戲服 務器30加載運行,每款游戲?qū)粋€游戲服務端。
圖1中,游戲客戶端10和游戲平臺20在Windows環(huán)境下運行,游戲服務 器30和游戲服務端40在Linux環(huán)境下運行;游戲客戶端10在游戲平臺20中 以COM標準接口方式啟動,通過COM接口實現(xiàn)游戲客戶端10與游戲平臺20 之間的雙向通訊;游戲平臺20通過TCP等網(wǎng)絡通訊方式,與遠程Linux操作
系統(tǒng)下的游戲服務器30通訊;游戲服務端40在Linux環(huán)境下以共享厙(SO, shared object)文件的形式存在,SO文件可以被游戲服務器30調(diào)用并加載;游 戲服務器30以動態(tài)鏈接庫的方式加載游戲服務端40,與游戲服務端40進行接 口調(diào)用。這里,所述Linux環(huán)境下的SO文件類似于Windows環(huán)境下的動態(tài)鏈 接庫(DLL, Dynamic Link Library )文件。
在開發(fā)過程中,每次對編輯好代碼自測時,游戲服務端40需要將自身在 Windows環(huán)境下編輯好的代碼上傳到游戲服務器30所在的Linux機器中,然后 用Linux環(huán)境下的6++進行編譯生成SO文件,最后再啟動游戲服務器30運行 所生成的SO文件。
現(xiàn)有游戲開發(fā)系統(tǒng)在實現(xiàn)過程中存在以下缺陷
第一,游戲服務端開發(fā)繁瑣、調(diào)試要求高。由于游戲服務端編輯的代碼需 要先上傳到Linux機器編譯為SO文件,才能在游戲服務器運行,這樣,如果 在開發(fā)過程中,游戲服務器的運行和預期有差別需要調(diào)試時,就需要調(diào)試人員 對Linux環(huán)境以及Linux調(diào)試器比較熟悉,這對于Windows程序員來說,難度 較大且比較費時。
第二,在開發(fā)過程中,游戲服務端處于Linux環(huán)境下,對于游戲平臺上看 到的房間需要在特定服務器上預先配置,這使得每個游戲在開發(fā)前都需要配置 各自的開發(fā)環(huán)境,才能使游戲服務器正確的加載游戲服務端,從而導致開發(fā)環(huán) 境的配置非常繁瑣、復雜。
第三,由于游戲服務端代碼的編譯及運行都需要在具有Linux操作系統(tǒng)的 服務器上,而這類服務器大都是內(nèi)部用服務器,只有在開發(fā)公司內(nèi)部才能登錄, 因此,使游戲開發(fā)只能局限在開發(fā)公司內(nèi)部進行,不能隨意更換開發(fā)地點。
第四,在游戲客戶端開發(fā)過程中,如果是多人玩的游戲,則需要啟動多個 游戲平臺和多個游戲客戶端,游戲平臺和游戲客戶端的個數(shù)與參與游戲的用戶 數(shù)相等,如此,對參與開發(fā)的機器的數(shù)量和性能有較高要求,增加了資源占用。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種游戲虛擬機及其實現(xiàn)的游戲開 發(fā)系統(tǒng)和方法,能夠減少游戲服務端開發(fā)、配置及調(diào)試的復雜度,降低對開發(fā) 機器性能和數(shù)量的要求、以及資源的占用。
為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的
本發(fā)明提供了一種游戲虛擬機,包括管理服務線程和客戶端線程;其中,
所述管理服務線程,用于管理游戲用戶,完成與客戶端線程和游戲服務端
之間的消息交互,并用于加載游戲服務端;
所述客戶端線程,用于啟動游戲客戶端,并通過調(diào)用接口實現(xiàn)與游戲客戶 端的雙向通訊。
本發(fā)明還提供了一種游戲開發(fā)系統(tǒng),包括游戲客戶端和游戲服務端;關(guān)鍵 是,該系統(tǒng)還包括位于游戲客戶端和游戲服務端之間的游戲虛擬機;
所述游戲虛擬機,通過調(diào)用接口與游戲客戶端和游戲服務端進行雙向通訊, 實現(xiàn)游戲用戶的管理,并加載動態(tài)鏈接庫DLL文件形式的游戲服務端。
上述方案中,所述游戲虛擬機包括管理服務線程和客戶端線程;其中,所 述管理服務線程,用于管理游戲用戶,實現(xiàn)游戲用戶進入、退出、參與游戲, 完成與客戶端線程和游戲服務端之間的消息交互,并用于加載游戲服務端;所 述客戶端線程,用于啟動游戲客戶端,并通過調(diào)用接口實現(xiàn)與游戲客戶端的雙 向通訊。
其中,所述管理服務線程包括主線程和服務端線程;所述主線程,用于實 現(xiàn)游戲用戶的管理、以及與服務端線程和客戶端線程之間的消息交互;所述服 務端線程,用于與游戲服務端進行通訊交互,加載游戲服務端。
上述方案中,所述客戶端線程為一個以上,所述游戲客戶端為一個以上, 客戶端線程與游戲客戶端一一對應。
上述方案中,所述游戲虛擬機開發(fā)和運行于Windows環(huán)境下。
本發(fā)明還提供了一種游戲開發(fā)方法,包括,在游戲客戶端和游戲服務端之
間設置包含一個以上線程的游戲虛擬機;該方法還包括
游戲虛擬機啟動時,啟動并初始化游戲虛擬機中的管理服務線程,之后加
載DLL文件形式的游戲服務端并運行;
游戲用戶在游戲虛擬機中選定自身參與游戲所需座位時,游戲虛擬機啟動 并初始化對應該游戲用戶的客戶端線程;
初始化后的客戶端線程讀取一個游戲標識ClassID,并啟動參與所讀取游戲 標識對應的游戲的游戲客戶端,之后與游戲客戶端進行通訊交互。
其中,所述管理服務線程包括主線程和服務端線程;相應的,所述啟動并 初始化游戲虛擬機中的管理服務線程為啟動主線程和服務端線程,并初始化 服務端線程;所述加載DLL文件形式的游戲服務端為由初始化后的服務端線 程加載DLL文件形式的游戲服務端。
本發(fā)明提供了一種在Windows環(huán)境下開發(fā)的游戲虛擬機及其實現(xiàn)的游戲開 發(fā)系統(tǒng)和方法,在游戲客戶端和游戲服務端之間設置游戲虛擬機,由游戲虛擬 機來模擬完成游戲平臺和游戲服務器的基本功能,與游戲客戶端和游戲服務端 進行交互。由于游戲虛擬機運行在Windows環(huán)境下,對于游戲客戶端,仍保持 通過COM接口實現(xiàn)雙向通訊;對于游戲服務端,只需將游戲服務端編輯好的 代碼編譯為Windows環(huán)境下的DLL文件加載并運行即可,因此,即使需要對 運行的游戲服務端進行調(diào)試,只需在Windows環(huán)境下,這對Windows程序員來 說是非常簡單易行的,大大降低了開發(fā)復雜度,以及對開發(fā)、調(diào)試的要求。
由于游戲服務端的開發(fā)和運行均在Windows環(huán)境下,因此無需在每個游戲 開發(fā)前單獨配置各自的開發(fā)環(huán)境;并且,因為不需要在編譯及運行時將游戲服 務端上載到具有Linux操作系統(tǒng)的服務器上,所以可將開發(fā)地點延伸到開發(fā)公 司之外,如在家中,而不必局限于只能在開發(fā)公司內(nèi)進行開發(fā)。
本發(fā)明的游戲虛擬機通過啟動不同的線程,分別實現(xiàn)游戲用戶管理、消息 轉(zhuǎn)發(fā)、以及與游戲客戶端和游戲服務端的交互,并且,對于不同的游戲客戶端, 啟動不同的線程與之對應,也就是說,如果有N個游戲用戶參與的游戲,只需 啟動N個線程分別對應N個游戲客戶端,無需再啟動N個游戲平臺。另外, 游戲虛擬機還可以跨PC運行,比如三人參與的游戲,游戲虛擬機可以實現(xiàn) 在三個不同的PC上,各啟動一個游戲客戶端,使三個游戲客戶端正常的進行 游戲。如此,不僅能降低對開發(fā)機器數(shù)量和性能的要求,還能減少不必要的資 源占用,大大節(jié)省成本。
圖1為現(xiàn)有技術(shù)中游戲開發(fā)系統(tǒng)的組成結(jié)構(gòu)示意圖; 圖2為本發(fā)明中游戲開發(fā)系統(tǒng)的組成結(jié)構(gòu)示意圖; 圖3為本發(fā)明游戲虛擬機的 一 種實現(xiàn)效果示意圖。
具體實施例方式
本發(fā)明的基本思想是在游戲客戶端和游戲服務端之間設置游戲虛擬機, 由游戲虛擬機模擬完成游戲平臺和游戲服務器的基本功能,與游戲客戶端和游 戲服務端進行交互。進一步的,在游戲虛擬機中創(chuàng)建有與游戲客戶端交互、與 游戲服務端交互、實現(xiàn)游戲用戶管理及消息轉(zhuǎn)發(fā)的線程。
本發(fā)明的游戲開發(fā)系統(tǒng)如圖2所示,包括游戲客戶端IO、游戲服務端40, 關(guān)鍵在于還包括游戲虛擬機50,位于游戲客戶端10和游戲服務端40之間,用 于模擬實現(xiàn)原有游戲平臺和游戲服務器的基本及常用功能,主要模擬的功能有 游戲用戶進入、游戲用戶退出、游戲邏輯消息轉(zhuǎn)發(fā)、斷線重回以及旁觀等。
圖2中,游戲虛擬機50在Windows環(huán)境下開發(fā)和運行,游戲客戶端10在 游戲虛擬機50中以COM標準接口方式啟動,通過COM接口實現(xiàn)游戲客戶端 10與游戲虛擬機50之間的雙向通訊;游戲虛擬機50加載DLL文件形式的游 戲服務端40,與游戲服務端40進行接口調(diào)用。
為了模擬實現(xiàn)原有游戲平臺和游戲服務器的基本功能,游戲虛擬機中主要 創(chuàng)建有主線程、服務端線程和客戶端線程,其中,主線程用于實現(xiàn)對所有游 戲用戶的管理,實現(xiàn)游戲用戶進入、退出、參與游戲,還用于與服務端線程和 客戶端線程之間的消息交互;服務端線程用于加載游戲服務端,并通過設置好
的接口與游戲服務端相互調(diào)用;客戶端線程用于啟動游戲客戶端,并通過調(diào)用 游戲客戶端的COM接口實現(xiàn)與游戲客戶端的雙向通訊,根據(jù)參與游戲的游戲 用戶個數(shù)可以有多個客戶端線程,每個客戶端線程對應一個游戲客戶端。在實 際應用中,服務端線程也可以并入主線程中,合并為一個線程,也就是說,由 一個線程同時完成基本主線程功能和服務端功能。
可將主線程和服務端線程、或同時具有基本主線程功能和服務端功能的線 程統(tǒng)稱為管理服務線程,換句話說就是,管理服務線程可以由主線程和服務端 線程兩個線程組成,也可以僅為同時具有基本主線程功能和服務端功能的一個 線程。下面以管理服務線程由主線程和服務端線程組成為例,具體說明每個線 程的功能及實現(xiàn)。
對于主線程,游戲虛擬機啟動時,主線程先從預先設置好的配置文件中讀 取游戲用戶信息,該配置文件保存有若干個游戲用戶最基本的信息,比如即 時通訊號、是否超級游戲用戶、積分、游戲幣等信息,游戲虛擬機所得到的游 戲用戶信息,在給客戶端線程和服務端線程發(fā)送游戲用戶進入、退出等消息時 會用到。該主線程與客戶端線程和服務端線程之間的通訊,可通過消息應用編 程接口如PostThreadMessageAPI實現(xiàn);反之,客戶端線程和服務端線程與主線 程之間的通訊,可通過消息應用編程接口如PostMessage API實現(xiàn)。
一般,消息的內(nèi)容保存在堆中,并且,內(nèi)容的指針和長度以參數(shù)的方式傳 遞,指針參數(shù)和長度參數(shù)可分別命名為Wparam和Lparam。為保證消息時序的 正確性,客戶端線程和服務端線程不直接通訊,所有通訊均由主線程按規(guī)定方 式轉(zhuǎn)發(fā)。這里,所述按規(guī)定方式轉(zhuǎn)發(fā)是指有些消息需要發(fā)給某個客戶端線程, 有些需要發(fā)給所有客戶端線程,有些需要發(fā)給部分客戶端線程等等。
基于此,主線程可模擬游戲平臺最主要和常用的功能,如游戲用戶進入、 游戲用戶退出、游戲邏輯消息的轉(zhuǎn)發(fā)、以及游戲用戶斷線重回等功能。對于斷 線重回功能,主線程先以消息方式通知客戶端線程,同時通過消息方式或接口 調(diào)用方式通知服務端某個游戲用戶掉線,并將該游戲用戶狀態(tài)標記為掉線,如 果游戲用戶在規(guī)定時間內(nèi)點擊桌子上相應斷線的游戲用戶頭像,主線程就會通
知客戶端和服務端相應游戲用戶斷線重—回。這里,如果主線程與服務端線程是
兩個線程,則主線程通過消息方式通知服務端線程;如果主線程與服務端線程 合并為 一個線程,則主線程功能通過接口調(diào)用方式通知服務端功能。
對于服務端線程,游戲虛擬機啟動后就會啟動服務端線程,該服務端線程 被封裝成一個類,這個類可根據(jù)需要任意命名,如命名為CSoWorkingThread, 該類提供了一個命名為CreateSoWorkingThread的公共(Public)方法。服務端 線程需要先初始化,具體實現(xiàn)是先由主線程創(chuàng)建一個CSoWorkingThread對象, 然后調(diào)用該對象的CreateSoWorkingThread方法并傳入必要的參數(shù),即可初始化 好服務端線程。其中,CSoWorkingThread需要繼承自ITable接口并實現(xiàn)其接口 , 該接口是作為游戲服務器必須繼承和實現(xiàn)的。
其中,所述ITable接口是指游戲服務器提供給游戲服務端調(diào)用的接口,主 要有設置積分、發(fā)送游戲邏輯消息、獲取積分等接口,由于游戲服務端沒有網(wǎng) 絡或數(shù)據(jù)庫搡作功能,所以需要游戲服務器提供相應接口 。
服務端線程啟動并初始化好后,使用加載庫應用編程接口 LoadLibraryAPI 加載DLL文件形式的游戲服務端,并使用獲取過程地址API ( GetProcAddress API)獲得游戲服務端的游戲生成(CreateGame )接口 ,并將該接口的指針轉(zhuǎn) 換為ITable類型的指針,作為參數(shù)傳入游戲服務端,之后,游戲服務端就可以 利用轉(zhuǎn)換后的ITabk類指針調(diào)用CSoWorkingThread類中實現(xiàn)的ITable接口 。 其中,所加載的DLL文件形式的游戲服務端是在Windows環(huán)境下編譯而成的。
對于客戶端線程,當游戲用戶每次選中游戲虛擬機中游戲桌上某個座位時, 游戲虛擬機會啟動一個客戶端線程,該客戶端線程被封裝成一個類,這個類可 根據(jù)需要任意命名,如命名為CClientWorkingThread,該類提供了一個命名為 CreateClientWorkingThread的public方法??蛻舳司€程需要先初始化,具體實 現(xiàn)是先由主線程創(chuàng)建一個CClientWorkingThread對象,然后調(diào)用該對象的 CreateClientWorkingThread方法并傳入必要參數(shù),即可初始化好客戶端線程。
客戶端線程啟動并初始化好后,客戶端線程會從預先設置好的配置文件中 讀取一個游戲標識Classld,每個Classld對應 一個游戲;客戶端線程通過COM
的方法啟動參與所讀取ClassId對應的游戲的游戲客戶端,此時,客戶端線程即 可調(diào)用游戲客戶端的COM接口 ??蛻舳司€程通過COM方式啟動游戲客戶端時, 由于COM具有位置透明性,所以,在啟動前可以選擇游戲客戶端的啟動位置, 比如選擇本機或其他PC,相應的當前客戶端線程會在所選的位置啟動游戲客 戶端。
客戶端線程必須繼承并實現(xiàn)IGame接口,并將該接口的指針轉(zhuǎn)換為IGame 類型的指針設置給游戲客戶端,游戲客戶端根據(jù)所設置的指針即可調(diào)用客戶端 線程的IGame接口。這里,所述IGame接口主要實現(xiàn)三個功能發(fā)送游戲邏輯 消息、發(fā)送聊天消息、發(fā)送其他消息,由于游戲客戶端沒有網(wǎng)絡功能,如果想 要將消息發(fā)送出去,只有調(diào)用此接口。
當游戲用戶離開時,關(guān)閉游戲客戶端即可,關(guān)閉游戲客戶端時,游戲客戶 端會通知游戲虛擬機中對應的客戶端線程。
在實際應用中,每選中游戲虛擬機中游戲桌上一個座位就會啟動一個客戶 端線程,也就是說, 一個參與游戲的游戲用戶對應一個客戶端線程、對應一個 游戲客戶端。
基于上述開發(fā)系統(tǒng),本發(fā)明的開發(fā)方法包括以下步驟
首先,在游戲客戶端和游戲服務端之間設置包含多類線程的游戲虛擬機;
游戲虛擬機啟動時,啟動并初始化游戲虛擬機中的管理服務線程;這里,
管理服務線程可以由主線程和服務端線程兩個線程組成,也可以僅為同時具有
基本主線程功能和服務端功能的一個線程;
之后,加載DLL文件形式的游戲服務端并運行;
當游戲用戶在游戲虛擬機中選定自身參與游戲所需的座位時,游戲虛擬機 啟動對應該游戲用戶的客戶端線程,并初始化所啟動的客戶端線程;
初始化后的客戶端線程讀取一個游戲標識ClassID,并啟動參與所讀取 ClassID對應的游戲的游戲客戶端,之后與游戲客戶端進行通訊交互,實現(xiàn)游戲 用戶的進入、退出以及參與。
圖3為本發(fā)明游戲虛擬機的一種實現(xiàn)效果示意圖,如圖3所示,游戲虛擬
機中可包括游戲用戶管理、游戲用戶信息、游戲用戶搡作和游戲桌設置幾部分。 在具體應用中,游戲用戶也可稱為玩家,游戲用戶管理包括空閑玩家列表、 在玩玩家列表和旁觀玩家列表,分別給出當前游戲虛擬機中處于空閑狀態(tài)的、
戲桌上的座位,可以加入到參與游戲狀態(tài)的游戲用戶組中、或加入到旁觀游戲
狀態(tài)的游戲用戶組中;處于參與游戲或旁觀游戲狀態(tài)的游戲用戶如果離開當前 所在座位,會自動加入到處于空閑狀態(tài)的游戲用戶組中。通過游戲用戶管理可 獲知各個游戲用戶所處的游戲狀態(tài),并獲知處于各種游戲狀態(tài)的游戲用戶個數(shù)。
游戲用戶信息給出了游戲用戶的基本信息,如游戲用戶的號碼、昵稱、 超級玩家、積分、游戲幣等信息,其由,有些信息是可以修改并更新保存的, 如積分、游戲幣等信息。
游戲用戶操作給出了幾種可選的操作,游戲用戶可以通過點擊相應按鈕實 現(xiàn)相應功能,如讓該玩家掉線,選擇某個游戲用戶后點擊此按鈕,則相應游 戲用戶掉線,該游戲用戶對應的游戲桌上的座位會變?yōu)榛疑?,在預設的時間內(nèi), 可通過點擊該灰色座位讓相應游戲用戶斷線重回,即回到游戲桌繼續(xù)游戲,如 果超出規(guī)定時間,游戲虛擬機會給其他游戲用戶和游戲服務端發(fā)送該游戲用戶 退出的消息。再如解散游戲,當前桌子在游戲過程中時,點擊此按鈕可以解 散當前游戲。
游戲桌設置中可以設置每桌最大人數(shù),即某個游戲桌上最多可以有幾個人 參與游戲,選擇后,相應的游戲桌會發(fā)生變化,比如選擇2人桌,游戲桌上 只有兩個座位,選擇6人桌,游戲桌上就變?yōu)榱鶄€座位,最近的選擇會保存在 配置文件中。游戲桌設置中還可以設置客戶端啟動的位置,即客戶端在本機啟 動還是在其他機器上啟動。
游戲虛擬機中的游戲桌,在游戲沒開始時點擊某個空閑座位會根據(jù)客戶端 啟動位置的選擇,在本機或其他機器啟動一個參與游戲的游戲客戶端;當處于 游戲中狀態(tài)時,點擊某個坐有游戲用戶的座位會根據(jù)客戶端啟動位置的選擇, 在本機或其他機器啟動一個旁觀游戲的游戲客戶端??赏ㄟ^讓游戲桌亮起表示
游戲在進行中,讓游戲桌變灰表示游戲結(jié)束。
這里,旁觀的游戲用戶也對應一個客戶端線程,與處于游戲狀態(tài)的客戶端 線程主要區(qū)別在于游戲狀態(tài)不同,相應的,游戲的邏輯消息有些只發(fā)給處于游 戲狀態(tài)的游戲用戶,有些只發(fā)給旁觀的游戲用戶,相應有不同的處理。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1.一種游戲虛擬機,其特征在于,包括管理服務線程和客戶端線程;其中,所述管理服務線程,用于管理游戲用戶,完成與客戶端線程和游戲服務端之間的消息交互,并用于加載游戲服務端;所述客戶端線程,用于啟動游戲客戶端,并通過調(diào)用接口實現(xiàn)與游戲客戶端的雙向通訊。
2、 根據(jù)權(quán)利要求l所述的游戲虛擬機,其特征在于,所述管理服務線程包 括主線程和服務端線程;所述主線程,用于實現(xiàn)游戲用戶的管理、以及與服務端線程和客戶端線程 之間的消息交互;所述服務端線程,用于與游戲服務端進行通訊交互,加載游戲服務端。
3、 根據(jù)權(quán)利要求l或2所述的游戲虛擬機,其特征在于,所述客戶端線程 為 一個以上客戶端線程,每個客戶端線程對應一個游戲客戶端。
4、 一種游戲開發(fā)系統(tǒng),包括游戲客戶端和游戲服務端;其特征在于,該系 統(tǒng)還包括位于游戲客戶端和游戲服務端之間的游戲虛擬機;所述游戲虛擬機,通過調(diào)用接口與游戲客戶端和游戲服務端進行雙向通訊, 實現(xiàn)游戲用戶的管理,并加載動態(tài)鏈接庫DLL文件形式的游戲服務端。
5、 根據(jù)權(quán)利要求4所述的游戲開發(fā)系統(tǒng),其特征在于,所述游戲虛擬機包 括管理服務線程和客戶端線程;其中,所述管理服務線程,用于管理游戲用戶,實現(xiàn)游戲用戶進入、退出、參與 游戲,完成與客戶端線程和游戲服務端之間的消息交互,并用于加載游戲服務 端;所述客戶端線程,用于啟動游戲客戶端,并通過調(diào)用接口實現(xiàn)與游戲客戶 端的雙向通訊。
6、 根據(jù)權(quán)利要求5所述的游戲開發(fā)系統(tǒng),其特征在于,所述管理服務線程 包括主線程和服務端線程; 所述主線程,用于實現(xiàn)游戲用戶的管理、以及與服務端線程和客戶端線程之間的消息交互;所述服務端線程,用于與游戲服務端進行通訊交互,加載游戲服務端。
7、 根據(jù)權(quán)利要求5或6所述的游戲開發(fā)系統(tǒng),其特征在于,所述客戶端線 程為一個以上,所述游戲客戶端為一個以上,客戶端線程與游戲客戶端一一對 應。
8、 根據(jù)權(quán)利要求4、 5或6所述的游戲開發(fā)系統(tǒng),其特征在于,所述游戲 虛擬機開發(fā)和運行于Windows環(huán)境下。
9、 一種游戲開發(fā)方法,其特征在于,在游戲客戶端和游戲服務端之間設置 包含一個以上線程的游戲虛擬機;該方法還包括游戲虛擬機啟動時,啟動并初始化游戲虛擬機中的管理服務線程,之后加 載DLL文件形式的游戲服務端并運行;游戲用戶在游戲虛擬機中選定自身參與游戲所需座位時,游戲虛擬機啟動 并初始化對應該游戲用戶的客戶端線程;初始化后的客戶端線程讀取一個游戲標識ClassID,并啟動參與所讀取游戲 標識對應的游戲的游戲客戶端,之后與游戲客戶端進行通訊交互。
10、 根據(jù)權(quán)利要求9所述的游戲開發(fā)方法,其特征在于,所述管理服務線 程包括主線程和服務端線程;相應的,所述啟動并初始化游戲虛擬機中的管理服務線程為啟動主線程 和服務端線程,并初始化服務端線程;所述加載DLL文件形式的游戲服務端為由初始化后的服務端線程加載 DLL文件形式的游戲服務端。
11、 根據(jù)權(quán)利要求9或IO所述的游戲開發(fā)方法,其特征在于,所述客戶端 線程為 一個以上客戶端線程,每個客戶端線程對應 一個游戲客戶端。
12、 根據(jù)權(quán)利要求9或IO所述的游戲開發(fā)方法,其特征在于,所述游戲虛 擬機開發(fā)和運行于Windows環(huán)境下。
全文摘要
本發(fā)明公開了一種游戲虛擬機,包括管理服務線程和客戶端線程;其中,所述管理服務線程,用于管理游戲用戶,完成與客戶端線程和游戲服務端之間的消息交互,并用于加載游戲服務端;所述客戶端線程,用于啟動游戲客戶端,并通過調(diào)用接口實現(xiàn)與游戲客戶端的雙向通訊。本發(fā)明還公開了一種由所述游戲虛擬機、以及游戲客戶端和游戲服務端組成的游戲開發(fā)系統(tǒng),所述游戲虛擬機位于游戲客戶端和游戲服務端之間,模擬游戲平臺和游戲服務器的基本功能;本發(fā)明還公開了一種基于所述游戲虛擬機實現(xiàn)的游戲開發(fā)方法。采用本發(fā)明,能夠減少游戲服務端開發(fā)、配置及調(diào)試的復雜度,降低對開發(fā)機器性能和數(shù)量的要求、以及資源的占用。
文檔編號G06F9/44GK101369227SQ200810100460
公開日2009年2月18日 申請日期2008年6月16日 優(yōu)先權(quán)日2008年6月16日
發(fā)明者華 寇, 炯 李, 李國宏, 聞 湯, 王彭城 申請人:騰訊數(shù)碼(深圳)有限公司