專利名稱:一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)游戲技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)游戲引擎。
背景技術(shù):
大型多人在線角色扮演游戲?yàn)槭澜缟献钍軞g迎的游戲類型,這種游戲類型的關(guān)鍵技術(shù)需要安全、穩(wěn)定,因此必須具有靈活可變的游戲引擎。目前的網(wǎng)絡(luò)游戲引擎的底層普遍采用C++語言編寫,游戲邏輯基本上都由底層語言直接編寫,非常不靈活,如果游戲的制作人需要對(duì)游戲內(nèi)數(shù)據(jù)進(jìn)行調(diào)整,程序員就需要修改底層代碼,非常不安全。而且修改完代碼還需要數(shù)分鐘甚至數(shù)小時(shí)的編譯過程才能啟動(dòng)測(cè)試,速度慢。早期的網(wǎng)絡(luò)游戲承載量不大,內(nèi)容不多,因此各大網(wǎng)絡(luò)游戲引擎研發(fā)公司多采用集中式開發(fā),即將各種服務(wù)邏輯例如網(wǎng)關(guān)服務(wù)器,地圖服務(wù)器,邏輯服務(wù)器,數(shù)據(jù)庫服務(wù)器, 日志服務(wù)器等整合在一個(gè)軟件進(jìn)程中執(zhí)行,對(duì)于用戶的請(qǐng)求采用排隊(duì)式處理,即先來先服務(wù)的處理原則。最新設(shè)計(jì)的大型多人在線角色扮演游戲帶來了網(wǎng)絡(luò)游戲市場(chǎng)爆發(fā)式的增長。大型多人在線角色扮演的網(wǎng)絡(luò)游戲?qū)τ螒蛞娴囊蠛芨?,單個(gè)服務(wù)器組的承載量少則數(shù)千, 多則上萬。對(duì)于上萬人的承載量來說,集中式的服務(wù)器引擎已經(jīng)很難滿足要求。例如,一個(gè)用戶請(qǐng)求的處理時(shí)間為1毫秒,而10000個(gè)用戶需要在同一時(shí)刻處理完則需要10秒,而用戶需要流暢的游戲體驗(yàn)和節(jié)奏明快的游戲情節(jié),長達(dá)10秒的延遲在游戲體驗(yàn)上完全不能接受。在目前的大型多人在線角色扮演游戲中,采用傳統(tǒng)的網(wǎng)絡(luò)游戲引擎已經(jīng)不相適應(yīng)了。
發(fā)明內(nèi)容
為彌補(bǔ)現(xiàn)有技術(shù)的不足,本發(fā)明目的是提供一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,提供靈活多變、安全穩(wěn)定的游戲環(huán)境。為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其包括邏輯主服務(wù)器集群,與該邏輯主服務(wù)器集群連接的副本服務(wù)器集群、數(shù)據(jù)服務(wù)器、登陸服務(wù)器、日志服務(wù)器,客戶端與該登陸服務(wù)器相連接,該數(shù)據(jù)服務(wù)器通過數(shù)據(jù)適配器與該邏輯主服務(wù)器集群相連接。根據(jù)上述的一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其中,所述邏輯主服務(wù)器集群包含游戲?qū)嶓w;游戲模塊,該游戲模塊通過事件路由器連接該游戲?qū)嶓w并與之相互通訊;該游戲?qū)嶓w與協(xié)議報(bào)告器相連接;該事件路由器與該協(xié)議報(bào)告器相連接;該客戶端連接該協(xié)議報(bào)告器;該客戶端通過協(xié)議適配器連接該游戲模塊。根據(jù)上述的一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其中,所述游戲引擎的架構(gòu)底層是游戲服務(wù)邏輯服務(wù)器;中間層是網(wǎng)絡(luò)適配層,該網(wǎng)絡(luò)適配層包含移動(dòng)設(shè)配
3協(xié)議適配器、客戶端協(xié)議適配器和游戲管理員協(xié)議適配器;頂層是客戶端、移動(dòng)電話、游戲管理員客戶端;該底層與該中間層相互通訊;該中間層與該頂層通過互聯(lián)網(wǎng)相互通訊;該客戶端協(xié)議適配器與該客戶端相互連接,該移動(dòng)設(shè)配協(xié)議適配器與該移動(dòng)電話相互連接; 該客戶端協(xié)議適配器與該游戲管理員客戶端相連接。本發(fā)明的有益效果本發(fā)明提供的網(wǎng)絡(luò)游戲引擎適合用于大型多人在線角色,整個(gè)構(gòu)架的單臺(tái)邏輯服務(wù)器預(yù)計(jì)滿載承載量是20000人,穩(wěn)定運(yùn)行在10000-15000人左右。如果N臺(tái)邏輯服務(wù)器, 承載量=10000*N。更多的玩家可以融入到一個(gè)完整的游戲世界中,從而在游戲中實(shí)現(xiàn)聊天,戰(zhàn)斗,貿(mào)易,交友,動(dòng)作互動(dòng)都高實(shí)時(shí)性的游戲體驗(yàn)。本發(fā)明的游戲引擎作為大型多人在線游戲強(qiáng)有力的后臺(tái),能讓所有想進(jìn)入游戲研發(fā)領(lǐng)域的公司降低行業(yè)門檻,從而讓這些公司主要在游戲的可玩性和游戲理念上給予創(chuàng)新,為廣大游戲帶來更多更優(yōu)秀的游戲。
以下結(jié)合附圖和具體實(shí)施方式
來進(jìn)一步說明本發(fā)明。
圖1為本發(fā)明系統(tǒng)組成示意圖;圖2為邏輯主服務(wù)器集群的詳細(xì)架構(gòu)圖;圖3為本發(fā)明網(wǎng)絡(luò)游戲引擎的網(wǎng)絡(luò)架構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。參見圖1,本發(fā)明一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,包含邏輯主服務(wù)器集群101,與邏輯主服務(wù)器集群101連接的副本服務(wù)器集群102、數(shù)據(jù)服務(wù)器103、登陸服務(wù)器104、日志服務(wù)器105。用戶可通過任何與登陸服務(wù)器104相連接的客戶端107登陸。 數(shù)據(jù)服務(wù)器103通過數(shù)據(jù)適配器106與邏輯主服務(wù)器集群101相連接。請(qǐng)見圖2,為邏輯主服務(wù)器集群101的詳細(xì)架構(gòu)圖。邏輯主服務(wù)器集群101包含游戲?qū)嶓w201,游戲模塊202通過事件路由器203連接游戲?qū)嶓w201并與之相互通訊,游戲?qū)嶓w201與事件路由器203均與協(xié)議報(bào)告器204相連接,客戶端205連接協(xié)議報(bào)告器204并從協(xié)議報(bào)告器204中讀取數(shù)據(jù),客戶端205通過協(xié)議適配器206連接游戲模塊202。游戲?qū)嶓w201包含場(chǎng)景模塊207,角色模塊208,物品模塊209,副本模塊210,技能模塊211,任務(wù)模塊212,各模塊均與腳本系統(tǒng)213相互連接。圖3為本發(fā)明網(wǎng)絡(luò)游戲引擎的網(wǎng)絡(luò)架構(gòu)圖。架構(gòu)底層是游戲服務(wù)邏輯服務(wù)器301。 中間層是網(wǎng)絡(luò)適配層302,其包含移動(dòng)設(shè)配協(xié)議適配器303、客戶端協(xié)議適配器304和游戲管理員協(xié)議適配器305。頂層是客戶端306、移動(dòng)電話307、游戲管理員客戶端308。底層與中間層相互通訊。中間層與頂層通過互聯(lián)網(wǎng)相互通訊??蛻舳藚f(xié)議適配器304與客戶端 306相互連接,移動(dòng)設(shè)配協(xié)議適配器303與移動(dòng)電話307相互連接,客戶端協(xié)議適配器304 與游戲管理員客戶端308相連接。玩家的角色數(shù)據(jù)是不能跨區(qū)使用的,即在A區(qū)建立的游戲角色在B區(qū)是無法使用的,各區(qū)之間的數(shù)據(jù)保持各自獨(dú)立性。我們將這樣獨(dú)立的A區(qū)或B區(qū)稱為一個(gè)獨(dú)立的服務(wù)器組,一個(gè)獨(dú)立的服務(wù)器組就是一個(gè)相對(duì)完整的游戲世界。本發(fā)明的游戲引擎服務(wù)器內(nèi)分成兩類的模塊場(chǎng)景相關(guān)的(如行走、戰(zhàn)斗等)以及場(chǎng)景不相關(guān)的(如公會(huì)聊天、不受區(qū)域限制的貿(mào)易等)。其中這兩類分別由兩個(gè)獨(dú)立的線程去完成,細(xì)分為四個(gè)獨(dú)立模塊場(chǎng)景服務(wù)器、服務(wù)器管理器、數(shù)據(jù)庫代理服務(wù)器、AI服務(wù)器。各模塊的主要功能場(chǎng)景服務(wù)器它負(fù)責(zé)完成主要的游戲邏輯,這些邏輯包括角色在游戲場(chǎng)景中的進(jìn)入與退出、角色的行走與跑動(dòng)、角色戰(zhàn)斗(包括打怪)、任務(wù)的認(rèn)領(lǐng)等。非場(chǎng)景服務(wù)器它主要負(fù)責(zé)完成與游戲場(chǎng)景不相關(guān)的游戲邏輯,這些邏輯不依靠游戲的地圖系統(tǒng)也能正常進(jìn)行,比如公會(huì)聊天或世界聊天,之所以把它從場(chǎng)景服務(wù)器中獨(dú)立出來,是為了節(jié)省場(chǎng)景服務(wù)器的CPU和帶寬資源,讓場(chǎng)景服務(wù)器能夠盡可能快地處理那些對(duì)游戲流暢性影響較大的游戲邏輯。服務(wù)器管理器為了實(shí)現(xiàn)眾多的場(chǎng)景服務(wù)器之間以及場(chǎng)景服務(wù)器與非場(chǎng)景服務(wù)器之間的數(shù)據(jù)同步,我們必須建立一個(gè)統(tǒng)一的管理者,這個(gè)管理者就是服務(wù)器組中的服務(wù)器管理器。它的任務(wù)主要是在各服務(wù)器之間作數(shù)據(jù)同步,比如玩家上下線信息的同步。其最主要的功能還是完成場(chǎng)景切換時(shí)的數(shù)據(jù)同步。當(dāng)玩家需要從一個(gè)場(chǎng)景A切換到另一個(gè)場(chǎng)景 B時(shí),服務(wù)器管理器負(fù)責(zé)將玩家的數(shù)據(jù)從場(chǎng)景A轉(zhuǎn)移到場(chǎng)景B,并通過協(xié)議通知這兩個(gè)場(chǎng)景數(shù)據(jù)同步的開始與結(jié)束。服務(wù)器管理器會(huì)與所有的場(chǎng)景服務(wù)器和非場(chǎng)景服務(wù)器保持socket 連接。AI(人工智能)服務(wù)器由于怪物的人工智能計(jì)算非常消耗系統(tǒng)資源,所以我們把它獨(dú)立成單獨(dú)的服務(wù)器。AI服務(wù)器的主要作用是負(fù)責(zé)計(jì)算怪物的Al,并將計(jì)算結(jié)果返回給場(chǎng)景服務(wù)器,也就是說,AI服務(wù)器是單獨(dú)為場(chǎng)景服務(wù)器服務(wù)的,它完成從場(chǎng)景服務(wù)器交過來的計(jì)算任務(wù),并將計(jì)算結(jié)果返回給場(chǎng)景服務(wù)器。所以,從網(wǎng)絡(luò)通信方面來說,AI服務(wù)器與眾多場(chǎng)景服務(wù)器保持socket連接。數(shù)據(jù)庫代理服務(wù)器它將數(shù)據(jù)庫讀寫?yīng)毩⒊鰜?,單?dú)作成數(shù)據(jù)庫代理,由它統(tǒng)一進(jìn)行數(shù)據(jù)庫訪問并返回訪問結(jié)果。本發(fā)明的分布技術(shù)的核心是對(duì)象請(qǐng)求代管者(Object Request Broker,簡(jiǎn)稱 ORB)。作為一個(gè)透明的總線式模型,可以與本地或者遠(yuǎn)程的對(duì)象進(jìn)行交互。本發(fā)明的游戲引擎對(duì)象對(duì)外呈現(xiàn)一組接口,客戶端獲取對(duì)象的引用,通過引用進(jìn)行方法的調(diào)用。ORB負(fù)責(zé)查找對(duì)象的實(shí)現(xiàn),發(fā)送請(qǐng)求并處理返回結(jié)果。為了調(diào)用一個(gè)服務(wù),客戶端需要調(diào)用遠(yuǎn)程對(duì)象實(shí)現(xiàn)的方法。服務(wù)器端提供的服務(wù),封裝成為一個(gè)對(duì)象,對(duì)象的接口使用IDLdnterface DefinitionLanguage)描述??蛻舳送ㄟ^調(diào)用IDL中定義的方法與服務(wù)器端進(jìn)行交互,不用關(guān)心實(shí)際對(duì)象的實(shí)現(xiàn)。支持面向?qū)ο蟮囊恍┨匦?,例如?shù)據(jù)封裝,多態(tài),繼承。本發(fā)明的游戲引擎支持多重繼承,一個(gè)對(duì)象可以有多個(gè)接口。為了調(diào)用一個(gè)遠(yuǎn)程的方法,客戶端調(diào)用本地的樁函數(shù),樁函數(shù)將參數(shù)封裝成為請(qǐng)求,將請(qǐng)求發(fā)送給服務(wù)器端。服務(wù)器端將請(qǐng)求傳遞給Server Stub,對(duì)參數(shù)進(jìn)行解包,并調(diào)用實(shí)際的函數(shù)。在本發(fā)明的游戲引擎中,客戶端的樁稱為proxy,服務(wù)器端的樁稱為stub。假設(shè)有一種Grid對(duì)象服務(wù),Grid對(duì)象維護(hù)一個(gè)二維的整數(shù),支持兩組方法第一組是get和set,可以設(shè)置某個(gè)格子上的數(shù)值;第二組是reset,復(fù)位某個(gè)格子上的數(shù)值。采用本發(fā)明的游戲引擎調(diào)用,則客戶端端的處理步驟如下1.客戶端調(diào)用本發(fā)明的游戲引擎庫函數(shù)CoCreatelnstance,使用CLSID_Grid和 IID_IGridl作為參數(shù)。2.本發(fā)明的游戲引擎庫請(qǐng)求服務(wù)器創(chuàng)建對(duì)象3.服務(wù)器端本發(fā)明的游戲引擎獲取指向CLSID_Grid的類工廠指針,調(diào)用其 CreateInstance 函4.類工廠創(chuàng)建一個(gè)對(duì)象,然后服務(wù)器端調(diào)用QueryIntreface獲取指向IID_ IGridl接口的指針。5.本發(fā)明的游戲引擎庫將指向pIGridl接口的指針返回給客戶。6.客戶端調(diào)用pIGridl接口的get方法。作為游戲中的一個(gè)角色。在服務(wù)器端和客戶端同時(shí)存在,服務(wù)器端負(fù)責(zé)角色對(duì)象的邏輯,以及各種屬性的更新;客戶端負(fù)責(zé)角色對(duì)象的顯示,與玩家進(jìn)行交互。這應(yīng)該是一種非常典型的分布式對(duì)象模式。但是目前的分布式對(duì)象技術(shù),能夠支持這種模式嗎;答案是不支持。目前對(duì)于分布式對(duì)象的概念,一般指RMI、C0BRA、DC0M等分布式組件技術(shù)。但是我們認(rèn)為對(duì)象應(yīng)該是具有屬性的,不應(yīng)該只有方法;在面向?qū)ο缶幊陶Z言中的象概念更加貼切。而目前的組件技術(shù),都是只提供了一個(gè)抽象的接口,即便是Web Service,也只供了遠(yuǎn)程調(diào)用的方法(可以看作是一個(gè)抽象的接口),并沒有提及屬性,而且也不支持定義屬性。 在分布式應(yīng)用中,對(duì)象的屬性重要嗎?目前的組件技術(shù)和Web Service技術(shù),都沒有定義屬性,不是發(fā)展的很好,也能夠方便的應(yīng)用于各種場(chǎng)合下嗎?回答這個(gè)問題,這里簡(jiǎn)單的給出一個(gè)例子對(duì)象在某些狀態(tài)下(例如忙),某些接口不能夠調(diào)用(例如查詢),調(diào)用會(huì)返回錯(cuò)誤。按照目前組件技術(shù)的描述方法,如下Interface obj ectclass{char氺Query(in int arg, out int result);};對(duì)于該組件的使用者,如何調(diào)用呢,反復(fù)調(diào)用Query函數(shù),直到正確的結(jié)果嗎?這個(gè)例子非常簡(jiǎn)單,但是使用目前的分布式組件技術(shù),很難實(shí)現(xiàn)。對(duì)象的屬性分布到客戶端 (調(diào)用者),有利于客戶端根據(jù)對(duì)象的狀態(tài),更加靈活地進(jìn)行服務(wù)調(diào)用,為客戶提供更好的服務(wù)。僅僅是對(duì)象的屬性分布到客戶端就夠了嗎?回想前面對(duì)于Web技術(shù)的發(fā)展過程中, javascript為什么引入,并得到迅速發(fā)展。在客戶端和服務(wù)器端進(jìn)行交互時(shí),如果客戶端能夠進(jìn)行一些預(yù)先的處理,也能夠提供更好的服務(wù)。比如簡(jiǎn)單類似輸入?yún)?shù)的校驗(yàn)問題,如果在客戶端能夠進(jìn)行,則不再需要再發(fā)送到服務(wù)器,并等待幾秒甚至幾十秒之后,再得到錯(cuò)誤的反饋。這需要把部分對(duì)象的腳本(甚至代碼)也需要部署到客戶端,Web Service和組件模型提出了一種新的編程模型,這也是出現(xiàn)和發(fā)展起來的原因。但是快速發(fā)展不能夠說明這些技術(shù)本身不存在問題,對(duì)于相對(duì)復(fù)雜的Web服務(wù),細(xì)粒度的組建服務(wù),這些技術(shù)還不是很成熟,或者說,不能夠進(jìn)行處理。本文提出的SRP分布式對(duì)象模型,解決了這些問題。本發(fā)明的游戲引擎提出的分布式對(duì)象的概念如下對(duì)象具有屬性,方法和執(zhí)行腳本(代碼)。 對(duì)象在服務(wù)器端和客戶端同時(shí)存在,并且客戶端對(duì)象有與服務(wù)器端相同的屬性。客戶端對(duì)象和服務(wù)器端對(duì)象通過唯一標(biāo)識(shí)(一般使用UUID)建立一一對(duì)應(yīng)關(guān)系。對(duì)象的屬性,腳本(代碼)如何分布到客戶端,這就需要分布式對(duì)象管理系統(tǒng)。針對(duì)上述的例子,如下Interface objectclass{Int BusyFlag ;char氺Query(in int arg, out int result);};這樣客戶端首先判斷BusyFlag是否設(shè)置,如果設(shè)置,則不進(jìn)行調(diào)用,如果沒有設(shè)置,則可以調(diào)用。采用對(duì)象的概念,分布式對(duì)象管理系統(tǒng)可以為上層的應(yīng)用,提供一個(gè)統(tǒng)一的接口,即分布式對(duì)象管理接口。通過該接口,可以獲取對(duì)象,對(duì)象的屬性,調(diào)用對(duì)象的方法,并接收對(duì)象的異步事件。對(duì)于前面Web技術(shù)和組件技術(shù)存在的問題,采用分布式對(duì)象的技術(shù),則可以如下處理1.數(shù)據(jù)和資源文件反復(fù)下載每種數(shù)據(jù)或者資源,都可以定義為一個(gè)對(duì)象,對(duì)象定義屬性,說明數(shù)據(jù)或者資源的版本;如果數(shù)據(jù)發(fā)生變化,則對(duì)象對(duì)應(yīng)的版本屬性發(fā)生變化,客戶端判斷屬性發(fā)生變化之后,再重新下載。如果相同,則不需要下載,直接使用本地緩存的數(shù)據(jù)即可。2.不方便維護(hù)客戶端狀態(tài)維護(hù)分布式對(duì)象管理,支持常連接模式,以方便支持需要維護(hù)狀態(tài)的應(yīng)用。3.服務(wù)器端不能夠主動(dòng)發(fā)起數(shù)據(jù)的傳輸。分布式對(duì)象管理,支持常連接模式,服務(wù)器可以通過該連接,修改對(duì)象的屬性,與客戶端進(jìn)行通信。4.編碼簡(jiǎn)單,通信傳輸?shù)拈_銷大分布式對(duì)象管理,支持使用自定義通信。5.細(xì)粒度模型通過分布式對(duì)象管理,對(duì)象分布到客戶端,客戶端直接使用對(duì)象的屬性或者調(diào)用對(duì)象的方法。不再需要針對(duì)每個(gè)對(duì)象,執(zhí)行遠(yuǎn)程創(chuàng)建的過程,因此能夠支持成千上午個(gè)對(duì)象。這種分布式對(duì)象模型,能夠用于游戲中嗎,答案是可以。對(duì)象屬性同時(shí)在服務(wù)器和客戶端存在,服務(wù)器端更新對(duì)象屬性之后,由分布式對(duì)象管理將屬性同步到客戶端,客戶端刷新顯示??蛻舳丝梢哉{(diào)用服務(wù)器端的對(duì)象的方法,服務(wù)器進(jìn)行邏輯控制,修改對(duì)象的屬性?;谇懊娴恼撌?,本發(fā)明的游戲引擎分布式對(duì)象具有以下特點(diǎn)1.對(duì)象分布在服務(wù)器和客戶端,兩者通過唯一的標(biāo)識(shí)進(jìn)行對(duì)應(yīng)。2.對(duì)象的執(zhí)行代碼(腳本),需要分布到客戶端。3.對(duì)象的屬性,需要分布到客戶端。4.對(duì)象象管的數(shù)據(jù),需要分布到客戶端。分布式對(duì)象管理功能,完成上述對(duì)象執(zhí)行代碼(腳本),屬性和數(shù)據(jù)的分布,并為其上的應(yīng)用,提供基于對(duì)象的標(biāo)準(zhǔn)接口。對(duì)象包含屬性,方法和數(shù)據(jù)三部分,其方法通過執(zhí)行代碼(腳本)來體現(xiàn)。為什么說數(shù)據(jù)是對(duì)象的一部分呢?舉一個(gè)簡(jiǎn)單的例子能夠很好的說明,比如圖片對(duì)象,其屬性有寬度,高度,編碼格式,位寬等。很少認(rèn)為圖片實(shí)際的數(shù)據(jù)也是屬性,因此將對(duì)象數(shù)據(jù)單獨(dú)列出來,與屬性和方法并列在一起,作為描述對(duì)象的一項(xiàng),更
7加符合實(shí)際??v觀目前分布式對(duì)象的概念,不管是DCOM,COBRA等,都沒有如此完善的定義, 基于現(xiàn)有概念的實(shí)現(xiàn),或多或少都受到一些限制。其實(shí),本發(fā)明的游戲引擎分布式對(duì)象的概念,在目前的應(yīng)用中,都有實(shí)際的對(duì)應(yīng)。例如,在HTML網(wǎng)頁中,如下一段描述圖像的腳本< IMG height = IOsrc =“· . \images\*#”width = IOborder = 0 >描述中包含有圖像對(duì)象的屬性(寬度, 高度,顯示邊界,圖像文件名稱),實(shí)際的圖像文件為圖像對(duì)象的數(shù)據(jù)。還可以定義Jscript 腳本作為圖像對(duì)象的代碼。與這里談到的本發(fā)明的游戲引擎對(duì)應(yīng)。該圖像對(duì)象的內(nèi)容,隨著HTML文件,在HTTP響中傳遞給客戶端。也即,圖像對(duì)象的屬性,方法和數(shù)據(jù),通過HTTP 協(xié)議分布到客戶端。但是包含全了對(duì)象的內(nèi)容(屬性、方法和數(shù)據(jù)),但是并沒有對(duì)象的概念,因此基于HTML的應(yīng)用沒有層次結(jié)構(gòu),其應(yīng)用擴(kuò)展受到限制,如前文所述。本發(fā)明的游戲引擎分布式對(duì)象這些特點(diǎn)的實(shí)現(xiàn),將會(huì)遇到一系列新的問題,也會(huì)引出對(duì)應(yīng)的關(guān)鍵技術(shù)1.對(duì)象的唯一標(biāo)識(shí)服務(wù)器端和客戶端一般分布在不同的物理實(shí)體上,其對(duì)象之間對(duì)應(yīng)關(guān)系,需要唯一一個(gè)標(biāo)識(shí)來確定,這里認(rèn)為采用UUID是一個(gè)不錯(cuò)的選擇,不同計(jì)算機(jī)上產(chǎn)生的UUID不重復(fù),并且范圍足夠大,可以唯一在網(wǎng)絡(luò)環(huán)境中標(biāo)識(shí)一個(gè)對(duì)象。2.對(duì)象和對(duì)象屬性的分類對(duì)象的屬性,方法和數(shù)據(jù)為什么分布到客戶端,進(jìn)一步研究這個(gè)問題,就會(huì)發(fā)現(xiàn), 其目的是為了構(gòu)造在客戶端的運(yùn)行環(huán)境,對(duì)象操作進(jìn)行在客戶端本地實(shí)現(xiàn),以提高客戶端應(yīng)用的友好性和體驗(yàn)性。這點(diǎn)也可以從HTML,JSCript,AJAX的發(fā)展歷程中總結(jié)得到。為了構(gòu)造本地行環(huán)境,對(duì)象的屬性需要有本地屬性,記錄本地運(yùn)行對(duì)象相關(guān)的狀態(tài);對(duì)象的運(yùn)行也可能依賴于其它對(duì)象,這些被依賴的對(duì)象可能是本地創(chuàng)建的,因此對(duì)象也分為全局對(duì)象和本地對(duì)象;對(duì)于全局對(duì)象,可以進(jìn)一步分為與一個(gè)客戶端相關(guān)的對(duì)象和與所有客戶端相關(guān)的對(duì)象;與一個(gè)客戶端相關(guān)的對(duì)象,稱為客戶對(duì)象。與所有客戶端相關(guān)的對(duì)象,稱為全局對(duì)象。總結(jié)起來,對(duì)象分為三類全局對(duì)象,客戶對(duì)象和本地對(duì)象;每個(gè)對(duì)象的屬性分為兩類本地屬性和全局屬性。3.對(duì)象執(zhí)行代碼(腳本)同步在需要考慮效率的分布式飲用場(chǎng)景下,需要使用C/C++進(jìn)行對(duì)象執(zhí)行代碼的編寫,需要編譯成二進(jìn)制文件;分布式對(duì)象管理功能,必須支持將執(zhí)行代碼分布到客戶端,以便客戶端對(duì)象能夠正常執(zhí)行其功能。在同步過程中,不能夠,也不假設(shè)對(duì)象的屬性不變化, 對(duì)象可能增加屬性,可能刪除屬性,執(zhí)行代碼可能升級(jí),這些情況,分布式對(duì)象管理模塊必須能夠正確地處理。4.對(duì)象數(shù)據(jù)的下載對(duì)象數(shù)據(jù)作為對(duì)象的一項(xiàng)內(nèi)容,其特點(diǎn)與屬性不同。在客戶端運(yùn)行環(huán)境中,某一時(shí)刻,可能不需要對(duì)象的所有數(shù)據(jù),因此要根據(jù)需要進(jìn)行下載。對(duì)象數(shù)據(jù)的更新,需要觸發(fā)新的下載過程。分布式對(duì)象管理功能,需要支持對(duì)象數(shù)據(jù)的這些功能。5.對(duì)象的分組在復(fù)雜的應(yīng)用中,客戶端不可能同時(shí)需要所有的對(duì)象,因此可以根據(jù)需要,下載需要的對(duì)象,以便降低網(wǎng)絡(luò)的傳輸。為此,對(duì)象需要分為不同的組,客戶端根據(jù)執(zhí)行的場(chǎng)景,選擇下載不同的對(duì)象組。分布式對(duì)象管理功能需要包含對(duì)象組的管理,對(duì)象組在本發(fā)明的游
8戲引擎平臺(tái)中稱為服務(wù)項(xiàng)目。這些問題的解決和實(shí)現(xiàn),就構(gòu)成了完善的分布式對(duì)象管理平臺(tái),在此平臺(tái)上開發(fā)的應(yīng)用,將更加方便,高效和靈活;同時(shí)具有類似BS瀏覽器免安裝的特性。應(yīng)用本發(fā)明的網(wǎng)絡(luò)游戲引擎,整個(gè)構(gòu)架的單臺(tái)邏輯服務(wù)器預(yù)計(jì)滿載承載量是 20000人,穩(wěn)定運(yùn)行在10000-15000人左右。如果N臺(tái)邏輯服務(wù)器,承載量=10000*N。更多的玩家可以融入到一個(gè)完整的游戲世界中,從而在游戲中實(shí)現(xiàn)聊天,戰(zhàn)斗,貿(mào)易,交友,動(dòng)作互動(dòng)都高實(shí)時(shí)性的游戲體驗(yàn),目前網(wǎng)頁游戲發(fā)展的非常迅速,廣大的游戲愛好者已經(jīng)迷戀社區(qū)類休閑游戲帶給他們的全新體驗(yàn),本發(fā)明的游戲引擎Ev作為這種游戲強(qiáng)有力的后臺(tái), 能讓所有想進(jìn)入此領(lǐng)域研發(fā)的公司降低行業(yè)門檻,從而讓這些公司主要在游戲的可玩性和游戲理念上給予創(chuàng)新,為廣大游戲帶來更多更優(yōu)秀的游戲。
權(quán)利要求
1.一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其包含邏輯主服務(wù)器集群,與該邏輯主服務(wù)器集群連接的副本服務(wù)器集群、數(shù)據(jù)服務(wù)器、登陸服務(wù)器、日志服務(wù)器,客戶端與該登陸服務(wù)器相連接,該數(shù)據(jù)服務(wù)器通過數(shù)據(jù)適配器與該邏輯主服務(wù)器集群相連接。
2.根據(jù)權(quán)利要求1所述的一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其特征在于,所述邏輯主服務(wù)器集群包含游戲?qū)嶓w;游戲模塊,該游戲模塊通過事件路由器連接該游戲?qū)嶓w并與之相互通訊;該游戲?qū)嶓w與協(xié)議報(bào)告器相連接;該事件路由器與該協(xié)議報(bào)告器相連接;該客戶端連接該協(xié)議報(bào)告器;該客戶端通過協(xié)議適配器連接該游戲模塊。
3.根據(jù)權(quán)利要求2所述的一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其特征在于,所述游戲?qū)嶓w包含場(chǎng)景模塊,角色模塊,物品模塊,副本模塊,技能模塊和任務(wù)模塊;所述場(chǎng)景模塊,角色模塊,物品模塊,副本模塊,技能模塊和任務(wù)模塊均與腳本系統(tǒng)相互連接。
4.根據(jù)權(quán)利要求1所述的一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其特征在于,所述游戲引擎的架構(gòu)底層是游戲服務(wù)邏輯服務(wù)器;中間層是網(wǎng)絡(luò)適配層,該網(wǎng)絡(luò)適配層包含移動(dòng)設(shè)配協(xié)議適配器、客戶端協(xié)議適配器和游戲管理員協(xié)議適配器;頂層是客戶端、移動(dòng)電話、游戲管理員客戶端;該底層與該中間層相互通訊;該中間層與該頂層通過互聯(lián)網(wǎng)相互通訊;該客戶端協(xié)議適配器與該客戶端相互連接,該移動(dòng)設(shè)配協(xié)議適配器與該移動(dòng)電話相互連接;該客戶端協(xié)議適配器與該游戲管理員客戶端相連接。
5.根據(jù)權(quán)利要求3所述的一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其特征在于,所述游戲引擎的架構(gòu)底層是游戲服務(wù)邏輯服務(wù)器;中間層是網(wǎng)絡(luò)適配層,該網(wǎng)絡(luò)適配層包含移動(dòng)設(shè)配協(xié)議適配器、客戶端協(xié)議適配器和游戲管理員協(xié)議適配器;頂層是客戶端、移動(dòng)電話、游戲管理員客戶端;該底層與該中間層相互通訊;該中間層與該頂層通過互聯(lián)網(wǎng)相互通訊;該客戶端協(xié)議適配器與該客戶端相互連接,該移動(dòng)設(shè)配協(xié)議適配器與該移動(dòng)電話相互連接;該客戶端協(xié)議適配器與該游戲管理員客戶端相連接。
全文摘要
本發(fā)明公開的是一種用于大型多人在線角色扮演的網(wǎng)絡(luò)游戲引擎,其包括邏輯主服務(wù)器集群,與邏輯主服務(wù)器集群連接的副本服務(wù)器集群、數(shù)據(jù)服務(wù)器、登陸服務(wù)器、日志服務(wù)器,客戶端登陸服務(wù)器相連接,數(shù)據(jù)服務(wù)器通過數(shù)據(jù)適配器與邏輯主服務(wù)器集群相連接;本發(fā)明提供了靈活多變、安全穩(wěn)定的游戲環(huán)境。
文檔編號(hào)G06F19/00GK102215209SQ20101014160
公開日2011年10月12日 申請(qǐng)日期2010年4月7日 優(yōu)先權(quán)日2010年4月7日
發(fā)明者郭欣 申請(qǐng)人:上海樂格網(wǎng)絡(luò)科技有限公司