欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

更新游戲中的場(chǎng)景的方法和裝置、介質(zhì)、處理器以及終端與流程

文檔序號(hào):11655424閱讀:192來(lái)源:國(guó)知局
更新游戲中的場(chǎng)景的方法和裝置、介質(zhì)、處理器以及終端與流程

本申請(qǐng)涉及游戲的場(chǎng)景編輯領(lǐng)域。具體地,本申請(qǐng)涉及一種更新游戲中的場(chǎng)景的方法和裝置。



背景技術(shù):

隨著游戲技術(shù)的發(fā)展,從客戶端游戲到網(wǎng)頁(yè)游戲再到手機(jī)游戲,現(xiàn)在的手機(jī)游戲越來(lái)越復(fù)雜,功能越來(lái)越多,玩家需求也越來(lái)越大。手機(jī)游戲也逐漸開(kāi)始客戶端游戲化。越來(lái)越多的客戶端游戲技術(shù)開(kāi)始在手機(jī)游戲上體現(xiàn)。如何提升玩家體驗(yàn)是各大廠商都在爭(zhēng)相做的事。很多游戲?yàn)榱颂岣呶葧?huì)引入被稱為無(wú)縫大世界的技術(shù),即,客戶端表現(xiàn)上看到的是一張無(wú)比巨大的、連續(xù)的地圖場(chǎng)景,包括場(chǎng)景里面的各種對(duì)象也都是連續(xù)出現(xiàn)的。但是由于此項(xiàng)技術(shù)對(duì)于客戶端、服務(wù)器、美術(shù)(場(chǎng)景制作人員,如下同)都是一個(gè)非常大的考驗(yàn)??蛻舳艘紤]這么巨大的地圖如何加載才能流暢運(yùn)行,服務(wù)器要考慮這么巨大的地圖需要怎么管理才能達(dá)到最高效率并且要能夠支撐大量玩家而不產(chǎn)生卡頓,美術(shù)需要考慮這么巨大的地圖需要怎么制作。所以幾乎很少有游戲能夠?qū)崿F(xiàn)。

由于美術(shù)場(chǎng)景的制作限制,不可能做一個(gè)無(wú)限大的地圖,而且客戶端也沒(méi)有足夠內(nèi)存去創(chuàng)建一張巨大的地圖,所以現(xiàn)有的手機(jī)游戲大部分是以一張張小地圖為單位的,服務(wù)器以一張張小地圖為單位去創(chuàng)建實(shí)例,每個(gè)實(shí)例可以分布在不同進(jìn)程中。玩家上線后角色會(huì)出現(xiàn)在一張地圖場(chǎng)景里,這時(shí)玩家只能看到當(dāng)前地圖場(chǎng)景里的對(duì)象,對(duì)象可以是例如角色、物體和事件等的游戲內(nèi)容。當(dāng)玩家要跨過(guò)這個(gè)地圖場(chǎng)景時(shí),會(huì)離開(kāi)原來(lái)的地圖場(chǎng)景,進(jìn)入新的地圖場(chǎng)景,也就是正常的場(chǎng)景間跳轉(zhuǎn)。由于此時(shí)需要完全卸載當(dāng)前場(chǎng)景模型以及場(chǎng)景里面的對(duì)象,并且重新加載新的場(chǎng)景模型以及新的場(chǎng)景里面的對(duì)象,所以會(huì)出現(xiàn)客戶端顯示變空并且重新出現(xiàn)新場(chǎng)景的過(guò)程,此時(shí)是不能讓玩家操作的,因此一般會(huì)有一個(gè)進(jìn)度條,對(duì)于新地圖場(chǎng)景里的對(duì)象,只有玩家的角色進(jìn)入新地圖場(chǎng)景之后才能看到,即不能隔墻看物,即便玩家站在地圖場(chǎng)景的邊緣也無(wú)法看到臨近場(chǎng)景的對(duì)象。而且當(dāng)一個(gè)地圖場(chǎng)景的人數(shù)越來(lái)越多的時(shí)候,會(huì)造成服務(wù)器壓力過(guò)大,玩家體驗(yàn)不流暢。

對(duì)于現(xiàn)有技術(shù)來(lái)說(shuō),如果游戲設(shè)計(jì)者想做一個(gè)超大的世界,讓玩家在這個(gè)超大的世界場(chǎng)景里能看到所有他的“視線”能觸及的地方,而且當(dāng)玩家跨過(guò)本來(lái)是一張地圖的邊界時(shí),感受不到任何切換的現(xiàn)象。有兩種方案:

1、美術(shù)還是按一個(gè)個(gè)小場(chǎng)景制作,服務(wù)器把一張大世界的所有場(chǎng)景拼接起來(lái),組成一個(gè)場(chǎng)景,所有大世界里的事物都集中在一個(gè)服務(wù)器場(chǎng)景對(duì)象里面管理。因?yàn)閳?chǎng)景太大,客戶端不可能一次性加載整個(gè)大世界,只能在玩家接近當(dāng)前地圖邊緣時(shí)預(yù)加載另一個(gè)場(chǎng)景地塊。這種方案雖然在客戶端表現(xiàn)上能夠呈現(xiàn)一張超大世界地圖,但是對(duì)于服務(wù)器來(lái)說(shuō),會(huì)把整個(gè)世界里面的所有事物堆在一個(gè)進(jìn)程處理,增加了服務(wù)器的負(fù)載壓力,當(dāng)一個(gè)大世界地圖里面人數(shù)眾多的時(shí)候可能造成服務(wù)器太忙,客戶端發(fā)過(guò)來(lái)的消息處理不過(guò)來(lái),玩家體驗(yàn)不流暢的現(xiàn)象。而且如果當(dāng)前進(jìn)程出現(xiàn)問(wèn)題,會(huì)影響整個(gè)大世界里面的玩家。

2、若美術(shù)按較大的尺寸制作場(chǎng)景,場(chǎng)景間通過(guò)如上現(xiàn)有技術(shù)方案里的場(chǎng)景間跳轉(zhuǎn)進(jìn)行加載,這樣服務(wù)器就不用把大世界里面的所有場(chǎng)景拼起來(lái)了。這樣存在的問(wèn)題是,一方面單個(gè)場(chǎng)景的尺寸畢竟有限,在場(chǎng)景的邊緣進(jìn)入另一個(gè)場(chǎng)景往往需要進(jìn)行跳轉(zhuǎn)等待,難以滿足在開(kāi)闊世界中無(wú)縫自由探索的游戲需求;另一方面,即便在玩家接近當(dāng)前地圖邊緣時(shí)預(yù)加載另一個(gè)場(chǎng)景,但是新場(chǎng)景中對(duì)象較多,當(dāng)真正進(jìn)入新場(chǎng)景時(shí)仍需要一次性加載所有該場(chǎng)景里的對(duì)象,這樣會(huì)對(duì)客戶端造成較大負(fù)擔(dān),而且看起來(lái)就不是無(wú)縫的,在手機(jī)游戲這種對(duì)性能要求更苛刻的環(huán)境中是不可行的。

由于一個(gè)進(jìn)程服務(wù)器的資源有限,當(dāng)這個(gè)進(jìn)程服務(wù)器的人數(shù)達(dá)到一定數(shù)量之后,cpu/io會(huì)超過(guò)它所能處理的閥值,因此玩家會(huì)感覺(jué)很卡頓,游戲不順暢。服務(wù)器人數(shù)上限沒(méi)法達(dá)到一個(gè)很滿意的值。

由于沒(méi)法做到負(fù)載均衡,玩家大部分都擠在一個(gè)進(jìn)程服務(wù)器里面,如果這個(gè)進(jìn)程服務(wù)器出現(xiàn)故障,會(huì)影響這個(gè)進(jìn)程服務(wù)器里面所有的玩家,造成的損失太大。



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

本申請(qǐng)實(shí)施例提供了一種更新游戲中的場(chǎng)景的方法和裝置、介質(zhì)、處理器以及終端,以至少解決現(xiàn)有技術(shù)中不能實(shí)現(xiàn)場(chǎng)景的無(wú)縫對(duì)接的問(wèn)題。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,提供了一種更新游戲中的場(chǎng)景的方法,包括:確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,當(dāng)前場(chǎng)景和相鄰場(chǎng)景分別包括多個(gè)區(qū)塊,以及在當(dāng)前的游戲中加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊,以更新游戲中的場(chǎng)景,相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊是相鄰場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。

進(jìn)一步地,在加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊的同時(shí),加載當(dāng)前場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊,當(dāng)前場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊是當(dāng)前場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。

進(jìn)一步地,在加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊的同時(shí),卸載當(dāng)前場(chǎng)景中離開(kāi)虛擬鏡頭范圍覆蓋的區(qū)塊,當(dāng)前場(chǎng)景中離開(kāi)虛擬鏡頭范圍覆蓋的區(qū)塊是當(dāng)前場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。

進(jìn)一步地,當(dāng)前場(chǎng)景中的邊緣區(qū)塊的邊緣與相鄰場(chǎng)景中的相鄰區(qū)塊的邊緣是在加載相鄰場(chǎng)景中的區(qū)塊前對(duì)應(yīng)調(diào)整的。

進(jìn)一步地,每個(gè)區(qū)塊由具有高度信息的多個(gè)頂點(diǎn)格子構(gòu)成,當(dāng)前場(chǎng)景中的邊緣區(qū)塊的邊緣與相鄰場(chǎng)景中的相鄰區(qū)塊的邊緣的對(duì)應(yīng)調(diào)整包括邊緣區(qū)塊的頂點(diǎn)格子的高度被設(shè)置為與相鄰區(qū)塊的對(duì)應(yīng)的頂點(diǎn)格子相同的高度。

進(jìn)一步地,加載的相鄰場(chǎng)景中的區(qū)塊具有與當(dāng)前場(chǎng)景匹配的場(chǎng)景渲染信息,場(chǎng)景渲染信息包括場(chǎng)景中的光照信息。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,提供了一種更新游戲中的場(chǎng)景的方法,包括:建立配置表,在配置表中保存包括當(dāng)前場(chǎng)景和相鄰場(chǎng)景在內(nèi)的游戲的多個(gè)場(chǎng)景之間的相鄰關(guān)系;根據(jù)多個(gè)場(chǎng)景中的每個(gè)場(chǎng)景創(chuàng)建單獨(dú)的場(chǎng)景實(shí)例;以及當(dāng)確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景時(shí),向角色對(duì)應(yīng)的客戶端發(fā)送虛擬鏡頭范圍內(nèi)的相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容以更新游戲中的場(chǎng)景,游戲內(nèi)容包括與游戲中的角色、物體和事件相關(guān)聯(lián)的數(shù)據(jù)。

進(jìn)一步地,該方法還包括:基于玩家登陸游戲,在當(dāng)前場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中創(chuàng)建與玩家控制的角色對(duì)應(yīng)的主對(duì)象,主對(duì)象接收來(lái)自客戶端的與所述玩家的操作相關(guān)聯(lián)的操作數(shù)據(jù),以及將與角色對(duì)應(yīng)的虛擬鏡頭范圍內(nèi)的游戲內(nèi)容發(fā)送給客戶端。

進(jìn)一步地,向角色對(duì)應(yīng)的客戶端發(fā)送虛擬鏡頭范圍內(nèi)的相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容包括,如果玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,則在相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中創(chuàng)建與角色對(duì)應(yīng)的從對(duì)象,從對(duì)象接收相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中角色的虛擬鏡頭范圍內(nèi)的除了從對(duì)象之外的游戲內(nèi)容。

進(jìn)一步地,從對(duì)象包括與主對(duì)象對(duì)應(yīng)的角色的狀態(tài)信息。

進(jìn)一步地,基于確定角色從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,將從對(duì)象設(shè)置為主對(duì)象并且將主對(duì)象設(shè)置為從對(duì)象。

進(jìn)一步地,基于確定角色的虛擬鏡頭范圍離開(kāi)當(dāng)前場(chǎng)景,卸載當(dāng)前的從對(duì)象。

進(jìn)一步地,場(chǎng)景實(shí)例創(chuàng)建于一個(gè)以上的進(jìn)程中。

進(jìn)一步地,為每個(gè)場(chǎng)景創(chuàng)建多個(gè)場(chǎng)景實(shí)例。

進(jìn)一步地,根據(jù)每個(gè)進(jìn)程的載荷選擇用于分配載荷的進(jìn)程和場(chǎng)景實(shí)例。

進(jìn)一步地,該方法還包括:基于角色與游戲中的其他游戲?qū)ο笾g的互動(dòng)信息,將互動(dòng)信息發(fā)送給主對(duì)象和/或從對(duì)象所在的場(chǎng)景實(shí)例中,處于與互動(dòng)信息相關(guān)聯(lián)的范圍內(nèi)的所有游戲?qū)ο螅瑢⒒?dòng)信息的反饋信息發(fā)送到與游戲?qū)ο笙鄳?yīng)的客戶端。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種更新游戲中的場(chǎng)景的裝置,包括:客戶端判斷模塊,用于確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,以及更新模塊,用于在當(dāng)前的游戲中加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊,以更新游戲中的場(chǎng)景,其中,當(dāng)前場(chǎng)景和相鄰場(chǎng)景分別包括多個(gè)區(qū)塊,相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊是相鄰場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種更新游戲中的場(chǎng)景的裝置,包括:配置表模塊,用于建立配置表,在配置表中保存包括當(dāng)前場(chǎng)景和相鄰場(chǎng)景在內(nèi)的游戲的多個(gè)場(chǎng)景之間的相鄰關(guān)系,副本模塊,根據(jù)多個(gè)場(chǎng)景中的每個(gè)場(chǎng)景創(chuàng)建單獨(dú)的場(chǎng)景實(shí)例;以及發(fā)送模塊,當(dāng)確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景時(shí),向角色對(duì)應(yīng)的客戶端發(fā)送虛擬鏡頭范圍內(nèi)的相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容以更新游戲中的場(chǎng)景,游戲內(nèi)容包括與游戲中的角色、物體和事件相關(guān)聯(lián)的數(shù)據(jù)。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種存儲(chǔ)介質(zhì),存儲(chǔ)介質(zhì)包括存儲(chǔ)的程序,其中,在程序運(yùn)行時(shí)控制存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行上述任意一項(xiàng)的更新游戲中的場(chǎng)景的方法。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種處理器,處理器用于運(yùn)行程序,其中,程序運(yùn)行時(shí)執(zhí)行上述任意一項(xiàng)的更新游戲中的場(chǎng)景的方法。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種終端,包括:一個(gè)或多個(gè)處理器,存儲(chǔ)器,顯示裝置以及一個(gè)或多個(gè)程序,其中,一個(gè)或多個(gè)程序被存儲(chǔ)在存儲(chǔ)器中,并且被配置為由一個(gè)或多個(gè)處理器執(zhí)行,一個(gè)或多個(gè)程序包括用于執(zhí)行上述任意一項(xiàng)的更新游戲中的場(chǎng)景的方法。

在本申請(qǐng)實(shí)施例中,提供了更新游戲中的場(chǎng)景的方法和裝置,其針對(duì)客戶端,對(duì)多場(chǎng)景進(jìn)行統(tǒng)一的分塊管理,可以動(dòng)態(tài)地加載不同場(chǎng)景中的任意地塊信息,能夠在游戲運(yùn)行的過(guò)程中控制可視范圍內(nèi)的地塊數(shù)量,從而降低客戶端的負(fù)載;同時(shí)利用場(chǎng)景分塊編輯的功能,場(chǎng)景制作人員可以同時(shí)獨(dú)立地制作尺寸相對(duì)較小的場(chǎng)景,在邊緣處加載鄰接場(chǎng)景的相應(yīng)地塊,能夠在在編輯時(shí)統(tǒng)一兩個(gè)場(chǎng)景的高度信息和美術(shù)風(fēng)格,從而解決場(chǎng)景邊緣的無(wú)縫對(duì)接。而服務(wù)端則通過(guò)統(tǒng)一的副本對(duì)象管理和副本間對(duì)象快速切換方案,解決了服務(wù)器的負(fù)載均衡以及跨區(qū)戰(zhàn)斗問(wèn)題,讓玩家在體驗(yàn)無(wú)縫的世界的同時(shí)獲得暢快的游戲體驗(yàn)。

附圖說(shuō)明

此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:

圖1是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的方法的流程圖;

圖2是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的方法的流程圖;

圖3是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的裝置的框圖;

圖4是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的裝置的框圖;

圖5是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的多場(chǎng)景地塊管理方法的示意圖;

圖6是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的地塊動(dòng)態(tài)加載流程示意圖;

圖7是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的加載場(chǎng)景的地塊的示意圖;

圖8是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的鄰接場(chǎng)景邊緣無(wú)縫對(duì)接的示意圖;

圖9是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)端場(chǎng)景管理的示意圖;

圖10是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖;

圖11是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖;

圖12是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖;

圖13是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖;

圖14是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖;

圖15是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖;

圖16是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的互動(dòng)方法的示意圖;

圖17是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的互動(dòng)方法的示意圖。

具體實(shí)施例

為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲取的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。

需要說(shuō)明的是,本申請(qǐng)的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類(lèi)似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請(qǐng)的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或模塊或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或模塊或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或模塊或單元。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,提供了一種更新游戲中的場(chǎng)景的方法,圖1是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的方法的流程圖。更新游戲中的場(chǎng)景的方法包括:s102,確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,當(dāng)前場(chǎng)景和相鄰場(chǎng)景分別包括多個(gè)區(qū)塊,以及s104,在當(dāng)前的游戲中加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊,以更新游戲中的場(chǎng)景,相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊是相鄰場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。在客戶端側(cè),根據(jù)該實(shí)施例的方法,游戲包括多個(gè)場(chǎng)景,玩家在游戲中的角色會(huì)出現(xiàn)在當(dāng)前的場(chǎng)景中。游戲的多個(gè)場(chǎng)景被進(jìn)一步劃分為多個(gè)區(qū)塊,因此,當(dāng)前場(chǎng)景以及鄰近當(dāng)前場(chǎng)景的相鄰場(chǎng)景包括多個(gè)區(qū)塊。如果玩家在游戲中控制的角色的虛擬鏡頭范圍,例如玩家在游戲中的視野范圍從當(dāng)前場(chǎng)景進(jìn)入到相鄰場(chǎng)景中,可以將相鄰場(chǎng)景中被該視野范圍覆蓋的區(qū)塊加載在當(dāng)前游戲中。由于相鄰場(chǎng)景中被該視野范圍覆蓋的區(qū)塊只是整個(gè)相鄰場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊,大大減少了需要加載的數(shù)據(jù)量,提升了場(chǎng)景加載的流暢度,降低了場(chǎng)景加載的負(fù)荷。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,在加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊的同時(shí),加載當(dāng)前場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊,當(dāng)前場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊是當(dāng)前場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。對(duì)于控制游戲中的角色的玩家,需要加載所有視野范圍內(nèi)的區(qū)塊,視野范圍內(nèi)的區(qū)塊包括當(dāng)前場(chǎng)景中被虛擬鏡頭覆蓋的區(qū)塊和相鄰場(chǎng)景中鏡頭范圍覆蓋的區(qū)塊。由于當(dāng)前場(chǎng)景和相鄰場(chǎng)景被分為多個(gè)區(qū)塊,因此,不必加載整個(gè)當(dāng)前場(chǎng)景和整個(gè)相鄰場(chǎng)景,即可顯示視野范圍內(nèi)的所有能看到的區(qū)塊。以這種方式,向玩家顯示了所有僅視野范圍內(nèi)的區(qū)塊,減少了需要加載的數(shù)據(jù)量,提升了運(yùn)行速度。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,在加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊的同時(shí),卸載當(dāng)前場(chǎng)景中離開(kāi)虛擬鏡頭范圍覆蓋的區(qū)塊,當(dāng)前場(chǎng)景中離開(kāi)虛擬鏡頭范圍覆蓋的區(qū)塊是當(dāng)前場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。隨著玩家控制的角色在游戲的場(chǎng)景中移動(dòng),虛擬鏡頭范圍,即視野范圍也隨之移動(dòng)。隨著視野范圍的移動(dòng),加載相鄰場(chǎng)景的區(qū)塊的同時(shí),當(dāng)前場(chǎng)景的一個(gè)或多個(gè)區(qū)塊離開(kāi)視野范圍。這些離開(kāi)視野范圍的區(qū)塊是不需要加載的,因此,在它們離開(kāi)視野范圍后,將其卸載。以這種方式,節(jié)約了系統(tǒng)內(nèi)存。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,當(dāng)前場(chǎng)景中的邊緣區(qū)塊的邊緣與相鄰場(chǎng)景中的相鄰區(qū)塊的邊緣是在加載相鄰場(chǎng)景中的區(qū)塊對(duì)應(yīng)調(diào)整的。在上面的方法中,隨著角色在游戲中的移動(dòng),不斷更新相鄰場(chǎng)景中的區(qū)塊。相鄰場(chǎng)景的區(qū)塊之間需要通過(guò)編輯來(lái)保證在加載后可以平滑銜接,因此,需要對(duì)相鄰場(chǎng)景之間對(duì)應(yīng)的區(qū)塊進(jìn)行調(diào)整。在該方法中,通過(guò)對(duì)應(yīng)地調(diào)整當(dāng)前場(chǎng)景中的邊緣區(qū)塊的邊緣與相鄰場(chǎng)景中的相鄰區(qū)塊的邊緣以保證新加載的區(qū)塊能夠與當(dāng)前場(chǎng)景的區(qū)塊平滑銜接。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,每個(gè)區(qū)塊由具有高度信息的多個(gè)頂點(diǎn)格子構(gòu)成,當(dāng)前場(chǎng)景中的邊緣區(qū)塊的邊緣與相鄰場(chǎng)景中的相鄰區(qū)塊的邊緣的對(duì)應(yīng)調(diào)整包括將邊緣區(qū)塊的頂點(diǎn)格子的高度被設(shè)置為與相鄰區(qū)塊的對(duì)應(yīng)的頂點(diǎn)格子相同的高度。為了調(diào)整區(qū)塊的邊緣,可以例如通過(guò)調(diào)整每個(gè)區(qū)塊具有的多個(gè)頂點(diǎn)格子,頂點(diǎn)格子具有高度信息,因此,將當(dāng)前場(chǎng)景中邊緣的區(qū)塊與相鄰場(chǎng)景中相鄰的區(qū)塊調(diào)整為頂點(diǎn)格子的高度信息相同,即可保證相鄰區(qū)塊之間的邊緣處于相同高度由此保證平滑。

根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,加載的相鄰場(chǎng)景中的區(qū)塊具有與當(dāng)前場(chǎng)景匹配的場(chǎng)景渲染信息,所述場(chǎng)景渲染信息包括場(chǎng)景中的光照信息。由于每個(gè)場(chǎng)景可能是單獨(dú)使用場(chǎng)景渲染信息制作的,因此不同場(chǎng)景中的場(chǎng)景渲染信息可能不同,這些場(chǎng)景渲染信息可以包括例如光照等的用于渲染場(chǎng)景的信息。如果不對(duì)這些場(chǎng)景渲染信息進(jìn)行調(diào)整,則在加載了相鄰場(chǎng)景的區(qū)塊后,可能造成當(dāng)前場(chǎng)景和相鄰場(chǎng)景的相鄰的區(qū)塊之間的場(chǎng)景渲染信息不同,例如可能相鄰的區(qū)塊存在明顯的光照區(qū)別,使得在視野范圍內(nèi)中,在當(dāng)前場(chǎng)景和相鄰場(chǎng)景的交界處出現(xiàn)光照的突然變化,這會(huì)降低玩家的游戲體驗(yàn)。因此,加載的相鄰場(chǎng)景中的區(qū)塊被調(diào)整為具有與當(dāng)前場(chǎng)景中相應(yīng)的場(chǎng)景渲染信息,使得區(qū)塊加載后顯示出平滑過(guò)度的游戲場(chǎng)景。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,提供了一種更新游戲中的場(chǎng)景的方法,圖2是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的方法的流程圖。更新游戲中的場(chǎng)景的方法包括:s202,建立配置表,在配置表中保存包括當(dāng)前場(chǎng)景和相鄰場(chǎng)景在內(nèi)的游戲的多個(gè)場(chǎng)景之間的相鄰關(guān)系,s204,根據(jù)多個(gè)場(chǎng)景中的每個(gè)場(chǎng)景創(chuàng)建單獨(dú)的場(chǎng)景實(shí)例,以及s206,當(dāng)確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景時(shí),向角色對(duì)應(yīng)的客戶端發(fā)送虛擬鏡頭范圍內(nèi)的相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容以更新游戲中的場(chǎng)景,游戲內(nèi)容包括與游戲中的角色、物體和時(shí)間相關(guān)聯(lián)的數(shù)據(jù)。在服務(wù)器側(cè),也根據(jù)玩家在游戲中控制的角色的虛擬鏡頭范圍進(jìn)行相應(yīng)的配置。首先,游戲的多個(gè)場(chǎng)景被分別包括在建立的配置表中,服務(wù)器通過(guò)配置表,在其中管理多個(gè)場(chǎng)景之間的相鄰關(guān)系,因此,當(dāng)選定當(dāng)前的場(chǎng)景后,通過(guò)配置表可以確定該當(dāng)前場(chǎng)景相鄰的場(chǎng)景。服務(wù)器以場(chǎng)景為單位創(chuàng)建場(chǎng)景實(shí)例,用以分別管理每個(gè)場(chǎng)景實(shí)例中的游戲內(nèi)容。例如,在第一個(gè)場(chǎng)景實(shí)例中可以管理第一個(gè)場(chǎng)景中的游戲中的角色、物體和事件,在第二個(gè)場(chǎng)景實(shí)例中可以管理第二個(gè)場(chǎng)景中的游戲中的角色、物體和事件。在以這樣的方式管理場(chǎng)景的基礎(chǔ)上,可以將不同的場(chǎng)景實(shí)例創(chuàng)建在不同的進(jìn)程里。這樣,服務(wù)器不必僅以單獨(dú)的進(jìn)程提供游戲服務(wù),避免了進(jìn)程負(fù)荷過(guò)大導(dǎo)致游戲服務(wù)的卡頓。玩家在登錄游戲后,其角色被創(chuàng)建在一個(gè)場(chǎng)景中,因此通過(guò)對(duì)應(yīng)該場(chǎng)景實(shí)例的進(jìn)程管理。相應(yīng)地,處于其他場(chǎng)景中的游戲內(nèi)容通過(guò)與其他場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例的進(jìn)程管理。當(dāng)角色的視野范圍越過(guò)當(dāng)前場(chǎng)景的邊界進(jìn)入相鄰場(chǎng)景時(shí),服務(wù)器將視野范圍內(nèi)的游戲內(nèi)容發(fā)送給角色。對(duì)于相鄰場(chǎng)景,視野范圍內(nèi)的游戲內(nèi)容是由相鄰場(chǎng)景實(shí)例的進(jìn)程管理的,需要發(fā)送該進(jìn)程管理的副本中的內(nèi)容。以這樣的方式,游戲中多個(gè)場(chǎng)景中的游戲內(nèi)容被分為由與多個(gè)場(chǎng)景實(shí)例對(duì)應(yīng)的多個(gè)進(jìn)程管理,降低了每個(gè)進(jìn)程的負(fù)荷,在更新游戲場(chǎng)景時(shí),只更新視野范圍內(nèi)的游戲內(nèi)容,大大減少了更新場(chǎng)景的負(fù)荷。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,該方法還包括:基于玩家登陸游戲,在當(dāng)前場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中創(chuàng)建與玩家控制的角色對(duì)應(yīng)的主對(duì)象,主對(duì)象接收來(lái)自客戶端的與所述玩家的操作相關(guān)聯(lián)的操作數(shù)據(jù),以及將與所述角色對(duì)應(yīng)的虛擬鏡頭范圍內(nèi)的游戲內(nèi)容發(fā)送給所述客戶端。角色在場(chǎng)景中的活動(dòng)通過(guò)創(chuàng)建對(duì)象來(lái)完成。在當(dāng)前場(chǎng)景中,需要在當(dāng)前場(chǎng)景對(duì)應(yīng)的副本中創(chuàng)建與角色對(duì)應(yīng)的主對(duì)象,主對(duì)象能夠接受來(lái)自客戶端的一切協(xié)議和數(shù)據(jù),用于處理例如玩家的操作,諸如角色的移動(dòng)和角色與游戲中的其他游戲內(nèi)容之間的互動(dòng)等等。由此,能夠控制角色及角色視野范圍在場(chǎng)景中的移動(dòng),同時(shí),主對(duì)象的視野范圍中除了下文所說(shuō)的從對(duì)象之外都能夠被客戶端接收,作為玩家能夠看到的內(nèi)容。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,向角色對(duì)應(yīng)的客戶端發(fā)送虛擬鏡頭范圍內(nèi)的相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容包括,如果玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,則在相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中創(chuàng)建與角色對(duì)應(yīng)的從對(duì)象,從對(duì)象接收相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中角色的虛擬鏡頭范圍內(nèi)的除了從對(duì)象之外的游戲內(nèi)容。角色在相鄰場(chǎng)景中的視野范圍通過(guò)以下方式配置。當(dāng)角色的視野范圍跨越當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,在相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中創(chuàng)建從對(duì)象,從對(duì)象能夠接收視野范圍內(nèi)除了其本身之外的游戲內(nèi)容。這樣,對(duì)于玩家來(lái)說(shuō),能夠看到相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容,而不會(huì)看到虛擬的角色本身。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,從對(duì)象包括與主對(duì)象對(duì)應(yīng)的角色的狀態(tài)信息。在角色的移動(dòng)過(guò)程中,主對(duì)象和從對(duì)象由于都是基于角色信息設(shè)置的,其視野范圍均需要相應(yīng)的移動(dòng),因此,從對(duì)象需要與主對(duì)象的狀態(tài)信息同步,例如,兩者具備相同的位置信息。這樣,在包括當(dāng)前場(chǎng)景和相鄰場(chǎng)景的游戲中,能夠獲得正確的跨不同場(chǎng)景實(shí)例的視野范圍。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,基于確定角色從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,將從對(duì)象設(shè)置為主對(duì)象并且將主對(duì)象設(shè)置為從對(duì)象。在角色本身跨過(guò)當(dāng)前場(chǎng)景的邊緣時(shí),角色及其視野范圍的主要部分進(jìn)入相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例,角色在相鄰場(chǎng)景內(nèi)的視野范圍內(nèi)包括角色本身,因此需要使主對(duì)象與從對(duì)象互相轉(zhuǎn)換以保證視野范圍中內(nèi)容的準(zhǔn)確性。轉(zhuǎn)換后,玩家依然能夠看到兩場(chǎng)景中的游戲內(nèi)容,并且新的主對(duì)象接收來(lái)自客戶端的一切協(xié)議和數(shù)據(jù)以處理玩家的操作。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,基于確定角色的虛擬鏡頭范圍離開(kāi)當(dāng)前場(chǎng)景,卸載當(dāng)前的從對(duì)象。玩家控制的角色進(jìn)一步移動(dòng)到之前作為相鄰場(chǎng)景的當(dāng)前場(chǎng)景中,直至其視野范圍完全離開(kāi)之前作為當(dāng)前場(chǎng)景的場(chǎng)景,從對(duì)象因此是不需要的,因而將其卸載以節(jié)省資源。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,場(chǎng)景實(shí)例創(chuàng)建于一個(gè)以上的進(jìn)程中。由于該方法中可以在多個(gè)進(jìn)程中管理場(chǎng)景實(shí)例,進(jìn)一步可以實(shí)現(xiàn)對(duì)進(jìn)程壓力的分擔(dān)。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,為每個(gè)場(chǎng)景創(chuàng)建多個(gè)場(chǎng)景實(shí)例。這樣,可以對(duì)同一個(gè)場(chǎng)景創(chuàng)建多個(gè)場(chǎng)景實(shí)例,當(dāng)一個(gè)副本中的游戲內(nèi)容過(guò)多,例如,某個(gè)場(chǎng)景中的玩家數(shù)過(guò)多導(dǎo)致進(jìn)程負(fù)擔(dān)過(guò)大,需要采用多個(gè)場(chǎng)景實(shí)例分擔(dān)負(fù)荷,而每個(gè)場(chǎng)景實(shí)例都是由單獨(dú)的進(jìn)程管理,因而可以實(shí)現(xiàn)多個(gè)進(jìn)程同時(shí)管理一個(gè)場(chǎng)景中的游戲內(nèi)容,分散了單進(jìn)程的壓力。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,根據(jù)每個(gè)進(jìn)程的載荷選擇用于分配載荷的進(jìn)程和場(chǎng)景實(shí)例。當(dāng)一個(gè)進(jìn)程中的載荷,例如玩家數(shù)量達(dá)到一定數(shù)量后,根據(jù)每個(gè)進(jìn)程的玩家數(shù)量,例如,選擇玩家數(shù)量較少的進(jìn)程,將玩家數(shù)量過(guò)多的進(jìn)程中的玩家分配到該進(jìn)程中用來(lái)調(diào)節(jié)進(jìn)程載荷,實(shí)現(xiàn)負(fù)載均衡。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,該方法還包括:基于角色與游戲中的其他游戲?qū)ο笾g的互動(dòng)信息,將互動(dòng)信息發(fā)送給主對(duì)象和/或從對(duì)象所在的場(chǎng)景實(shí)例中,處于與互動(dòng)信息相關(guān)聯(lián)的范圍內(nèi)的所有游戲?qū)ο?,將互?dòng)信息的反饋信息發(fā)送到與游戲?qū)ο笙鄳?yīng)的客戶端。由于游戲內(nèi)容被分配到了不同的場(chǎng)景實(shí)例中,為了避免一個(gè)場(chǎng)景實(shí)例中的角色不能與相鄰副本中的游戲內(nèi)容互動(dòng),該方法根據(jù)角色發(fā)出的互動(dòng)信息,在當(dāng)前場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例和相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中查找所有能夠與該互動(dòng)信息互動(dòng)的游戲內(nèi)容,然后將互動(dòng)信息發(fā)送給這些游戲內(nèi)容所在的場(chǎng)景實(shí)例對(duì)應(yīng)的進(jìn)程,這些游戲內(nèi)容與互動(dòng)信息互動(dòng)后的反饋信息被發(fā)送給與游戲?qū)ο笙鄳?yīng)的客戶端,由此實(shí)現(xiàn)不同進(jìn)程、不同場(chǎng)景實(shí)例之間的互動(dòng)。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種更新游戲中的場(chǎng)景的裝置,圖3是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的裝置的框圖。更新游戲中的場(chǎng)景的裝置包括:客戶端判斷模塊302,用于確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景,當(dāng)前場(chǎng)景和相鄰場(chǎng)景分別包括多個(gè)區(qū)塊,以及更新模塊304,用于在當(dāng)前的游戲中加載相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊,以更新游戲中的場(chǎng)景,相鄰場(chǎng)景中被虛擬鏡頭范圍覆蓋的區(qū)塊是相鄰場(chǎng)景中的多個(gè)區(qū)塊中的一個(gè)或多個(gè)區(qū)塊。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種更新游戲中的場(chǎng)景的裝置,圖4是根據(jù)本申請(qǐng)其中一實(shí)施例的更新游戲中的場(chǎng)景的裝置的框圖。更新游戲中的場(chǎng)景的裝置包括:配置表模塊402,用于建立配置表,在配置表中保存包括當(dāng)前場(chǎng)景和相鄰場(chǎng)景在內(nèi)的游戲的多個(gè)場(chǎng)景之間的相鄰關(guān)系;副本模塊404,根據(jù)多個(gè)場(chǎng)景中的每個(gè)場(chǎng)景創(chuàng)建單獨(dú)的場(chǎng)景實(shí)例;以及發(fā)送模塊406,當(dāng)確定玩家在游戲中控制的角色的虛擬鏡頭范圍從當(dāng)前場(chǎng)景進(jìn)入相鄰場(chǎng)景時(shí),向角色對(duì)應(yīng)的客戶端發(fā)送虛擬鏡頭范圍內(nèi)的相鄰場(chǎng)景對(duì)應(yīng)的場(chǎng)景實(shí)例中的游戲內(nèi)容以更新游戲中的場(chǎng)景,游戲內(nèi)容包括與游戲中的角色、物體和事件相關(guān)聯(lián)的數(shù)據(jù)。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種存儲(chǔ)介質(zhì),存儲(chǔ)介質(zhì)包括存儲(chǔ)的程序,其中,在程序運(yùn)行時(shí)控制存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行上述任意一項(xiàng)的更新游戲中的場(chǎng)景的方法。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種處理器,處理器用于運(yùn)行程序,其中,程序運(yùn)行時(shí)執(zhí)行上述任意一項(xiàng)的更新游戲中的場(chǎng)景的方法。

根據(jù)本申請(qǐng)的另一個(gè)實(shí)施例,還提供了一種終端,包括:一個(gè)或多個(gè)處理器,存儲(chǔ)器,顯示裝置以及一個(gè)或多個(gè)程序,其中,一個(gè)或多個(gè)程序被存儲(chǔ)在存儲(chǔ)器中,并且被配置為由一個(gè)或多個(gè)處理器執(zhí)行,一個(gè)或多個(gè)程序包括用于執(zhí)行上述任意一項(xiàng)的更新游戲中的場(chǎng)景的方法。

根據(jù)本申請(qǐng)實(shí)施例的另一方面的更新游戲中的場(chǎng)景的裝置實(shí)現(xiàn)的更新游戲中的場(chǎng)景的方法與上文中本申請(qǐng)實(shí)施例的一方面的方法相同,具備用于實(shí)現(xiàn)方法的各個(gè)對(duì)應(yīng)的模塊,在此不再贅述。

本申請(qǐng)還提供了根據(jù)本申請(qǐng)其中一示例性實(shí)施例的多場(chǎng)景地塊(chunks)管理方法。圖5是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的多場(chǎng)景地塊管理方法的示意圖。

首先,客戶端的場(chǎng)景在編輯時(shí)會(huì)將其劃分為多個(gè)地塊(每個(gè)地塊作為場(chǎng)景中的一個(gè)區(qū)塊)保存起來(lái),而在運(yùn)行時(shí)根據(jù)攝像機(jī)的可視范圍進(jìn)行加載。在傳統(tǒng)的客戶端實(shí)現(xiàn)中,整個(gè)游戲的世界是以一個(gè)場(chǎng)景為核心進(jìn)行管理的,載入的地塊會(huì)保存在場(chǎng)景對(duì)應(yīng)的loadedchunks中,視野外的地塊在從中移去。

本發(fā)明在場(chǎng)景之上再進(jìn)行了世界一層的抽象,地塊的動(dòng)態(tài)載入和卸載在世界一層進(jìn)行管理,每個(gè)場(chǎng)景依然保留編輯時(shí)的chunks信息,在世界中載入某場(chǎng)景的對(duì)應(yīng)地塊會(huì)根據(jù)地塊的索引到相應(yīng)的場(chǎng)景中按照?qǐng)鼍暗钠莆恢眠M(jìn)行載入。

圖6是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的地塊動(dòng)態(tài)加載流程示意圖。如圖6所示,對(duì)于傳統(tǒng)的場(chǎng)景分塊管理實(shí)現(xiàn),客戶端會(huì)直接根據(jù)玩家的位置和可視范圍尋找當(dāng)前場(chǎng)景中可以載入的地塊進(jìn)行加載,同時(shí)卸載視野范圍之外的地塊。而本發(fā)明引入了多場(chǎng)景的地塊管理之后,會(huì)先計(jì)算當(dāng)前位置及可視范圍所屬的場(chǎng)景,在根據(jù)場(chǎng)景的偏移計(jì)算需要載入的地塊的索引進(jìn)行加載,實(shí)際效果示意圖7所示,圖7是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的加載場(chǎng)景的地塊的示意圖,其中黑色表示卸載地塊。

當(dāng)玩家從場(chǎng)景a跨越到場(chǎng)景b時(shí),視野范圍內(nèi)的場(chǎng)景b的地塊會(huì)動(dòng)態(tài)加載進(jìn)來(lái),而場(chǎng)景a中脫離視野范圍的地塊則會(huì)從地塊管理器(loadedchunks)中卸載,從而控制內(nèi)存中地塊的數(shù)量。

為了解決場(chǎng)景制作的過(guò)程中,鄰接場(chǎng)景邊緣無(wú)縫對(duì)接的問(wèn)題,本發(fā)明對(duì)場(chǎng)景編輯器進(jìn)行了改良,使其能夠加載鄰接場(chǎng)景的相鄰地塊,并且對(duì)接其高度和尋路信息,效果如圖8所示,圖8是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的鄰接場(chǎng)景邊緣無(wú)縫對(duì)接的示意圖。

從圖8可以看出,單個(gè)地塊是由多個(gè)具有高度信息的頂點(diǎn)格子構(gòu)成的,為了保證邊緣連續(xù),鄰接的頂點(diǎn)格子的高度必須一致。通過(guò)本發(fā)明對(duì)編輯工具的改良,在編輯新場(chǎng)景地塊時(shí)可以動(dòng)態(tài)地加載臨近場(chǎng)景中編輯好的地塊(如圖8中的深色地塊),然后通過(guò)編輯器功能,可以一次性將新場(chǎng)景中邊緣地塊的所有的頂點(diǎn)格子高度設(shè)置為鄰接場(chǎng)景地塊相對(duì)應(yīng)的格子頂點(diǎn)高度,使邊緣過(guò)渡的更加自然無(wú)突變,實(shí)現(xiàn)真正的無(wú)縫拼接(如圖8中的淺色地塊)。另一方面,加載的地塊會(huì)附帶相應(yīng)的燈光信息,使得場(chǎng)景烘焙時(shí),邊緣的燈光信息不會(huì)發(fā)生突變。

再說(shuō)服務(wù)端的解決方案,圖9是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)端場(chǎng)景管理的示意圖。首先,把一個(gè)游戲的大世界場(chǎng)景分成若干個(gè)場(chǎng)景,場(chǎng)景制作人員以場(chǎng)景為單位來(lái)制作大世界場(chǎng)景。

服務(wù)器會(huì)列一份配置表管理大世界里面的所有場(chǎng)景,包含每個(gè)場(chǎng)景的相鄰場(chǎng)景是哪個(gè)。

服務(wù)器以場(chǎng)景為單位來(lái)創(chuàng)建場(chǎng)景實(shí)例,每一個(gè)場(chǎng)景實(shí)例管理著所有在本場(chǎng)景里面活動(dòng)的玩家、怪物以及其他所有事件。不同的場(chǎng)景實(shí)例可以創(chuàng)建在不同的進(jìn)程里。

圖10是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖。當(dāng)玩家上線時(shí)會(huì)創(chuàng)建一個(gè)玩家主對(duì)象到某個(gè)場(chǎng)景實(shí)例里面,主對(duì)象接收來(lái)自客戶端的一切協(xié)議,用于處理玩家操作,如玩家移動(dòng)、玩家放技能等等。同時(shí)主對(duì)象會(huì)更新相關(guān)狀態(tài)數(shù)據(jù)。

根據(jù)主對(duì)象設(shè)定的視野范圍,能夠接收到所有視野范圍內(nèi)該場(chǎng)景實(shí)例里的游戲內(nèi)容,但不包括該場(chǎng)景實(shí)例內(nèi)的從對(duì)象。即使玩家走到該場(chǎng)景實(shí)例邊緣,該主對(duì)象也只能看到上述游戲內(nèi)容。

當(dāng)玩家走到地圖邊界時(shí),會(huì)根據(jù)服務(wù)器配置找到臨近場(chǎng)景的場(chǎng)景實(shí)例,在該實(shí)例里面創(chuàng)建一個(gè)從對(duì)象。從對(duì)象能夠接收到所有視野范圍內(nèi)該場(chǎng)景實(shí)例里的游戲內(nèi)容,但不包括該場(chǎng)景實(shí)例內(nèi)的從對(duì)象。

主對(duì)象仍然接收來(lái)自客戶端的一切協(xié)議,處理玩家一切操作,更新對(duì)象狀態(tài)數(shù)據(jù)。然后主對(duì)象同步狀態(tài)數(shù)據(jù)到從對(duì)象。比如位置信息等等。

一個(gè)主對(duì)象可以有多個(gè)從對(duì)象,如:當(dāng)一張地圖邊界與多張地圖相鄰時(shí)(三岔路口等),會(huì)在臨近的多張地圖實(shí)例里面創(chuàng)建從對(duì)象。

圖11和圖12是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖。當(dāng)玩家跨過(guò)地圖邊界時(shí),進(jìn)行主從切換。原來(lái)的從對(duì)象變成主對(duì)象,原來(lái)的主對(duì)象變成從對(duì)象。新的主對(duì)象接收來(lái)自客戶端的一切協(xié)議,處理玩家一切操作,更新對(duì)象狀態(tài)數(shù)據(jù)。然后新的主對(duì)象同步狀態(tài)數(shù)據(jù)到新的從對(duì)象。比如位置信息等等。

圖13是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖。當(dāng)玩家視野范圍離開(kāi)之前場(chǎng)景時(shí),即從對(duì)象的視野范圍完全在從對(duì)象所在的地圖邊界外時(shí),需要卸載該從對(duì)象。

圖14是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖。當(dāng)玩家處于地圖邊界時(shí)的所見(jiàn),本發(fā)明約定主對(duì)象只能看到當(dāng)前地圖場(chǎng)景里的非從對(duì)象。

如圖14所示,無(wú)縫的第一部分就完成了,此時(shí)的場(chǎng)景a(regiona)與場(chǎng)景b(regionb)可以分布在不同進(jìn)程,一定程度上可以緩解服務(wù)器壓力。

但是當(dāng)一個(gè)場(chǎng)景的人超過(guò)一定上限之后,會(huì)對(duì)當(dāng)前進(jìn)程造成壓力,必須把玩家分散開(kāi)來(lái)。

比如:新手村、或者主城,玩家一般會(huì)大量堆積在上述地方,如果因?yàn)槿藬?shù)上限造成主城所在的服務(wù)器進(jìn)程負(fù)載嚴(yán)重,會(huì)大大影響玩家在游戲里面的體驗(yàn)。

此時(shí)就需要引入線的概念,同一個(gè)場(chǎng)景會(huì)創(chuàng)建n條線的實(shí)例。同一個(gè)場(chǎng)景的不同線實(shí)例可以分布在不同進(jìn)程里。

每個(gè)場(chǎng)景會(huì)選出一條當(dāng)前最優(yōu)線,當(dāng)某條線的玩家達(dá)到一定數(shù)量之后,會(huì)調(diào)整當(dāng)前最優(yōu)線,把其他玩家分配到另外的線。以此來(lái)分散單進(jìn)程壓力。

當(dāng)玩家站在場(chǎng)景邊界時(shí),會(huì)查找臨近場(chǎng)景的多條線,找到當(dāng)前最優(yōu)線的實(shí)例,來(lái)創(chuàng)建玩家的從對(duì)象。

此時(shí),玩家無(wú)法看到臨近場(chǎng)景所有線的人或事物,而只能看到當(dāng)前自己從對(duì)象所在的那條線的人或事物。

當(dāng)玩家跨過(guò)場(chǎng)景邊界時(shí),也只會(huì)同當(dāng)前玩家的從對(duì)象做主/從切換。

此時(shí)玩家的所見(jiàn)可擴(kuò)展為如圖15所示,圖15是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的服務(wù)器端的視野判斷方法的示意圖。

由此,無(wú)縫加負(fù)載均衡的策略就基本完成了。但是目前的架構(gòu)還有一個(gè)很大的缺陷,就是無(wú)縫的跨區(qū)戰(zhàn)斗。

當(dāng)玩家需要在一個(gè)場(chǎng)景a邊界向臨近場(chǎng)景b的玩家放技能時(shí),服務(wù)器的場(chǎng)景a實(shí)例里面找不到需要攻擊的對(duì)象。

此時(shí)就出現(xiàn)了一個(gè)悖論,即:玩家能看到某個(gè)相鄰場(chǎng)景中的對(duì)象,但是玩家無(wú)法與該對(duì)象互動(dòng)。

這是因?yàn)榉?wù)器是以一個(gè)場(chǎng)景單元來(lái)創(chuàng)建的實(shí)例,這個(gè)實(shí)例里面只管理所有在當(dāng)前實(shí)例里創(chuàng)建的對(duì)象。而從對(duì)象是被所有對(duì)象所不可見(jiàn)的。

因此當(dāng)玩家想要攻擊一個(gè)臨近場(chǎng)景a的其他對(duì)象時(shí),該對(duì)象的主對(duì)象其實(shí)是處于臨近的場(chǎng)景b的實(shí)例里的,而不在玩家當(dāng)前所在的場(chǎng)景a中,所以需要把戰(zhàn)斗系統(tǒng)拆開(kāi),把所有戰(zhàn)斗拆成一對(duì)一的單元操作。

圖16是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的互動(dòng)方法的示意圖。如圖16所示,

例如玩家釋放范圍技能,則該互動(dòng)方法如下:

1.玩家站在場(chǎng)景邊界;

2.玩家需要與技能范圍內(nèi)的所有對(duì)象互動(dòng),例如向所有對(duì)象釋放一個(gè)效果;

3.查找玩家主對(duì)象所在的場(chǎng)景實(shí)例內(nèi),技能范圍里的所有對(duì)象;

4.查找玩家從對(duì)象所在的場(chǎng)景實(shí)例內(nèi),技能范圍里的所有對(duì)象;

5.為每一個(gè)查到的對(duì)象觸發(fā)一條玩家對(duì)對(duì)象的效果協(xié)議,即用于玩家與對(duì)象互動(dòng)的互動(dòng)信息;

6.向上查找每個(gè)對(duì)象所在的實(shí)例進(jìn)程;

7.向每一個(gè)對(duì)象所在的實(shí)例進(jìn)程發(fā)一條玩家對(duì)該對(duì)象的效果協(xié)議;

8.同步狀態(tài)給客戶端。

圖17是根據(jù)本申請(qǐng)其中一示例性實(shí)施例的互動(dòng)方法的示意圖。如圖17所示,

例如玩家對(duì)地圖外的人放技能,則互動(dòng)方法如下所示:

1.玩家站在場(chǎng)景a的邊界;

2.玩家需要對(duì)臨近的場(chǎng)景b中的對(duì)象釋放一個(gè)技能效果;

3.查找該目標(biāo)對(duì)象所在的服務(wù)器進(jìn)程;

4.向目標(biāo)對(duì)象所在的進(jìn)程發(fā)一條玩家對(duì)對(duì)象的效果協(xié)議;

5.同步狀態(tài)給客戶端。

玩家范圍技能僅僅是玩家與對(duì)象互動(dòng)的其中一種形式,玩家也可以以其他的形式與對(duì)象互動(dòng),例如可以與對(duì)象互相發(fā)送信息。同步狀態(tài)即將玩家與對(duì)象的互動(dòng)的結(jié)果作為反饋信息返回到客戶端,使得玩家能夠通過(guò)客戶端觀察到例如釋放技能等的與對(duì)象互動(dòng)的結(jié)果。只要與互動(dòng)有關(guān)的信息跨越了場(chǎng)景,互動(dòng)均可以通過(guò)上述方式實(shí)現(xiàn)。

本發(fā)明的客戶端多場(chǎng)景地塊(區(qū)塊)管理,動(dòng)態(tài)控制場(chǎng)景地塊的加載,一方面實(shí)現(xiàn)了真正的客戶端平滑加載多場(chǎng)景,實(shí)現(xiàn)客戶端的無(wú)縫對(duì)接,同時(shí)也降低了手機(jī)的內(nèi)存消耗;另一方面,美術(shù)可以同時(shí)制作多個(gè)場(chǎng)景,提高了美術(shù)的制作效率。對(duì)場(chǎng)景編輯器的改良也大大促進(jìn)了美術(shù)對(duì)于鄰接場(chǎng)景邊緣制作的效率。

而通過(guò)服務(wù)端的統(tǒng)一框架管理,當(dāng)玩家處于一張地圖(場(chǎng)景)邊界時(shí),可通過(guò)從對(duì)象去觀察臨近本地圖的臨近的地圖的人或事物,當(dāng)玩家從一張地圖跨越到另一張地圖時(shí),通過(guò)顛倒主從能做到無(wú)縫切換,對(duì)于玩家端來(lái)說(shuō)感受不到任何變化,因此做到了無(wú)縫性。

通過(guò)分線機(jī)制,當(dāng)一場(chǎng)景的某條線人數(shù)爆滿時(shí),會(huì)自動(dòng)把后續(xù)玩家分配到人少的那條線,由于不同線可以分布在不同進(jìn)程,因此大大緩解了服務(wù)器壓力。當(dāng)一個(gè)進(jìn)程服務(wù)器出現(xiàn)故障時(shí)所影響的玩家數(shù)量也比之前要少。

通過(guò)戰(zhàn)斗系統(tǒng)的獨(dú)特設(shè)計(jì),能做到即使是跨區(qū)也能戰(zhàn)斗,因此當(dāng)玩家在一個(gè)地圖邊緣向另一張地圖的人放技能時(shí),也能夠輕松處理。真正意義上做到了地圖無(wú)縫。

在本申請(qǐng)的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過(guò)其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元或模塊的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或模塊或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,模塊或單元的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說(shuō)明的單元或模塊可以是或者也可以不是物理上分開(kāi)的,作為單元或模塊顯示的部件可以是或者也可以不是物理單元或模塊,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元或模塊上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元或模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元或模塊可以集成在一個(gè)處理單元或模塊中,也可以是各個(gè)單元或模塊單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元或模塊集成在一個(gè)單元或模塊中。上述集成的單元或模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元或模塊的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤(pán)、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤(pán)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所述僅是本申請(qǐng)的優(yōu)選實(shí)施例,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本申請(qǐng)?jiān)淼那疤嵯拢€可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
和平县| 陆良县| 年辖:市辖区| 日喀则市| 玉溪市| 泗洪县| 黄龙县| 安溪县| 昭通市| 定南县| 额尔古纳市| 阳信县| 阿拉善左旗| 栾城县| 长武县| 孝昌县| 高密市| 黄大仙区| 白银市| 华亭县| 荔浦县| 彭水| 兴宁市| 荥阳市| 金溪县| 临武县| 新乡市| 和龙市| 九江市| 尤溪县| 安溪县| 循化| 淮安市| 清苑县| 昌宁县| 弥勒县| 阿尔山市| 增城市| 荔波县| 徐州市| 南陵县|