亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種游戲系統(tǒng)及游戲處理方法與流程

文檔序號(hào):11117184閱讀:567來(lái)源:國(guó)知局
一種游戲系統(tǒng)及游戲處理方法與制造工藝

本發(fā)明涉及游戲數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種游戲系統(tǒng)及游戲處理方法。



背景技術(shù):

為實(shí)現(xiàn)游戲數(shù)據(jù)的高效處理,游戲服務(wù)器一般采用多線程異步處理游戲數(shù)據(jù)。

目前采用多線程異步處理游戲數(shù)據(jù),一般需要設(shè)置回調(diào)函數(shù),且一個(gè)異步需要編寫(xiě)一個(gè)對(duì)應(yīng)的回調(diào)函數(shù),來(lái)幫助游戲數(shù)據(jù)的異步處理,而隨著異步次數(shù)的增加,所要編寫(xiě)的回調(diào)函數(shù)就越多,異步實(shí)現(xiàn)就越復(fù)雜;因此如何簡(jiǎn)化游戲數(shù)據(jù)的異步處理方式,成為了本領(lǐng)域技術(shù)人員需要考慮的問(wèn)題。



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

有鑒于此,本發(fā)明實(shí)施例提供一種游戲系統(tǒng)、游戲處理方法及游戲服務(wù)器,以簡(jiǎn)化游戲數(shù)據(jù)的異步處理方式。

為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:

一種游戲系統(tǒng),包括:主協(xié)程與至少一個(gè)邏輯協(xié)程,所述主協(xié)程維護(hù)有至少一個(gè)游戲房間,且一個(gè)游戲房間對(duì)應(yīng)一個(gè)邏輯協(xié)程;

所述邏輯協(xié)程用于,在執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;其中,一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)協(xié)程存儲(chǔ)區(qū)域,不同的邏輯協(xié)程對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域不同;及在掛起狀態(tài)下受所述主協(xié)程的拉起,從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文;并從所述共享存儲(chǔ)區(qū)域中讀取所述異步消息,根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯;

所述主協(xié)程用于,在從邏輯協(xié)程切換回所述主協(xié)程后,確定所述邏輯協(xié)程相應(yīng)的異步消息,將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;其中,主協(xié)程與一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)共享存儲(chǔ)區(qū)域,各邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域不同。

本發(fā)明實(shí)施例還提供一種游戲處理方法,應(yīng)用于邏輯協(xié)程,所述方法包括:

在執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回主協(xié)程并掛起所述邏輯協(xié)程;其中,一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)協(xié)程存儲(chǔ)區(qū)域,不同的邏輯協(xié)程對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域不同;

受所述主協(xié)程的拉起,從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文;并從所述主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域中,讀取所述主協(xié)程寫(xiě)入的與所述邏輯協(xié)程相應(yīng)的異步消息,根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯;其中,主協(xié)程與一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)共享存儲(chǔ)區(qū)域,各邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域不同。

本發(fā)明實(shí)施例還提供一種游戲處理方法,應(yīng)用于主協(xié)程,所述方法包括:

在從邏輯協(xié)程切換回所述主協(xié)程后,確定所述邏輯協(xié)程相應(yīng)的異步消息;

將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;其中主協(xié)程與一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)共享存儲(chǔ)區(qū)域,各邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域不同。

基于上述技術(shù)方案,本發(fā)明實(shí)施例在每次進(jìn)行異步時(shí),邏輯協(xié)程均可將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程,進(jìn)而等待主協(xié)程的拉起;無(wú)論異步如何復(fù)雜,本發(fā)明實(shí)施例均可通過(guò)同步化的思想達(dá)成異步的實(shí)現(xiàn)(即異步時(shí),邏輯協(xié)程將異步上下文保存并掛起自身,同時(shí)切回主協(xié)程,由主協(xié)程處理數(shù)據(jù),直至主協(xié)程拉起邏輯協(xié)程),本發(fā)明實(shí)施例提供的游戲處理方法降低了異步實(shí)現(xiàn)的復(fù)雜度,簡(jiǎn)化了游戲數(shù)據(jù)的異步處理方式。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的游戲系統(tǒng)的結(jié)構(gòu)示意圖;

圖2為本發(fā)明實(shí)施例提供的游戲處理方法的信令流程圖;

圖3為本發(fā)明實(shí)施例提供的游戲處理方法的另一信令流程;

圖4為本發(fā)明實(shí)施例提供的游戲處理方法的流程圖;

圖5為協(xié)程存儲(chǔ)區(qū)域的設(shè)置示意圖;

圖6為本發(fā)明實(shí)施例提供的游戲處理方法的另一流程圖;

圖7為本發(fā)明實(shí)施例提供的應(yīng)用例的示意圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

圖1為本發(fā)明實(shí)施例提供的游戲系統(tǒng)的結(jié)構(gòu)示意圖,基于圖1所示游戲系統(tǒng)對(duì)游戲數(shù)據(jù)進(jìn)行異步處理,可降低異步實(shí)現(xiàn)的復(fù)雜度,達(dá)到簡(jiǎn)化游戲數(shù)據(jù)的異步處理方式的目的;該游戲系統(tǒng)可以應(yīng)用于游戲服務(wù)側(cè),如應(yīng)用在游戲的房間服務(wù)器中;參照?qǐng)D1,該游戲系統(tǒng)可以包括:主協(xié)程10和至少一個(gè)邏輯協(xié)程20;

協(xié)程是一種用戶級(jí)的輕量級(jí)線程,各協(xié)程均擁有自己的寄存器上下文和棧;在本發(fā)明實(shí)施例中,協(xié)程調(diào)度切換時(shí),被切換的協(xié)程的寄存器上下文和棧將進(jìn)行保存,且在該協(xié)程切回時(shí),恢復(fù)先前保存的寄存器上下文和棧;

在本發(fā)明實(shí)施例中,主協(xié)程可維護(hù)有至少一個(gè)游戲房間(游戲房間可以認(rèn)為是網(wǎng)絡(luò)側(cè)設(shè)置的用來(lái)供游戲游戲客戶端加入游戲的虛擬容器),且一個(gè)游戲房間可對(duì)應(yīng)一個(gè)邏輯協(xié)程;即邏輯協(xié)程的數(shù)量可與游戲房間的數(shù)量相應(yīng),并通過(guò)一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)游戲房間的形式,實(shí)現(xiàn)游戲房間的游戲邏輯執(zhí)行;一個(gè)游戲客戶端可以對(duì)應(yīng)至少一個(gè)參與游戲的玩家;

具體的,主協(xié)程可管理游戲服務(wù)側(cè)(如房間服務(wù)器)的游戲房間,如維護(hù)游戲房間的玩法類(lèi)型,房間狀態(tài)等;同時(shí),主協(xié)程可基于游戲客戶端的房間加入請(qǐng)求,將游戲客戶端分配至相應(yīng)的游戲房間中進(jìn)行游戲;

如游戲客戶端可請(qǐng)求所要加入的房間標(biāo)識(shí),主協(xié)程可將游戲客戶端分配至該房間標(biāo)識(shí)相應(yīng)的游戲房間中;游戲客戶端也可在請(qǐng)求加入房間時(shí),指示游戲的玩法類(lèi)型,主協(xié)程可將游戲客戶端分配至該玩法類(lèi)型相應(yīng)的游戲房間中;需要說(shuō)明的是,為游戲客戶端所分配的游戲房間應(yīng)有空閑的可供游戲客戶端加入游戲的游戲位置;

一個(gè)游戲房間均可對(duì)應(yīng)一個(gè)邏輯協(xié)程,邏輯協(xié)程主要負(fù)責(zé)執(zhí)行對(duì)應(yīng)游戲房間的游戲邏輯,使得游戲房間順利的推進(jìn)游戲的進(jìn)行。

基于圖1所示游戲系統(tǒng),圖2示出了本發(fā)明實(shí)施例提供的游戲處理方法的信令流程圖,參照?qǐng)D2,該流程可以包括:

步驟S10、所述邏輯協(xié)程在執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;

游戲設(shè)計(jì)時(shí),可設(shè)計(jì)多個(gè)游戲邏輯,邏輯協(xié)程需要根據(jù)不同游戲階段,以及游戲客戶端的不同操作執(zhí)行不同的游戲邏輯,以使得游戲房間內(nèi)的游戲順利推進(jìn);當(dāng)邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),邏輯協(xié)程觸發(fā)異步,需要將所述邏輯協(xié)程相應(yīng)的異步上下文進(jìn)行保存,并掛起自身,同時(shí)切回主協(xié)程處理;

在本發(fā)明實(shí)施例中,符合預(yù)定異步條件的游戲邏輯可以定義為是,需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯的游戲邏輯;

即邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯時(shí),則認(rèn)定邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件,邏輯協(xié)程觸發(fā)異步;

邏輯協(xié)程相應(yīng)的異步上下文可以包含邏輯協(xié)程異步前(即邏輯協(xié)程觸發(fā)異步時(shí))的函數(shù)調(diào)用堆棧信息及寄存器信息等;

本發(fā)明實(shí)施例可在內(nèi)存中為每個(gè)邏輯協(xié)程定義獨(dú)立的協(xié)程存儲(chǔ)區(qū)域,一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)協(xié)程存儲(chǔ)區(qū)域,不同的邏輯協(xié)程對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域不同;在邏輯協(xié)程觸發(fā)異步時(shí),邏輯協(xié)程可將自身相應(yīng)的異步上下文保存在對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,同時(shí),邏輯協(xié)程將自身掛起并切換回主協(xié)程處理;

邏輯協(xié)程掛起在本發(fā)明實(shí)施例中是邏輯協(xié)程自身掛起自己,邏輯協(xié)程掛起意味著邏輯協(xié)程停止處理游戲房間的游戲邏輯;

邏輯協(xié)程掛起時(shí),切換回主協(xié)程異步處理后續(xù)的操作,同時(shí),邏輯協(xié)程等待主協(xié)程的再次拉起。

步驟S11、主協(xié)程確定所述邏輯協(xié)程相應(yīng)的異步消息;

在從所述邏輯協(xié)程切換回主協(xié)程后,主協(xié)程可確定所述邏輯協(xié)程相應(yīng)的異步消息;同時(shí),主協(xié)程可處理其他游戲房間的游戲事件;

所述邏輯協(xié)程相應(yīng)的異步消息,可以是針對(duì)觸發(fā)邏輯協(xié)程異步的游戲邏輯的響應(yīng)結(jié)果;即異步消息可以是邏輯協(xié)程所執(zhí)行的符合預(yù)定異步條件的游戲邏輯的響應(yīng)結(jié)果;

該響應(yīng)結(jié)果可以是游戲客戶端反饋給主協(xié)程的,也可以是主協(xié)程基于游戲設(shè)計(jì)所確定的。

步驟S12、主協(xié)程將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;

本發(fā)明實(shí)施例除在內(nèi)存中為每個(gè)邏輯協(xié)程設(shè)置協(xié)程存儲(chǔ)區(qū)域,還可在內(nèi)存中為每個(gè)游戲房間設(shè)置共享存儲(chǔ)區(qū)域,一個(gè)游戲房間的共享存儲(chǔ)區(qū)域僅主協(xié)程與該游戲房間的邏輯協(xié)程能夠訪問(wèn);

主協(xié)程在確定掛起狀態(tài)的所述邏輯協(xié)程的異步消息后,可將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程能夠訪問(wèn)的共享存儲(chǔ)區(qū)域(即所述邏輯協(xié)程對(duì)應(yīng)的游戲房間的共享存儲(chǔ)區(qū)域),同時(shí)拉起所述邏輯協(xié)程,使得邏輯協(xié)程終止掛起狀態(tài),繼續(xù)執(zhí)行游戲房間的游戲邏輯。

步驟S13、所述邏輯協(xié)程從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文;

掛起狀態(tài)的所述邏輯協(xié)程受主協(xié)程拉起后,將從所述邏輯協(xié)程對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域中調(diào)取所保存的異步上下文;可選的,所述邏輯協(xié)程的異步上下文可以包含邏輯協(xié)程異步前的函數(shù)調(diào)用堆棧信息及寄存器信息等,邏輯協(xié)程可將調(diào)取的異步前的函數(shù)調(diào)用堆棧信息及寄存器信息等覆蓋到對(duì)應(yīng)的寄存器中,實(shí)現(xiàn)異步上下文的恢復(fù)。

步驟S14、所述邏輯協(xié)程從所述共享存儲(chǔ)區(qū)域中讀取所述異步消息,根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯。

邏輯協(xié)程恢復(fù)異步上下后,可基于從共享存儲(chǔ)區(qū)域中讀取的異步消息,繼續(xù)執(zhí)行游戲邏輯;

可選的,由于異步消息包含有符合預(yù)定異步條件的游戲邏輯的響應(yīng)結(jié)果,因此本發(fā)明實(shí)施例可基于異步消息所包含的響應(yīng)結(jié)果,執(zhí)行下一游戲邏輯。

可選的,所執(zhí)行的下一游戲邏輯,或者下n個(gè)(n為大于1的整數(shù))游戲邏輯也可能符合預(yù)定異步條件,因此可再通過(guò)圖2所示流程進(jìn)行游戲處理,直至游戲房間的游戲結(jié)束。

可選的,在執(zhí)行步驟S10前,主協(xié)程可在檢測(cè)到符合游戲開(kāi)始條件的游戲房間時(shí),拉起所述游戲房間對(duì)應(yīng)的邏輯協(xié)程;從而所述邏輯協(xié)程執(zhí)行對(duì)應(yīng)游戲房間的游戲邏輯;

需要說(shuō)明的是,主協(xié)程將游戲客戶端分配至游戲房間后,如果某一游戲房間符合游戲開(kāi)始條件,則主協(xié)程可拉起該游戲房間對(duì)應(yīng)的邏輯協(xié)程,使得該游戲房間對(duì)應(yīng)的邏輯協(xié)程開(kāi)始工作,執(zhí)行該游戲房間的游戲邏輯,此時(shí)該游戲房間開(kāi)始游戲;

可選的,游戲開(kāi)始條件可以是游戲房間的游戲客戶端數(shù)量達(dá)到游戲開(kāi)始所要求的游戲客戶端數(shù)量,且加入游戲房間的游戲客戶端均已準(zhǔn)備就緒;

或者,游戲開(kāi)始條件可以是游戲房間的游戲客戶端數(shù)量達(dá)到游戲開(kāi)始所要求的游戲客戶端數(shù)量,且游戲房間的游戲客戶端數(shù)量達(dá)到游戲開(kāi)始所要求的游戲客戶端數(shù)量的維持時(shí)間超過(guò)預(yù)定計(jì)時(shí)時(shí)間;

或者,游戲開(kāi)始條件可以是游戲房間的游戲客戶端數(shù)量達(dá)到游戲開(kāi)始所要求的游戲客戶端數(shù)量,即本發(fā)明實(shí)施例可以在游戲房間的游戲客戶端數(shù)量達(dá)到游戲開(kāi)始所要求的游戲客戶端數(shù)量時(shí),即時(shí)主動(dòng)的開(kāi)始游戲;

游戲開(kāi)始條件的形式可以是多樣的,具體設(shè)置可以根據(jù)實(shí)際游戲設(shè)計(jì)情況而定。

本發(fā)明實(shí)施例提供的游戲處理方法,如果邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),邏輯協(xié)程將觸發(fā)異步,將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;主協(xié)程在確定所述邏輯協(xié)程相應(yīng)的異步消息后,可將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起所述邏輯協(xié)程;進(jìn)而,邏輯協(xié)程被拉起,可從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文,并從所述共享存儲(chǔ)區(qū)域中讀取所述異步消息,根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯,完成一次異步。

可見(jiàn),本發(fā)明實(shí)施例在每次進(jìn)行異步時(shí),邏輯協(xié)程均可將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程,進(jìn)而等待主協(xié)程的拉起;無(wú)論異步如何復(fù)雜,本發(fā)明實(shí)施例均可通過(guò)同步化的思想達(dá)成異步的實(shí)現(xiàn)(即異步時(shí),邏輯協(xié)程將異步上下文保存并掛起自身,同時(shí)切回主協(xié)程,由主協(xié)程處理數(shù)據(jù),直至主協(xié)程拉起邏輯協(xié)程),本發(fā)明實(shí)施例提供的游戲處理方法降低了異步實(shí)現(xiàn)的復(fù)雜度,簡(jiǎn)化了游戲數(shù)據(jù)的異步處理方式。

可選的,邏輯協(xié)程可在執(zhí)行的當(dāng)前游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯時(shí),確定執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件;相應(yīng)的,邏輯協(xié)程在觸發(fā)異步時(shí),可向需要反饋?lái)憫?yīng)結(jié)果的游戲客戶端發(fā)送響應(yīng)請(qǐng)求,該響應(yīng)請(qǐng)求可發(fā)送給所述游戲客戶端所使用的游戲客戶端;

圖3示出了本發(fā)明實(shí)施例提供的游戲處理方法的另一信令流程,參照?qǐng)D3,該流程可以包括:

步驟S20、主協(xié)程在檢測(cè)到符合游戲開(kāi)始條件的游戲房間時(shí),拉起所述游戲房間對(duì)應(yīng)的邏輯協(xié)程;

步驟S21、所述邏輯協(xié)程執(zhí)行對(duì)應(yīng)游戲房間的游戲邏輯;

步驟S22、所述邏輯協(xié)程在執(zhí)行的當(dāng)前游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯時(shí),向所述游戲客戶端發(fā)送響應(yīng)請(qǐng)求,將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;

當(dāng)邏輯協(xié)程執(zhí)行的游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯時(shí),邏輯協(xié)程觸發(fā)異步,此時(shí),邏輯協(xié)程可向需要反饋?lái)憫?yīng)結(jié)果的游戲客戶端發(fā)送響應(yīng)請(qǐng)求;同時(shí),將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;

以卡牌類(lèi)游戲?yàn)槔?,?zhí)行的游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯如:游戲房間的一個(gè)游戲客戶端打出一撲克牌,需要等待游戲房間內(nèi)的其他游戲客戶端的操作(如其他游戲客戶端打出大于該撲克牌的撲克牌,或者其他游戲客戶端不出牌),來(lái)判斷打出紅桃5的游戲客戶端是否可繼續(xù)出牌;

可選的,邏輯協(xié)程在觸發(fā)異步時(shí),可調(diào)用協(xié)程的系統(tǒng)API(應(yīng)用程序編程接口)所提供的協(xié)程切換接口,將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,并切換回所述主協(xié)程,且掛起邏輯協(xié)程自身。

步驟S23、主協(xié)程確定所述邏輯協(xié)程相應(yīng)的異步消息;

可選的,邏輯協(xié)程在向游戲客戶端發(fā)送響應(yīng)請(qǐng)求后,所述游戲客戶端可向主協(xié)程反饋針對(duì)所述響應(yīng)請(qǐng)求的響應(yīng)結(jié)果,主協(xié)程接收到所述響應(yīng)結(jié)果后,可將所述響應(yīng)結(jié)果作為異步消息;

可選的,邏輯協(xié)程在向游戲客戶端發(fā)送響應(yīng)請(qǐng)求后,為防止游戲客戶端長(zhǎng)時(shí)間未操作導(dǎo)致游戲等待時(shí)間過(guò)長(zhǎng),主協(xié)程可在邏輯協(xié)程向游戲客戶端發(fā)送響應(yīng)請(qǐng)求,并切回主協(xié)程后,記錄響應(yīng)請(qǐng)求的已發(fā)送時(shí)間;如果主協(xié)程判斷所述響應(yīng)請(qǐng)求的已發(fā)送時(shí)間超過(guò)預(yù)定超時(shí)時(shí)間,則可確定所述響應(yīng)請(qǐng)求響應(yīng)超時(shí),從而將響應(yīng)超時(shí)對(duì)應(yīng)的響應(yīng)結(jié)果作為異步消息;可選的,響應(yīng)超時(shí)對(duì)應(yīng)的響應(yīng)結(jié)果一般可在游戲設(shè)計(jì)時(shí)定義;

可選的,在從所述邏輯協(xié)程切換回主協(xié)程后,主協(xié)程可處理其他游戲房間的游戲事件,如獲取其他游戲客戶端加入其它游戲房間的游戲房間加入請(qǐng)求,將其他游戲客戶端分配至其它游戲房間;或,將其他游戲房間的邏輯協(xié)程相應(yīng)的異步消息,寫(xiě)入所述其他游戲房間的邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域中,并拉起所述其他游戲房間掛起狀態(tài)的邏輯協(xié)程等。

步驟S24、主協(xié)程將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;

主協(xié)程在將一游戲客戶端分配至一游戲房間時(shí),可記錄該游戲客戶端的游戲客戶端標(biāo)識(shí)與所分配至的游戲房間的房間標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,從而實(shí)現(xiàn)各游戲房間所加入的游戲客戶端的游戲客戶端標(biāo)識(shí)的預(yù)記錄;

如果異步消息為需要反饋?lái)憫?yīng)請(qǐng)求的游戲客戶端所反饋的的響應(yīng)結(jié)果,則異步消息除攜帶所述響應(yīng)結(jié)果外,還可攜帶所述游戲客戶端的游戲客戶端標(biāo)識(shí);從而主協(xié)程可根據(jù)預(yù)記錄的各游戲房間所加入的游戲客戶端的游戲客戶端標(biāo)識(shí),確定所述異步消息攜帶的游戲客戶端標(biāo)識(shí)所對(duì)應(yīng)的游戲房間,而所確定的游戲房間與觸發(fā)異步的所述邏輯協(xié)程相應(yīng);

進(jìn)而,主協(xié)程為各游戲房間分配共享存儲(chǔ)區(qū)域時(shí),可記錄各游戲房間的房間標(biāo)識(shí)與共享存儲(chǔ)區(qū)域的地址(簡(jiǎn)稱(chēng)共享存儲(chǔ)區(qū)域地址)的對(duì)應(yīng)關(guān)系;從而,主協(xié)程在確定所述異步消息攜帶的游戲客戶端標(biāo)識(shí)所對(duì)應(yīng)的游戲房間后,可根據(jù)預(yù)記錄的游戲房間的房間標(biāo)識(shí)與共享存儲(chǔ)區(qū)域地址的對(duì)應(yīng)關(guān)系,在所確定的游戲房間的房間標(biāo)識(shí)相對(duì)應(yīng)的共享存儲(chǔ)區(qū)域地址中寫(xiě)入所述異步消息,實(shí)現(xiàn)將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域中。

步驟S25、所述邏輯協(xié)程從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文;

步驟S26、所述邏輯協(xié)程從所述共享存儲(chǔ)區(qū)域中讀取所述異步消息,根據(jù)所述異步消息對(duì)應(yīng)的響應(yīng)結(jié)果,執(zhí)行下一游戲邏輯。

下面以邏輯協(xié)程的角度,對(duì)本發(fā)明實(shí)施例提供的游戲處理方法進(jìn)行介紹,下文描述的游戲處理方法可與上文信令流程內(nèi)容相互對(duì)應(yīng)參照。

圖4為本發(fā)明實(shí)施例提供的游戲處理方法的流程圖,該方法可應(yīng)用于邏輯協(xié)程,參照?qǐng)D4,該方法可以包括:

步驟S100、在執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;其中,一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)協(xié)程存儲(chǔ)區(qū)域,不同的邏輯協(xié)程對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域不同;

在本發(fā)明實(shí)施例中,一個(gè)游戲房間對(duì)應(yīng)一個(gè)邏輯協(xié)程;本發(fā)明實(shí)施例可為一個(gè)游戲房間設(shè)置一個(gè)對(duì)應(yīng)的邏輯協(xié)程,通過(guò)邏輯協(xié)程執(zhí)行對(duì)應(yīng)游戲房間的游戲邏輯。

可選的,執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件可以是,執(zhí)行的當(dāng)前游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯;相應(yīng)的,邏輯協(xié)程在觸發(fā)異步時(shí),還可向所述游戲客戶端發(fā)送響應(yīng)請(qǐng)求,以便所述游戲客戶端基于所述響應(yīng)請(qǐng)求反饋?lái)憫?yīng)結(jié)果;

本發(fā)明實(shí)施例可在內(nèi)存中為每個(gè)邏輯協(xié)程設(shè)置獨(dú)立的協(xié)程存儲(chǔ)區(qū)域,圖5示出了協(xié)程存儲(chǔ)區(qū)域的設(shè)置示意圖,可參照;

在邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),邏輯協(xié)程觸發(fā)異步,將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且掛起、停止游戲邏輯的執(zhí)行,并切換回所述主協(xié)程。

步驟S110、受所述主協(xié)程的拉起,從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文;并從所述主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域中,讀取所述主協(xié)程寫(xiě)入的與所述邏輯協(xié)程相應(yīng)的異步消息,根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯。

其中,主協(xié)程與一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)共享存儲(chǔ)區(qū)域,各邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域不同;

在切換回主協(xié)程后,主協(xié)程可確定所述邏輯協(xié)程相應(yīng)的異步消息,并將異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域中,同時(shí),主協(xié)程可拉起掛起狀態(tài)的邏輯協(xié)程;

邏輯協(xié)程被拉起后,可從相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)異步上下文;并且從共享存儲(chǔ)區(qū)域中,讀取主協(xié)程寫(xiě)入的異步消息;

異步消息中可以包含邏輯協(xié)程觸發(fā)異步的游戲邏輯的響應(yīng)結(jié)果,該響應(yīng)結(jié)果可以是所述游戲客戶端反饋的,也可以是主協(xié)程根據(jù)游戲設(shè)計(jì)確定的(如基于響應(yīng)請(qǐng)求的響應(yīng)超時(shí),所確定的響應(yīng)結(jié)果);

相應(yīng)的,邏輯協(xié)程在恢復(fù)異步上下文后,可根據(jù)所述異步消息對(duì)應(yīng)的響應(yīng)結(jié)果,執(zhí)行下一游戲邏輯。

可選的,步驟S100執(zhí)行前,邏輯協(xié)程可在一游戲房間符合游戲開(kāi)始條件時(shí),受主協(xié)程拉起,執(zhí)行所述游戲房間的游戲邏輯。

如果下一游戲邏輯,或下n個(gè)(n為大于1的整數(shù))游戲邏輯符合預(yù)定異步條件,則再次執(zhí)行圖4所示流程步驟S110至步驟S120,直至游戲房間的游戲結(jié)束。

可選的,邏輯協(xié)程在將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程時(shí),可通過(guò)協(xié)程的系統(tǒng)API所提供的協(xié)程切換接口進(jìn)行;具體的,邏輯協(xié)程可調(diào)用協(xié)程的系統(tǒng)API所提供的協(xié)程切換接口,將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程。

下面以主協(xié)程的角度,對(duì)本發(fā)明實(shí)施例提供的游戲處理方法進(jìn)行介紹,下文描述的游戲處理方法可與上文信令流程內(nèi)容相互對(duì)應(yīng)參照。

圖6為本發(fā)明實(shí)施例提供的游戲處理方法的另一流程圖,該方法可應(yīng)用于主協(xié)程,參照?qǐng)D6,該方法可以包括:

步驟S200、在從邏輯協(xié)程切換回所述主協(xié)程后,確定所述邏輯協(xié)程相應(yīng)的異步消息;

步驟S210、將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;其中主協(xié)程與一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)共享存儲(chǔ)區(qū)域,各邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域不同。

當(dāng)被主協(xié)程拉起的邏輯協(xié)程觸發(fā)異步時(shí),所述邏輯協(xié)程掛起并切回所述主協(xié)程;主協(xié)程可確定所述邏輯協(xié)程相應(yīng)的異步消息,同時(shí)處理其他游戲房間的游戲事件;當(dāng)主協(xié)程基于游戲客戶端反饋的響應(yīng)結(jié)果或者響應(yīng)超時(shí),確定針對(duì)觸發(fā)邏輯協(xié)程異步的游戲邏輯的響應(yīng)結(jié)果后,主協(xié)程可將包含所述響應(yīng)結(jié)果的異步消息,寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;

進(jìn)而,邏輯協(xié)程被拉起,異步完成,邏輯協(xié)程可基于恢復(fù)的異步上下文,根據(jù)異步消息包含的響應(yīng)結(jié)果繼續(xù)執(zhí)行下一游戲邏輯。

可選的,步驟S200在執(zhí)行前,主協(xié)程可在檢測(cè)到符合游戲開(kāi)始條件的游戲房間時(shí),拉起所述游戲房間對(duì)應(yīng)的邏輯協(xié)程,以便所述邏輯協(xié)程執(zhí)行所述游戲房間的游戲邏輯;其中,一個(gè)游戲房間對(duì)應(yīng)一個(gè)邏輯協(xié)程;

在本發(fā)明實(shí)施例中,主協(xié)程可負(fù)責(zé)管理游戲房間,并將游戲客戶端分配至游戲房間中進(jìn)行游戲;當(dāng)某一游戲房間符合游戲開(kāi)始條件時(shí),主協(xié)程可拉起該游戲房間的邏輯協(xié)程來(lái)執(zhí)行游戲邏輯。

可選的,邏輯協(xié)程可在執(zhí)行的當(dāng)前游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯時(shí),觸發(fā)異步,此時(shí)邏輯協(xié)程可向所述游戲客戶端發(fā)送響應(yīng)請(qǐng)求;

進(jìn)而,主協(xié)程確定所述邏輯協(xié)程相應(yīng)的異步消息可以是,接收所游戲客戶端針對(duì)響應(yīng)請(qǐng)求的響應(yīng)結(jié)果,將所述響應(yīng)結(jié)果作為異步消息;或,在確定所述響應(yīng)請(qǐng)求響應(yīng)超時(shí)時(shí),將響應(yīng)超時(shí)對(duì)應(yīng)的響應(yīng)結(jié)果作為異步消息。

可選的,如果異步消息為所述游戲客戶端針對(duì)所述響應(yīng)請(qǐng)求的響應(yīng)結(jié)果時(shí),則所述異步消息可攜帶有所述游戲客戶端的游戲客戶端標(biāo)識(shí);主協(xié)程在將一游戲客戶端分配至一游戲房間時(shí),可記錄各游戲房間所加入的游戲客戶端的游戲客戶端標(biāo)識(shí),相應(yīng)的,主協(xié)程可根據(jù)預(yù)記錄的各游戲房間所加入的游戲客戶端的游戲客戶端標(biāo)識(shí),確定所述異步消息攜帶的游戲客戶端標(biāo)識(shí)所對(duì)應(yīng)的游戲房間,所確定的游戲房間與所述邏輯協(xié)程相應(yīng);

進(jìn)而,根據(jù)預(yù)記錄的游戲房間的房間標(biāo)識(shí)與共享存儲(chǔ)區(qū)域地址的對(duì)應(yīng)關(guān)系,在所確定的游戲房間的房間標(biāo)識(shí)相對(duì)應(yīng)的共享存儲(chǔ)區(qū)域地址中寫(xiě)入所述異步消息。

可選的,主協(xié)程在切回時(shí),可處理其他游戲房間的游戲事件,諸如獲取其他游戲客戶端加入其它游戲房間的游戲房間加入請(qǐng)求,將其他游戲客戶端分配至其它游戲房間;或者,將其他游戲房間的邏輯協(xié)程相應(yīng)的異步消息,寫(xiě)入所述其他游戲房間的邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域中,并拉起所述其他游戲房間掛起狀態(tài)的邏輯協(xié)程。

下面對(duì)本發(fā)明實(shí)施例提供的游戲處理方法的應(yīng)用例進(jìn)行介紹;以卡牌游戲?yàn)槔Y(jié)合圖7所示,當(dāng)一游戲房間內(nèi)的游戲客戶端數(shù)量達(dá)到游戲開(kāi)始要求,且游戲房間內(nèi)的游戲客戶端均準(zhǔn)備就緒時(shí),房間服務(wù)器的主協(xié)程拉起該游戲房間的邏輯協(xié)程執(zhí)行游戲邏輯;

該游戲房間的邏輯協(xié)程執(zhí)行游戲邏輯;具體的,在游戲開(kāi)局階段,邏輯協(xié)程可執(zhí)行為游戲客戶端分配卡牌的游戲邏輯,并按照設(shè)定游戲順序,控制游戲客戶端的出牌順序;

當(dāng)游戲房間內(nèi)的游戲客戶端A對(duì)另一游戲客戶端B發(fā)出攻擊類(lèi)卡牌時(shí)(如游戲客戶端A對(duì)游戲客戶端B打出攻擊類(lèi)卡牌“殺”,“殺”卡牌一般需要“閃”卡牌來(lái)抵消傷害),則邏輯協(xié)程需等待游戲客戶端B的響應(yīng)才能判定是游戲客戶端A對(duì)游戲客戶端B造成傷害,還是游戲客戶端B躲過(guò)游戲客戶端A的傷害,即當(dāng)前需要等待游戲客戶端B的響應(yīng)才可繼續(xù)執(zhí)行下一游戲邏輯;此時(shí),邏輯協(xié)程可向游戲客戶端B發(fā)送響應(yīng)請(qǐng)求,等待游戲客戶端B的響應(yīng),并觸發(fā)異步;將異步前的異步上下文保存在該邏輯協(xié)程的協(xié)程存儲(chǔ)區(qū)域中,同時(shí)自身掛起并切回主協(xié)程;

主協(xié)程同時(shí)維護(hù)多個(gè)游戲房間,在從邏輯協(xié)程切回主協(xié)程時(shí),主協(xié)程可同時(shí)處理其他游戲房間的游戲事件,并等待游戲客戶端B反饋的響應(yīng)結(jié)果;

主協(xié)程在收到游戲客戶端B反饋的打出“閃”卡牌的響應(yīng)結(jié)果后,可將該響應(yīng)結(jié)果寫(xiě)入所述邏輯協(xié)程和所述主協(xié)程能夠訪問(wèn)的共享存儲(chǔ)區(qū)域,并拉起所述邏輯協(xié)程;

所述邏輯協(xié)程被拉起后,可調(diào)取保存的異步上下文進(jìn)行恢復(fù),并從所述共享存儲(chǔ)區(qū)域中讀取游戲客戶端B的響應(yīng)結(jié)果;相應(yīng)的,邏輯協(xié)程可根據(jù)游戲客戶端B的響應(yīng)結(jié)果,確定游戲客戶端B打出“閃”卡牌,同時(shí),繼續(xù)游戲邏輯的執(zhí)行;

當(dāng)邏輯協(xié)程檢測(cè)到類(lèi)似的需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯的游戲邏輯時(shí),可重復(fù)上述的異步處理方式,直至游戲房間的游戲結(jié)束;

當(dāng)游戲房間的游戲結(jié)束時(shí),邏輯協(xié)程可掛起并切回主協(xié)程進(jìn)行游戲結(jié)果的結(jié)算,如結(jié)算參與游戲的各游戲客戶端在游戲贏得的分?jǐn)?shù),或輸?shù)舻姆謹(jǐn)?shù);主協(xié)程結(jié)算完游戲結(jié)果后,可拉起所述邏輯協(xié)程,邏輯協(xié)程將游戲房間的游戲數(shù)據(jù)進(jìn)行清除,使得游戲房間為新一局的游戲開(kāi)始作準(zhǔn)備。

本發(fā)明實(shí)施例提供的游戲處理方法能夠降低異步實(shí)現(xiàn)的復(fù)雜度,簡(jiǎn)化游戲數(shù)據(jù)的異步處理方式。

本發(fā)明實(shí)施例還提供一種游戲系統(tǒng),該游戲系統(tǒng)可應(yīng)用于游戲服務(wù)器中,具體的,可應(yīng)用于房間服務(wù)器中;本發(fā)明實(shí)施例提供的游戲系統(tǒng)的結(jié)構(gòu)可如圖1所示,包括:主協(xié)程與至少一個(gè)邏輯協(xié)程,所述主協(xié)程維護(hù)有至少一個(gè)游戲房間,且一個(gè)游戲房間對(duì)應(yīng)一個(gè)邏輯協(xié)程;

其中,所述邏輯協(xié)程用于,在執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件時(shí),將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程;其中,一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)協(xié)程存儲(chǔ)區(qū)域,不同的邏輯協(xié)程對(duì)應(yīng)的協(xié)程存儲(chǔ)區(qū)域不同;及在掛起狀態(tài)下受所述主協(xié)程的拉起,從所述協(xié)程存儲(chǔ)區(qū)域中調(diào)取所述異步上下文,恢復(fù)所述異步上下文;并從所述共享存儲(chǔ)區(qū)域中讀取所述異步消息,根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯;

所述主協(xié)程用于,在從所述邏輯協(xié)程切換回所述主協(xié)程后,確定所述邏輯協(xié)程相應(yīng)的異步消息,將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域,并拉起掛起狀態(tài)的所述邏輯協(xié)程;其中主協(xié)程與一個(gè)邏輯協(xié)程對(duì)應(yīng)一個(gè)共享存儲(chǔ)區(qū)域,各邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域不同。

可選的,所述主協(xié)程還用于,在檢測(cè)到符合游戲開(kāi)始條件的游戲房間時(shí),拉起所述游戲房間對(duì)應(yīng)的邏輯協(xié)程,以便所述邏輯協(xié)程執(zhí)行所述游戲房間的游戲邏輯;

所述邏輯協(xié)程還用于,受所述主協(xié)程的拉起,執(zhí)行對(duì)應(yīng)游戲房間的游戲邏輯。

可選的,所述邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯符合預(yù)定異步條件可以包括:

所述邏輯協(xié)程執(zhí)行的當(dāng)前游戲邏輯需要等待游戲客戶端的響應(yīng)結(jié)果,才可繼續(xù)執(zhí)行下一游戲邏輯;

相應(yīng)的,所述邏輯協(xié)程還用于,向所述游戲客戶端發(fā)送響應(yīng)請(qǐng)求,以便所述游戲客戶端基于所述響應(yīng)請(qǐng)求反饋?lái)憫?yīng)結(jié)果。

可選的,所述主協(xié)程確定所述邏輯協(xié)程相應(yīng)的異步消息可以包括:

接收所述游戲客戶端針對(duì)所述響應(yīng)請(qǐng)求的響應(yīng)結(jié)果,將所述響應(yīng)結(jié)果作為異步消息;

或,所述主協(xié)程在確定所述響應(yīng)請(qǐng)求響應(yīng)超時(shí)時(shí),將響應(yīng)超時(shí)對(duì)應(yīng)的響應(yīng)結(jié)果作為異步消息。

可選的,當(dāng)所述異步消息包括所述游戲客戶端針對(duì)所述響應(yīng)請(qǐng)求的響應(yīng)結(jié)果時(shí),所述異步消息攜帶有所述游戲客戶端的游戲客戶端標(biāo)識(shí);相應(yīng)的,所述主協(xié)程將所述異步消息寫(xiě)入主協(xié)程與所述邏輯協(xié)程的共享存儲(chǔ)區(qū)域可以包括:

所述主協(xié)程根據(jù)預(yù)記錄的各游戲房間所加入的游戲客戶端的游戲客戶端標(biāo)識(shí),確定所述異步消息攜帶的游戲客戶端標(biāo)識(shí)所對(duì)應(yīng)的游戲房間,所確定的游戲房間與所述邏輯協(xié)程相應(yīng);

所述主協(xié)程根據(jù)預(yù)記錄的游戲房間的房間標(biāo)識(shí)與共享存儲(chǔ)區(qū)域地址的對(duì)應(yīng)關(guān)系,在所確定的游戲房間的房間標(biāo)識(shí)相對(duì)應(yīng)的共享存儲(chǔ)區(qū)域地址中寫(xiě)入所述異步消息。

可選的,所述邏輯協(xié)程根據(jù)所述異步消息繼續(xù)執(zhí)行游戲邏輯可以包括:

所述邏輯協(xié)程根據(jù)所述異步消息對(duì)應(yīng)的響應(yīng)結(jié)果,執(zhí)行下一游戲邏輯。

可選的,在從所述邏輯協(xié)程切換回所述主協(xié)程后,所述主協(xié)程還可用于:

獲取其他游戲客戶端加入其它游戲房間的游戲房間加入請(qǐng)求,將其他游戲客戶端分配至其它游戲房間;

或者,將其他游戲房間的邏輯協(xié)程相應(yīng)的異步消息,寫(xiě)入所述其他游戲房間的邏輯協(xié)程對(duì)應(yīng)的共享存儲(chǔ)區(qū)域中,并拉起所述其他游戲房間掛起狀態(tài)的邏輯協(xié)程。

可選的,邏輯協(xié)程將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,且切換回所述主協(xié)程并掛起所述邏輯協(xié)程可以包括:

所述邏輯協(xié)程調(diào)用協(xié)程的系統(tǒng)應(yīng)用程序編程接口所提供的協(xié)程切換接口,將相應(yīng)的異步上下文保存在相應(yīng)的協(xié)程存儲(chǔ)區(qū)域中,同時(shí)切換回所述主協(xié)程并掛起所述邏輯協(xié)程。

可選的,所述邏輯協(xié)程在對(duì)應(yīng)的游戲房間的游戲結(jié)束時(shí),可掛起并切回主協(xié)程進(jìn)行游戲結(jié)果的結(jié)算;主協(xié)程結(jié)算完游戲結(jié)果后,可拉起所述邏輯協(xié)程,所述邏輯協(xié)程可將所述游戲房間的游戲數(shù)據(jù)進(jìn)行清除。

本發(fā)明實(shí)施例能夠簡(jiǎn)化游戲數(shù)據(jù)的異步處理方式,降低異步實(shí)現(xiàn)的復(fù)雜度。

本說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。

對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1