亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種無縫世界游戲服務(wù)器系統(tǒng)的制作方法

文檔序號:12278579閱讀:449來源:國知局

本發(fā)明涉及計算機領(lǐng)域,特別涉及一種無縫世界游戲服務(wù)器系統(tǒng)。



背景技術(shù):

大多數(shù)大型多人在線角色扮演游戲都需要大世界場景的支持,但傳統(tǒng)的游戲服務(wù)器,不支持無縫的大世界場景,一個物理上本來無縫的大世界場景因為服務(wù)器設(shè)計限制被人為分割成一個個邏輯的場景,玩家在不同場景之間移動時要載入畫面等機制等待加載場景、角色等。嚴(yán)重影響了玩家的代入感與游戲體驗。也給關(guān)卡設(shè)計師的設(shè)計增加了難度與工作量。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于克服現(xiàn)有技術(shù)問題的缺陷,提供一種無縫世界游戲服務(wù)器系統(tǒng),以達到大大縮短游戲服務(wù)器的開發(fā)周期,增強游戲的體驗和表現(xiàn)。

根據(jù)本發(fā)明,提供一種無縫世界游戲服務(wù)器系統(tǒng),包括客戶端、遠程控制服務(wù)器、代理服務(wù)器、登陸服務(wù)器、節(jié)點服務(wù)器以及世界管理服務(wù)器,其中:

所述遠程控制服務(wù)器用于管理代理服務(wù)器的啟動時機;

所述代理服務(wù)器用于處理與所有客戶端之間的通信,并將所述通信轉(zhuǎn)發(fā)給系統(tǒng)中的其它服務(wù)器;

所述登陸服務(wù)器用于驗證客戶端的登陸;

所述節(jié)點服務(wù)器用于管理無縫世界中的一個區(qū)段;

所述世界管理服務(wù)器用于將無縫世界劃分成不同的管理區(qū)段,并將所述不同的管理區(qū)段分配給不同的節(jié)點服務(wù)器。

優(yōu)選地,所述系統(tǒng)還包括一數(shù)據(jù)庫,用于存儲玩家的信息。

優(yōu)選地,所述數(shù)據(jù)庫包括SQL、Oracle以及SQLServer。

優(yōu)選地,當(dāng)滿足啟動條件后,所述遠程控制服務(wù)器發(fā)送一個包含上線命令的數(shù)據(jù)包給代理服務(wù)器,以開始接受客戶端的連接請求。

優(yōu)選地,所述啟動條件包括確定登陸服務(wù)器啟動以及世界管理服務(wù)器已經(jīng)將不同的管理區(qū)段分配給不同的節(jié)點服務(wù)器。

優(yōu)選地,所述代理服務(wù)器包括IO完全端口,以實現(xiàn)服務(wù)多個并發(fā)的客戶端連接。

優(yōu)選地,所述客戶端連接使用數(shù)組進行維護。

優(yōu)選地,還包括主控的重定向器,所述客戶端連接至所述重定向器,所述重定向器根據(jù)當(dāng)前負載以及從客戶端的延遲來確定客戶端使用的代理服務(wù)器。

優(yōu)選地,所述登陸服務(wù)器接收代理服務(wù)器轉(zhuǎn)發(fā)過來的未知客戶端的連接請求,一旦通過驗證,所述登錄服務(wù)器就會通知客戶出生點的代理服務(wù)器和處理出生位置的節(jié)點服務(wù)器。

優(yōu)選地,所述世界管理服務(wù)器還用于回復(fù)來自登陸服務(wù)器以及節(jié)點服務(wù)器的請求。

本發(fā)明的有益效果是:

本發(fā)明針對目前游戲服務(wù)器系統(tǒng)存在的缺陷,提供了一種無縫世界游戲服務(wù)器系統(tǒng),所述系統(tǒng)為高性能、可伸縮、輕量級游戲服務(wù)器系統(tǒng),解決了目前游戲服務(wù)器開發(fā)中的難點,使得游戲服務(wù)器的開發(fā)變得簡單,并且具有如下優(yōu)勢:

1、大大增強游戲的表現(xiàn)力和玩家體驗,一個無縫世界中的玩家可以自由盡興地漫步、探險和游歷,在“區(qū)域”之間沒有物理屏障阻礙玩家的旅行,而且在區(qū)域間轉(zhuǎn)移的時候沒有載入畫面,在無縫的世界中,設(shè)計師不再需要在區(qū)域邊界之間放迷宮,而且限制很少,他們的想象可以自由馳騁,無縫世界有利于任何游戲類型,因為它是服務(wù)器的核心,游戲特定的世界可以存在于它的上層,MMORPG游戲會受益于一個玩家可以游歷的巨大的、連續(xù)的世界,而FPS游戲可以讓世界延展到遼闊的地形中,去掉物理區(qū)域極大地推動了玩家在游戲中的沉浸感;

2、開發(fā)模型快速、易上手,基于約定優(yōu)先于配置的原則,讓代碼達到最大的簡化;

3、架構(gòu)的可伸縮性和可擴展性好,本發(fā)明的技術(shù)方案在服務(wù)器擴展和應(yīng)用擴展上非常方便;

4、輕量級,雖然是分布式架構(gòu),但啟動非常迅速,占用資源少。

附圖說明

下面結(jié)合附圖和實例對本發(fā)明作進一步說明:

圖1是根據(jù)本發(fā)明的一種無縫世界游戲服務(wù)器系統(tǒng)模塊框圖。

具體實施方式

參考圖1,本發(fā)明提供了一種無縫世界游戲服務(wù)器系統(tǒng),包括:客戶端、遠程控制服務(wù)器、代理服務(wù)器、登陸服務(wù)器、節(jié)點服務(wù)器以及世界管理服務(wù)器,其中,遠程控制服務(wù)器用于管理代理服務(wù)器的啟動時機;代理服務(wù)器用于處理與所有客戶端之間的通信,并將所述通信轉(zhuǎn)發(fā)給系統(tǒng)中的其它服務(wù)器;登陸服務(wù)器用于驗證客戶端的登陸;節(jié)點服務(wù)器用于管理無縫世界中的一個區(qū)段;世界管理服務(wù)器用于將無縫世界劃分成不同的管理區(qū)段,并將所述不同的管理區(qū)段分配給不同的節(jié)點服務(wù)器。

根據(jù)本發(fā)明的優(yōu)選實施例,從一開始,最少有三個服務(wù)器:代理服務(wù)器、登錄服務(wù)器和節(jié)點服務(wù)器。因為節(jié)點服務(wù)器的數(shù)量可以變化,而且不想手工向配置文件中添加?xùn)|西,所以將使用一個自動注冊系統(tǒng)。不同的節(jié)點服務(wù)器在啟動的時候?qū)阉鼈冏约鹤缘绞澜绻芾矸?wù)器。這個策略可以隨意地改變節(jié)點服務(wù)器的數(shù)量,而不用改變配置文件的任何一行。

根據(jù)本發(fā)明的優(yōu)選實施例,使用遠程控制服務(wù)器來管理代理服務(wù)器的啟動時機,遠程控制服務(wù)器讓代理服務(wù)器等待一個特殊的數(shù)據(jù)包,包含一個“上線”的命令。這種方式可以精確地控制代理服務(wù)器什么時候上線。這個數(shù)據(jù)包只有在遠程控制器的所有條件都達成了之后才會發(fā)送。這些條件包括:確定登錄服務(wù)器啟動以及世界管理器把世界區(qū)段發(fā)給節(jié)點服務(wù)器等。

遠程控制器不僅僅是一個實用的工具,而且是一個調(diào)度服務(wù)器啟動時機的實用工具。避免手工控制代理服務(wù)器,那會導(dǎo)致人為錯誤和其他伴隨的東西。

根據(jù)本發(fā)明的優(yōu)選實施例,使用代理服務(wù)器用于處理與所有客戶端之間的通信,并將所述通信轉(zhuǎn)發(fā)給系統(tǒng)中的其它服務(wù)器。一般來說,為了游戲服務(wù)器的安全,并不希望把服務(wù)器架構(gòu)暴露給外部世界。達到這一點的方法是讓所有的通信都通過一個代理服務(wù)器,讓它轉(zhuǎn)發(fā)給正確的接收器。這項技術(shù)的優(yōu)點是只有一個對外的入口點,對客戶端隱藏了真實的服務(wù)器分布。如果需要改變服務(wù)器分布、數(shù)量或內(nèi)部協(xié)議,可以那么做,客戶端會一無所知,因為它們只知道代理。

代理服務(wù)器將處理所有客戶端和服務(wù)器之間到來和發(fā)出的數(shù)據(jù)包,因此處理了大部分流量。代理服務(wù)器可以使用IO完全端口(IOCP)來實現(xiàn),因為它不占用太多資源,并可以服務(wù)很多并發(fā)的客戶連接。

而在實際部署中,可以用多個代理服務(wù)器來分擔(dān)負載。客戶端可以連接到一個主控的重定向器,它將根據(jù)當(dāng)前負載和從客戶端的延遲(ping時間)告訴客戶端應(yīng)該啟用哪個代理服務(wù)器。這可以讓代理服務(wù)器分布在世界中,而對客戶端只保持著一個連接點。

當(dāng)代理服務(wù)器收到一個來自未知客戶端的連接時,就會把它轉(zhuǎn)發(fā)給登錄服務(wù)器來驗證。一旦用戶通過了驗證,登錄服務(wù)器就會通知客戶出生點的代理服務(wù)器和處理出生位置的節(jié)點服務(wù)器。

客戶連接在內(nèi)部通過一個簡單的數(shù)組進行維護,這個數(shù)組進行從客戶端ID到它應(yīng)該連接到的節(jié)點服務(wù)器之間的轉(zhuǎn)換??蛻舳薎D是數(shù)組的索引,當(dāng)代理服務(wù)器從登錄服務(wù)器收到驗證確認的時候,由它處理客戶端ID。代理服務(wù)器在啟動的時候會分配這個數(shù)組,知道它能支持的最大連接數(shù)。為了快速管理客戶端的連接和斷線,它還保存了一個無用連接的列表。為了最小化惡意用戶在客戶連接的時候做出欺騙的可能性,在它將要連接的節(jié)點服務(wù)器上保存連接細節(jié)。偶爾要檢查收到的數(shù)據(jù)包是否真的來自于合法的客戶端。

根據(jù)本發(fā)明的優(yōu)選實施例,使用登陸服務(wù)器用于驗證客戶端的登陸。登錄服務(wù)器負責(zé)檢查玩家的信息,得到出生點的坐標(biāo),找出正確的節(jié)點服務(wù)器,并把連接切換上去。這通過要求節(jié)點服務(wù)器處理的那部分世界的世界管理器來完成。登錄服務(wù)器會處理數(shù)據(jù)庫查找并通知世界管理服務(wù)器,因為希望代理服務(wù)器盡可能地輕量。

玩家的信息存放在標(biāo)準(zhǔn)的SQL數(shù)據(jù)庫中。為了讓實現(xiàn)更加簡單,mySQL是一個好的選擇,因為它不僅可以處理大量頻繁的小請求,而且是免費開源的。實際安裝中需要參考其他數(shù)據(jù)庫解決方案,包括Oracle和SQLServer。在產(chǎn)品的環(huán)境中,也要考慮在數(shù)據(jù)庫前端有代理/隊列服務(wù)器,以根據(jù)重要性隊列化獲取/更新。同時可以把數(shù)據(jù)庫存放在內(nèi)存中。偶爾需要一次性保存物理內(nèi)存,以在服務(wù)器崩潰的情況下有一個數(shù)據(jù)庫的物理拷貝。但是,盡量保持最小化,而且可以在另一個服務(wù)器中來完成這件事(使用主從復(fù)制)。

根據(jù)本發(fā)明的優(yōu)選實施例,使用節(jié)點服務(wù)器用于管理無縫世界中的一個區(qū)段。節(jié)點服務(wù)器是世界的存放者,是無縫世界中的客戶端表現(xiàn)和服務(wù)端內(nèi)存狀態(tài)之間發(fā)生沖突的最終仲裁者。它們執(zhí)行的是玩家和他周圍的交互的健全檢查,以使所有東西都保持整潔,而且還給游戲世界中的很多部分帶來生命。例如,它將提醒玩家,現(xiàn)在正吹著某個方向的5km/h的風(fēng)。

因為在線游戲試圖讓玩家探索一個巨大的開放世界,所以每個節(jié)點服務(wù)器都會管理一個小區(qū)段。由于需要分割游戲世界,傳統(tǒng)的劃區(qū)域在線世界沒有表現(xiàn)(至少不在這個數(shù)量級)的無縫世界實現(xiàn)就會有不可忽視的復(fù)雜開銷。玩家和/或NPC之間的交互有了新的意義,因為當(dāng)交互開始的時候,它們現(xiàn)在可以在兩個不同的服務(wù)器上。這會導(dǎo)致各種各樣的行為,當(dāng)在設(shè)計讓玩家獲取/交換/給予“物品”的事務(wù)系統(tǒng)的時候,必須非常小心。為了清楚起見,任何可以在玩家或NPC之間交換的會影響游戲的東西,比如物質(zhì)物品、要求物(物質(zhì)的或“口頭的”),等等,將被放到“物品”類之中。

為了管理跨邊界的交互,節(jié)點服務(wù)器不僅需要管理在它們區(qū)段中的世界,而且還需要知道外面的東西,把它叫做邊界區(qū)域。邊界區(qū)域略微伸展過兩個區(qū)段的邊界。這個區(qū)域,雖然屬于其他服務(wù)器,也需要讓節(jié)點服務(wù)器告訴它的客戶端已經(jīng)接近該服務(wù)器已知區(qū)域的邊界,即使它已經(jīng)位于另一個節(jié)點服務(wù)器管理的部分世界。

為了讓同一個對象同時出現(xiàn)在兩個服務(wù)器上,引入代理對象的概念,它是一個服務(wù)端對象,表示在另一個節(jié)點服務(wù)器上的主控對象的代理。當(dāng)兩個在邊界不同邊的玩家之間開始一個事務(wù)的時候,服務(wù)器將在代理對象上執(zhí)行事務(wù),而不是執(zhí)行真的位于另一個節(jié)點服務(wù)器上的副本。

邊界區(qū)域的最小大小必須至少是玩家認知半徑的大小,以避免兩個在邊界不同邊的玩家可能看不到相同的東西,更糟糕的是一個可能看不見另一個,并因此引發(fā)問題。如果讓邊界區(qū)域略微大于玩家的認知半徑,那在新對象作為代理復(fù)制到相鄰的節(jié)點服務(wù)器的時候,將減少視覺彈出的可能性。

根據(jù)本發(fā)明的優(yōu)選實施例,使用世界管理服務(wù)器用于將無縫世界劃分成不同的管理區(qū)段,并將所述不同的管理區(qū)段分配給不同的節(jié)點服務(wù)器。當(dāng)世界管理服務(wù)器分發(fā)出所有的世界區(qū)段之后,它會發(fā)一個消息給遠程控制服務(wù)器,告訴它世界已經(jīng)分布好了。這能確保在世界的區(qū)段還沒有被管理,即不可訪問之前,就接受玩家的連接。

在帶狀服務(wù)器的設(shè)計中,連接到世界管理服務(wù)器并申請一片世界的后續(xù)請求是被忽略的,因為沒有提供備用的節(jié)點服務(wù)器;同時,世界區(qū)段的數(shù)量在啟動的時候己經(jīng)知道了,所以當(dāng)節(jié)點服務(wù)器連接的時候,它們會立刻被分配一個世界區(qū)段。

世界管理服務(wù)器的另一個任務(wù)是回復(fù)來自登錄服務(wù)器和節(jié)點服務(wù)器的請求,關(guān)于哪個節(jié)點服務(wù)器處理世界的哪個部分。這對一個玩家從一個會話切換到另一個會話的情況很重要,如果服務(wù)器關(guān)閉了,就不能保證那個節(jié)點服務(wù)器會處理那個玩家斷線時的那部分世界。它讓從手工指定每個節(jié)點服務(wù)器的世界邊界中解放出來,這樣就可以自動處理把新的節(jié)點服務(wù)器引入到的分布式系統(tǒng)之中的情況,不管是因為擴充還是因為一個服務(wù)器失效。

根據(jù)本發(fā)明的優(yōu)選實施例,本發(fā)明的無縫世界游戲服務(wù)器系統(tǒng)可以實現(xiàn)動態(tài)管理世界區(qū)段。

如果一個節(jié)點服務(wù)器過于擁擠,世界管理服務(wù)器會收到一個啟動備用處理的請求。在需要的時候,通過改變邊界大小或把當(dāng)前世界區(qū)段切分成兩個,把另一半交給備用節(jié)點服務(wù)器,可以減輕服務(wù)器的負擔(dān)。節(jié)點服務(wù)器支持管理具體的直接傳輸,而不用通過代理對象的創(chuàng)建(一般與跨節(jié)點服務(wù)器邊界的實體相關(guān))。

讓備用節(jié)點服務(wù)器獲取失效的節(jié)點服務(wù)器的負載可以從硬件錯誤中恢復(fù),而不會中斷服務(wù)。如果一個節(jié)點服務(wù)器監(jiān)視著硬件消息,它就可以對此起作用。不必因為一個多余的電源關(guān)閉,就為了維護而關(guān)閉游戲服務(wù),節(jié)點服務(wù)器可以告訴世界管理服務(wù)器它的狀態(tài)。世界管理器會啟動一個備用節(jié)點服務(wù)器,并把失效的節(jié)點服務(wù)器所管理的世界區(qū)段賦給它。當(dāng)所有管理實體的傳輸完成之后,失效的節(jié)點服務(wù)器就可以安全地移除了。

因為實體傳輸?shù)慕^對大小,需要漸進地去做。如果把實體負載從節(jié)點服務(wù)器A傳輸?shù)焦?jié)點服務(wù)器B,在一個操作中完成會很消耗。取而代之的是,通過移動節(jié)點服務(wù)器邊界,并每次只遷移世界區(qū)段的一部分,雖然事實上在邊界移動的時候大量代理對象將會建立和刪除,但是這樣的傳輸更為平滑。

有了動態(tài)邊界,遠程控制服務(wù)器也可以作為世界區(qū)段的界面,讓管理員有能力控制它們確切的布局和大小,可以具體地管理世界的劃分。沒有了靜態(tài)劃分的限制,管理員就可以在計劃游戲的哪個地方會出現(xiàn)大量玩家之前,就修改世界區(qū)段的大小。

根據(jù)本發(fā)明的優(yōu)選實施例,本發(fā)明的無縫世界游戲服務(wù)器系統(tǒng)可以實現(xiàn)專用服務(wù)器計算AI(Artificial Intelligence,人工智能)。

節(jié)點服務(wù)器會把AI看作一個普通的客戶端,讓它們通過專用的端口連接(這個端口用來做服務(wù)器之間的通信),因為它們可以看作是“可信任”的客戶端。一些與世界交互的雙重檢查或AI活動的驗證可以忽略。AI服務(wù)器可以通過其他端口來連接,而不是與外部世界通信的端口。(在一個實際的服務(wù)器中,這完全可以考慮使用另一個網(wǎng)卡)只有在連接的時候,當(dāng)服務(wù)器要開始管理AI實體的時候,才會設(shè)置“可信任實體”標(biāo)記。

以上是對本發(fā)明的較佳實施進行了具體說明,但本發(fā)明創(chuàng)造并不限于所述實施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可做出種種的等同變形或替換,這些等同的變型或替換均包含在本申請權(quán)利要求所限定的范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1