本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種游戲場(chǎng)景切換方法、裝置與系統(tǒng)。
背景技術(shù):
MMORPG(Massive Multiplayer Online Role Playing Game)游戲,是一種大型的多人同時(shí)在線的角色扮演類(lèi)游戲。MMORPG中一般具有一個(gè)大尺度、大空間、連續(xù)的虛擬世界,玩家通過(guò)所選擇的角色在該虛擬世界中進(jìn)行互動(dòng),例如在該虛擬世界中進(jìn)行任務(wù)、交流、交易等操作。當(dāng)玩家離開(kāi)游戲之后,該虛擬世界在網(wǎng)絡(luò)游戲運(yùn)營(yíng)商提供的服務(wù)器中繼續(xù)存在,并不斷演進(jìn)。
在游戲的運(yùn)營(yíng)上,MMORPG游戲分為客戶端和服務(wù)器兩部分。玩家從客戶端通過(guò)互聯(lián)網(wǎng)的連接,以登陸服務(wù)器后才能進(jìn)行游戲。而玩家的游戲資料保存在服務(wù)器中。在游戲的過(guò)程中,玩家所扮演的角色和其他玩家所扮演的角色在該虛擬世界的空間中進(jìn)行實(shí)時(shí)互動(dòng)。而NPC(Non Player Character,非客戶端角色)則在游戲中提供特定服務(wù),例如銷(xiāo)售MMORPG游戲系統(tǒng)所提供的虛擬物品、提供任務(wù)等。
由于MMORPG游戲內(nèi)容的不斷豐富,其客戶端的變得越來(lái)越龐大,目前所流行的MMORPG游戲的客戶端大小已經(jīng)達(dá)到了十幾G到幾十G的程度,該客戶端中保存了MMORPG游戲中虛擬世界的所有場(chǎng)景、各種人物、建筑、地形等虛擬世界中的模型,玩家登錄游戲時(shí),客戶端與服務(wù)器進(jìn)行連接通信以讀取玩家的角色信息,計(jì)算機(jī)從硬盤(pán)存儲(chǔ)的客戶端中將客戶端角色所在的場(chǎng)景以及角色在游戲中當(dāng)前位置處所需要的各種模型讀取到內(nèi)存中,進(jìn)而通過(guò)顯示器呈現(xiàn)在玩家眼前,同時(shí),客戶端通過(guò)服務(wù)器的通信以將客戶端角色所在位置附近的其他客戶端角色信息并呈現(xiàn)于玩家眼前,進(jìn)而實(shí)現(xiàn)玩家在游戲中的各種活動(dòng)。當(dāng)客戶端角色在虛擬世界中移動(dòng)時(shí),客戶端與服務(wù)器之間通過(guò)通信以將客戶端角色在虛擬世界中的位置信息告知服務(wù)器,同時(shí)計(jì)算機(jī)也不斷地隨著客戶端角色的移動(dòng)而改變相應(yīng)的場(chǎng)景圖像。當(dāng)進(jìn)行場(chǎng)景切換或者游戲中人物較多或者場(chǎng)景較為復(fù)雜時(shí),計(jì)算機(jī)在內(nèi)存和硬盤(pán)之間不斷的進(jìn)行數(shù)據(jù)的讀取操作以應(yīng)對(duì)不斷變化的場(chǎng)景環(huán)境。在進(jìn)行場(chǎng)景切換時(shí),為了減小對(duì)內(nèi)存加載量,保證玩家在游戲過(guò)程的流暢度,現(xiàn)有的做法是在將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)從內(nèi)存中釋放掉,再將目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)重新加載到內(nèi)存中以創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)在進(jìn)行場(chǎng)景切換時(shí),并沒(méi)有考慮場(chǎng)景切換屬于相位場(chǎng)景的情況。所謂相位場(chǎng)景是指利用相同的游戲地圖(相同的場(chǎng)景資源數(shù)據(jù))創(chuàng)建的不同的實(shí)例。在相位場(chǎng)景切換中,玩家實(shí)際上是進(jìn)入了同一個(gè)地圖的另一個(gè)實(shí)例,當(dāng)不同的玩家進(jìn)入相同地圖的不同實(shí)例時(shí),雖然看到的地圖是一樣的,但是相互之間看不見(jiàn),因此可以獲得獨(dú)立的體驗(yàn)游戲。而現(xiàn)有技術(shù)沒(méi)有區(qū)分是否場(chǎng)景切換是否屬于相位場(chǎng)景的切換,統(tǒng)一地將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)從內(nèi)存中釋放掉,再將目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)重新加載到內(nèi)存中,在這個(gè)過(guò)程中實(shí)際上需要耗費(fèi)一定的時(shí)間,場(chǎng)景切換的效率低下,玩家會(huì)感覺(jué)到場(chǎng)景切換造成的卡頓。
為了解決現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明實(shí)施例一方面提供了一種游戲場(chǎng)景切換方法,包括:
當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件時(shí),生成目標(biāo)場(chǎng)景切換信息,并將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中;
將所述目標(biāo)場(chǎng)景切換信息發(fā)送到服務(wù)器,使所述服務(wù)器根據(jù)所述目標(biāo)場(chǎng)景切換信息生成目標(biāo)場(chǎng)景配置文件;所述目標(biāo)場(chǎng)景配置文件包括目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑、場(chǎng)景渲染數(shù)據(jù)以及游戲角色配置信息;
接收所述服務(wù)器返回的所述目標(biāo)場(chǎng)景配置文件,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑判斷所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)是否相同;
當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同時(shí),利用緩存在內(nèi)存中的所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例;
在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例后,根據(jù)所述游戲角色配置信息構(gòu)建在所述目標(biāo)場(chǎng)景中的游戲角色,以完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程。
優(yōu)選地,所述游戲場(chǎng)景切換方法還包括:
在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例之前,對(duì)所述當(dāng)前場(chǎng)景進(jìn)行全屏幕截屏以獲取當(dāng)前場(chǎng)景畫(huà)面;
在開(kāi)始創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例時(shí),在場(chǎng)景層上建立一個(gè)用于遮擋所述場(chǎng)景層的遮擋顯示層;其中,所述場(chǎng)景層用于顯示所述當(dāng)前場(chǎng)景或目標(biāo)場(chǎng)景;所述遮擋顯示層用于顯示所述當(dāng)前場(chǎng)景畫(huà)面;
在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,隱藏所述遮擋顯示層。
優(yōu)選地,所述遮擋顯示層用于通過(guò)Cocos2dx里的Ripple3D網(wǎng)格動(dòng)畫(huà)顯示所述當(dāng)前場(chǎng)景畫(huà)面。
優(yōu)選地,在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,隱藏所述遮擋顯示層,具體為:
在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,通過(guò)漸隱的方式將所述遮擋顯示層逐漸隱藏起來(lái)。
優(yōu)選地,所述場(chǎng)景渲染數(shù)據(jù)包括以下至少之一:光照效果參數(shù)、霧效果參數(shù)以及攝像機(jī)參數(shù)。
優(yōu)選地,所述游戲角色配置信息包括以下至少之一:需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色的角色模型ID、角色位置以及角色朝向。
優(yōu)選地,所述需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色包括以下至少之一:客戶端角色、隊(duì)友角色、NPC角色以及怪物角色。
優(yōu)選地,所述游戲場(chǎng)景切換方法還包括:
當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)不相同時(shí),將所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)從內(nèi)存中釋放,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑將所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)加載到內(nèi)存中,以及根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例。
相應(yīng)地,本發(fā)明實(shí)施例還提供了一種游戲場(chǎng)景切換裝置,包括:
切換信息生成模塊,用于當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件時(shí),生成目標(biāo)場(chǎng)景切換信息,并將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中;
切換信息發(fā)送模塊,用于將所述目標(biāo)場(chǎng)景切換信息發(fā)送到服務(wù)器,使所述服務(wù)器根據(jù)所述目標(biāo)場(chǎng)景切換信息生成目標(biāo)場(chǎng)景配置文件;所述目標(biāo)場(chǎng)景配置文件包括目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑、場(chǎng)景渲染數(shù)據(jù)以及游戲角色配置信息;
配置文件接收模塊,用于接收所述服務(wù)器返回的所述目標(biāo)場(chǎng)景配置文件,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑判斷所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)是否相同;
場(chǎng)景實(shí)例創(chuàng)建模塊,用于當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同時(shí),利用緩存在內(nèi)存中的所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例;
角色構(gòu)建模塊,用于在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例后,根據(jù)所述游戲角色配置信息構(gòu)建在所述目標(biāo)場(chǎng)景中的游戲角色,以完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程。
優(yōu)選地,所述游戲場(chǎng)景切換裝置還包括:
截屏模塊,用于在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例之前,對(duì)所述當(dāng)前場(chǎng)景進(jìn)行全屏幕截屏以獲取當(dāng)前場(chǎng)景畫(huà)面;
遮擋顯示層創(chuàng)建模塊,用于在開(kāi)始創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例時(shí),在場(chǎng)景層上建立一個(gè)用于遮擋所述場(chǎng)景層的遮擋顯示層;其中,所述場(chǎng)景層用于顯示所述當(dāng)前場(chǎng)景或目標(biāo)場(chǎng)景;所述遮擋顯示層用于顯示所述當(dāng)前場(chǎng)景畫(huà)面;
遮擋顯示層隱藏模塊,用于在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,隱藏所述遮擋顯示層。
優(yōu)選地,所述遮擋顯示層用于通過(guò)Cocos2dx里的Ripple3D網(wǎng)格動(dòng)畫(huà)顯示所述當(dāng)前場(chǎng)景畫(huà)面。
優(yōu)選地,所述遮擋顯示層隱藏模塊具體用于:在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,通過(guò)漸隱的方式將所述遮擋顯示層逐漸隱藏起來(lái)。
優(yōu)選地,所述場(chǎng)景渲染數(shù)據(jù)包括以下至少之一:光照效果參數(shù)、霧效果參數(shù)以及攝像機(jī)參數(shù)。
優(yōu)選地,所述游戲角色配置信息包括以下至少之一:需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色的角色模型ID、角色位置以及角色朝向。
優(yōu)選地,所述需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色包括以下至少之一:客戶端角色、隊(duì)友角色、NPC角色以及怪物角色。
優(yōu)選地,所述場(chǎng)景實(shí)例創(chuàng)建模塊還用于:當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)不相同時(shí),將所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)從內(nèi)存中釋放,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑將所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)加載到內(nèi)存中,以及根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:本發(fā)明實(shí)施例提供了一種游戲場(chǎng)景切換方法與裝置,方法包括當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件時(shí),生成目標(biāo)場(chǎng)景切換信息,并將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中;將所述目標(biāo)場(chǎng)景切換信息發(fā)送到服務(wù)器,使所述服務(wù)器根據(jù)所述目標(biāo)場(chǎng)景切換信息生成目標(biāo)場(chǎng)景配置文件;接收所述服務(wù)器返回的所述目標(biāo)場(chǎng)景配置文件,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑判斷所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)是否相同;當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同時(shí),利用緩存在內(nèi)存中的所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例;在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例后,根據(jù)所述游戲角色配置信息構(gòu)建在所述目標(biāo)場(chǎng)景中的游戲角色,以完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程。本發(fā)明利用緩存在內(nèi)存中的當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建目標(biāo)場(chǎng)景的實(shí)例,通過(guò)復(fù)用場(chǎng)景資源數(shù)據(jù),極大的減少了場(chǎng)景加載時(shí)間,流暢的完成場(chǎng)景切換,使玩家不會(huì)在場(chǎng)景切換的過(guò)程中感覺(jué)到卡頓。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的游戲場(chǎng)景切換方法的流程示意圖;
圖2是本發(fā)明實(shí)施例提供的游戲場(chǎng)景切換裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參見(jiàn)圖1,是本發(fā)明實(shí)施例提供的游戲場(chǎng)景切換方法的流程示意圖,該方法包括以下步驟:
S101,當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件時(shí),生成目標(biāo)場(chǎng)景切換信息,并將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中;
S102,將所述目標(biāo)場(chǎng)景切換信息發(fā)送到服務(wù)器,使所述服務(wù)器根據(jù)所述目標(biāo)場(chǎng)景切換信息生成目標(biāo)場(chǎng)景配置文件;所述目標(biāo)場(chǎng)景配置文件包括目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑、場(chǎng)景渲染數(shù)據(jù)以及游戲角色配置信息;
S103,接收所述服務(wù)器返回的所述目標(biāo)場(chǎng)景配置文件,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑判斷所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)是否相同;
S104,當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同時(shí),利用緩存在內(nèi)存中的所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例;
S105,在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例后,根據(jù)所述游戲角色配置信息構(gòu)建在所述目標(biāo)場(chǎng)景中的游戲角色,以完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程。
其中,所述場(chǎng)景資源數(shù)據(jù)具體為游戲地圖中的景物組成的元素,例如山、水、地形等;所述場(chǎng)景渲染數(shù)據(jù)包括以下至少之一:光照效果參數(shù)、霧效果參數(shù)以及攝像機(jī)參數(shù)。對(duì)于相位場(chǎng)景的不同實(shí)例,雖然場(chǎng)景資源數(shù)據(jù)相同,但具體的場(chǎng)景渲染數(shù)據(jù)有可能不同。需要說(shuō)明的是,當(dāng)前場(chǎng)景與目標(biāo)場(chǎng)景在場(chǎng)景切換的概念是,目標(biāo)場(chǎng)景是當(dāng)前場(chǎng)景需要切換到的場(chǎng)景,而當(dāng)切換至目標(biāo)場(chǎng)景時(shí),目標(biāo)場(chǎng)景也成為了新的當(dāng)前場(chǎng)景,這是本領(lǐng)域技術(shù)人員很容易理解的。
玩家通過(guò)游戲客戶端登錄進(jìn)入游戲中,選擇一個(gè)客戶端角色進(jìn)行游戲體驗(yàn)。所述客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件是指,在游戲過(guò)程中,客戶端角色通過(guò)輸入設(shè)備(如鼠標(biāo)雙擊、單擊、鍵盤(pán)操作)或其它跟客戶端角色有關(guān)的時(shí)間、位置觸發(fā)相關(guān)事件,具體地,當(dāng)客戶端角色從非玩家控制角色NPC領(lǐng)取任務(wù)時(shí)觸發(fā)的任務(wù)領(lǐng)取事件,或者當(dāng)客戶端角色完成NPC分發(fā)的任務(wù)時(shí),觸發(fā)的任務(wù)完成事件。
在本實(shí)施例中,當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件,即需要進(jìn)行場(chǎng)景切換時(shí),先把當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中而不是馬上釋放掉;當(dāng)判斷場(chǎng)景切換操作屬于相位場(chǎng)景切換(目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同)時(shí),利用緩存在內(nèi)存中的當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建目標(biāo)場(chǎng)景的實(shí)例,通過(guò)復(fù)用場(chǎng)景資源數(shù)據(jù),極大的減少了場(chǎng)景加載時(shí)間,流暢的完成場(chǎng)景切換,使玩家不會(huì)在場(chǎng)景切換的過(guò)程中感覺(jué)到卡頓。
更優(yōu)選地,所述游戲場(chǎng)景切換方法還包括:
在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例之前,對(duì)所述當(dāng)前場(chǎng)景進(jìn)行全屏幕截屏以獲取當(dāng)前場(chǎng)景畫(huà)面;
在開(kāi)始創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例時(shí),在場(chǎng)景層上建立一個(gè)用于遮擋所述場(chǎng)景層的遮擋顯示層;其中,所述場(chǎng)景層用于顯示所述當(dāng)前場(chǎng)景或目標(biāo)場(chǎng)景;所述遮擋顯示層用于顯示所述當(dāng)前場(chǎng)景畫(huà)面;
在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,隱藏所述遮擋顯示層。
為了讓場(chǎng)景的過(guò)渡更加自然,本發(fā)明實(shí)施例在切換過(guò)程中增加了一個(gè)過(guò)渡效果。具體地,玩家在場(chǎng)景切換過(guò)程期間看到的是遮擋顯示層所顯示的當(dāng)前場(chǎng)景畫(huà)面,當(dāng)場(chǎng)景切換的過(guò)程結(jié)束前,將述遮擋顯示層隱藏起來(lái),將場(chǎng)景層顯示出來(lái),從而更加自然地將當(dāng)前場(chǎng)景過(guò)渡到目標(biāo)場(chǎng)景。其中,在場(chǎng)景層上建立一個(gè)用于遮擋所述場(chǎng)景層的遮擋顯示層通過(guò)Cocos2dx里的Sprite實(shí)現(xiàn)。
更優(yōu)選地,在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,隱藏所述遮擋顯示層,具體為:在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,通過(guò)漸隱的方式將所述遮擋顯示層逐漸隱藏起來(lái)。
更優(yōu)選地,所述遮擋顯示層用于通過(guò)Cocos2dx里的Ripple3D網(wǎng)格動(dòng)畫(huà)顯示所述當(dāng)前場(chǎng)景畫(huà)面。通過(guò)這種方式,所述遮擋顯示層顯示的當(dāng)前場(chǎng)景畫(huà)面不是靜態(tài)的,而是帶有動(dòng)畫(huà)效果(例如水紋效果),使得過(guò)渡效果更加生動(dòng)自然。
在本發(fā)明實(shí)施例中,所述游戲角色配置信息包括以下至少之一:需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色的角色模型ID、角色位置以及角色朝向。所述需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色包括以下至少之一:客戶端角色、隊(duì)友角色、NPC角色以及怪物角色。
例如,在組隊(duì)任務(wù)中,在場(chǎng)景切換之前,先記錄下所有隊(duì)員的位置,模型朝向等信息,然后在場(chǎng)景切換過(guò)程中根據(jù)之前記錄下的信息,設(shè)置隊(duì)員的位置,模型朝向。
更優(yōu)選地,所述游戲場(chǎng)景切換方法還包括:
當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)不相同時(shí),根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑將所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)加載到內(nèi)存中,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例。
以下以組隊(duì)?wèi)?zhàn)斗任務(wù)為例說(shuō)明本發(fā)明的實(shí)現(xiàn)過(guò)程:在組隊(duì)?wèi)?zhàn)斗任務(wù)中,隊(duì)長(zhǎng)與當(dāng)前場(chǎng)景中的某一NPC或怪物對(duì)話,滿足場(chǎng)景切換觸發(fā)條件,隊(duì)伍中的各個(gè)客戶端分別緩存當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù);服務(wù)器將目標(biāo)場(chǎng)景配置文件發(fā)送給各個(gè)客戶端;由于戰(zhàn)斗任務(wù)采用相同的地圖場(chǎng)景,因此客戶端可以利用緩存在內(nèi)存中的當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)去創(chuàng)建目標(biāo)場(chǎng)景的實(shí)例,并構(gòu)建目標(biāo)場(chǎng)景中的角色模型(包括客戶端角色、隊(duì)友角色以及怪物角色等)。通過(guò)復(fù)用場(chǎng)景資源數(shù)據(jù),整個(gè)場(chǎng)景切換過(guò)程自然流暢,用戶不會(huì)感覺(jué)到任何的卡頓。
相應(yīng)地,本發(fā)明實(shí)施例還提供一種游戲場(chǎng)景切換裝置。如圖2所示,其是本發(fā)明實(shí)施例提供的游戲場(chǎng)景切換裝置的結(jié)構(gòu)框圖,包括:
切換信息生成模塊101,用于當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件時(shí),生成目標(biāo)場(chǎng)景切換信息,并將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中;
切換信息發(fā)送模塊102,用于將所述目標(biāo)場(chǎng)景切換信息發(fā)送到服務(wù)器,使所述服務(wù)器根據(jù)所述目標(biāo)場(chǎng)景切換信息生成目標(biāo)場(chǎng)景配置文件;所述目標(biāo)場(chǎng)景配置文件包括目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑、場(chǎng)景渲染數(shù)據(jù)以及游戲角色配置信息;
配置文件接收模塊103,用于接收所述服務(wù)器返回的所述目標(biāo)場(chǎng)景配置文件,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑判斷所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)是否相同;
場(chǎng)景實(shí)例創(chuàng)建模塊104,用于當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同時(shí),利用緩存在內(nèi)存中的所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例;
角色構(gòu)建模塊105,用于在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例后,根據(jù)所述游戲角色配置信息構(gòu)建在所述目標(biāo)場(chǎng)景中的游戲角色,以完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程。
更優(yōu)選地,所述游戲場(chǎng)景切換裝置還包括:
截屏模塊,用于在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例之前,對(duì)所述當(dāng)前場(chǎng)景進(jìn)行全屏幕截屏以獲取當(dāng)前場(chǎng)景畫(huà)面;
遮擋顯示層創(chuàng)建模塊,用于在開(kāi)始創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例時(shí),在場(chǎng)景層上建立一個(gè)用于遮擋所述場(chǎng)景層的遮擋顯示層;其中,所述場(chǎng)景層用于顯示所述當(dāng)前場(chǎng)景或目標(biāo)場(chǎng)景;所述遮擋顯示層用于顯示所述當(dāng)前場(chǎng)景畫(huà)面;
遮擋顯示層隱藏模塊,用于在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,隱藏所述遮擋顯示層。
更優(yōu)選地,所述遮擋顯示層用于通過(guò)Cocos2dx里的Ripple3D網(wǎng)格動(dòng)畫(huà)顯示所述當(dāng)前場(chǎng)景畫(huà)面。
更優(yōu)選地,所述遮擋顯示層隱藏模塊具體用于:在完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程之前,通過(guò)漸隱的方式將所述遮擋顯示層逐漸隱藏起來(lái)。
更優(yōu)選地,所述場(chǎng)景渲染數(shù)據(jù)包括以下至少之一:光照效果參數(shù)、霧效果參數(shù)以及攝像機(jī)參數(shù)。
更優(yōu)選地,所述游戲角色配置信息包括以下至少之一:需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色的角色模型ID、角色位置以及角色朝向。
更優(yōu)選地,所述需要在所述目標(biāo)場(chǎng)景中創(chuàng)建的角色包括以下至少之一:客戶端角色、隊(duì)友角色、NPC角色以及怪物角色。
更優(yōu)選地,所述場(chǎng)景實(shí)例創(chuàng)建模塊104還用于:當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)不相同時(shí),將所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)從內(nèi)存中釋放,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑將所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)加載到內(nèi)存中,以及根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例。
需要說(shuō)明的是,本發(fā)明實(shí)施例提供的游戲場(chǎng)景切換裝置用于實(shí)施上述游戲場(chǎng)景切換方法的所有方法步驟,其工作原理與有益效果一一對(duì)應(yīng),因而不再贅述。
相比于現(xiàn)有技術(shù),本發(fā)明實(shí)施例的有益效果在于:本發(fā)明實(shí)施例提供了一種游戲場(chǎng)景切換方法與裝置,方法包括當(dāng)客戶端滿足預(yù)設(shè)的場(chǎng)景切換觸發(fā)條件時(shí),生成目標(biāo)場(chǎng)景切換信息,并將當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)緩存在內(nèi)存中;將所述目標(biāo)場(chǎng)景切換信息發(fā)送到服務(wù)器,使所述服務(wù)器根據(jù)所述目標(biāo)場(chǎng)景切換信息生成目標(biāo)場(chǎng)景配置文件;接收所述服務(wù)器返回的所述目標(biāo)場(chǎng)景配置文件,并根據(jù)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)的存儲(chǔ)路徑判斷所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)是否相同;當(dāng)所述目標(biāo)場(chǎng)景的場(chǎng)景資源數(shù)據(jù)與所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)相同時(shí),利用緩存在內(nèi)存中的所述當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及所述目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例;在創(chuàng)建所述目標(biāo)場(chǎng)景的實(shí)例后,根據(jù)所述游戲角色配置信息構(gòu)建在所述目標(biāo)場(chǎng)景中的游戲角色,以完成從所述當(dāng)前場(chǎng)景到所述目標(biāo)場(chǎng)景的切換過(guò)程。本發(fā)明利用緩存在內(nèi)存中的當(dāng)前場(chǎng)景的場(chǎng)景資源數(shù)據(jù)以及目標(biāo)場(chǎng)景的場(chǎng)景渲染數(shù)據(jù)創(chuàng)建目標(biāo)場(chǎng)景的實(shí)例,通過(guò)復(fù)用場(chǎng)景資源數(shù)據(jù),極大的減少了場(chǎng)景加載時(shí)間,流暢的完成場(chǎng)景切換,使玩家不會(huì)在場(chǎng)景切換的過(guò)程中感覺(jué)到卡頓。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍。