增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)手游技術(shù)領(lǐng)域,具體涉及一種增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,C/S模式的手游網(wǎng)絡(luò)游戲存在以下缺陷:
[0003](1)請(qǐng)參閱圖1,當(dāng)客戶端需要數(shù)據(jù)時(shí),需要向服務(wù)端請(qǐng)求數(shù)據(jù),然后由服務(wù)端判定客戶端合法后再將數(shù)據(jù)發(fā)送至客戶端,則接收到數(shù)據(jù)的客戶端即可對(duì)得到的數(shù)據(jù)進(jìn)行顯示或處理等操作,由此C/S共兩次數(shù)據(jù)包。當(dāng)網(wǎng)絡(luò)環(huán)境較為惡劣時(shí)(例如其它終端占用大量寬帶或者客戶端處于3G模式等),以游戲客戶端需要進(jìn)行金幣的采集為例說明,在向服務(wù)端請(qǐng)求數(shù)據(jù)后,由于網(wǎng)絡(luò)環(huán)境惡劣的原因,客戶端會(huì)一直處于等待服務(wù)端回應(yīng)的狀態(tài),無論用戶怎么操作都沒反應(yīng)。由此這類實(shí)時(shí)性要求不高的操作的邏輯都需要等待服務(wù)端的回應(yīng),不僅影響了游戲的流暢性和穩(wěn)定性,而且會(huì)對(duì)服務(wù)端造成較大的負(fù)擔(dān),同時(shí),頻繁來回的數(shù)據(jù)交互必會(huì)需要較多網(wǎng)絡(luò)流量,造成3G環(huán)境的客戶端的網(wǎng)絡(luò)流量代價(jià)偏高;
[0004](2)只要客戶端和服務(wù)端的連接斷開,玩家就會(huì)立即登出游戲,且客戶端會(huì)提示玩家重新登錄。當(dāng)網(wǎng)絡(luò)環(huán)境較為惡劣時(shí),很容易造成玩家斷線登出游戲,嚴(yán)重時(shí)會(huì)造成玩家頻繁斷線,請(qǐng)參閱圖2,此時(shí)客戶端需要不停地向服務(wù)端重新請(qǐng)求連接,嚴(yán)重的影響了玩家的游戲體驗(yàn);
[0005](3)C/S在數(shù)據(jù)交互期間,如果突然斷線,重連以后,客戶端無法得知?jiǎng)倓偘l(fā)送的一堆數(shù)據(jù)包中,哪些數(shù)據(jù)包已被服務(wù)端接受完整,哪些數(shù)據(jù)包是發(fā)送失敗的。請(qǐng)參閱圖3,如果客戶端連續(xù)發(fā)了A、B、C、D四個(gè)數(shù)據(jù)包,服務(wù)端順序解壓數(shù)據(jù)包,當(dāng)解壓到B數(shù)據(jù)包時(shí),網(wǎng)絡(luò)斷開了,B數(shù)據(jù)包還沒接收完畢,則會(huì)丟失B數(shù)據(jù)包。雖然客戶端已經(jīng)發(fā)送了 4個(gè)數(shù)據(jù)包,但實(shí)際上服務(wù)端只接受到1個(gè)數(shù)據(jù)包,而在客戶端重新與服務(wù)端連接后,是無法得知服務(wù)端成功接收了哪些數(shù)據(jù)包。為解決該問題,現(xiàn)有技術(shù)一般是通過收包反饋,也即,客戶端在每個(gè)數(shù)據(jù)包上打上標(biāo)記,發(fā)送后,服務(wù)端反饋這個(gè)數(shù)據(jù)包是否接收完成,讓客戶端知道某個(gè)數(shù)據(jù)包是收發(fā)完整的。但是,會(huì)導(dǎo)致每個(gè)數(shù)據(jù)包都需要增設(shè)一反饋包,不僅增大了服務(wù)端的負(fù)擔(dān),而且還增大了網(wǎng)絡(luò)流量。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是為了解決上述現(xiàn)有技術(shù)的缺點(diǎn)和不足,提供一種增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法及系統(tǒng),減少客戶端與服務(wù)端之間的交互,減小網(wǎng)絡(luò)環(huán)境對(duì)游戲的影響,降低網(wǎng)絡(luò)流量并增強(qiáng)游戲穩(wěn)定性和流暢性。
[0007]—種增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法,包括以下步驟:
[0008]客戶端獲取并存儲(chǔ)游戲的初始數(shù)據(jù);
[0009]客戶端根據(jù)初始數(shù)據(jù)及操作指令本地處理游戲邏輯,產(chǎn)生操作結(jié)果;
[0010]客戶端將操作結(jié)果反饋至玩家,同時(shí)發(fā)送至服務(wù)端驗(yàn)證;[0011 ]客戶端根據(jù)服務(wù)端的驗(yàn)證反饋判斷是否重載游戲數(shù)據(jù)。
[0012]通過上述技術(shù)方案,使得客戶端在已經(jīng)獲取到游戲初始數(shù)據(jù)的前提下,能夠自己處理可以在本地處理的邏輯,包括計(jì)算收益數(shù)值和定時(shí)獲取的獎(jiǎng)勵(lì),處理戰(zhàn)斗人物行為和計(jì)算戰(zhàn)斗傷害等等,由此實(shí)現(xiàn)了游戲中的很多玩法否是可以由客戶端在本地運(yùn)營(yíng)中實(shí)現(xiàn)的,從而不需要依靠網(wǎng)絡(luò)即可以極快的速度產(chǎn)生結(jié)果并反饋至玩家。由此減少了客戶端與服務(wù)端的交互,在游戲內(nèi)的大部分操作都不會(huì)因?yàn)榫W(wǎng)絡(luò)不通暢而長(zhǎng)時(shí)間等待,游戲邏輯能夠正常地執(zhí)行下去,玩家也不會(huì)應(yīng)為過多或過久的等待而影響游戲體驗(yàn),并有利于節(jié)省了玩家的網(wǎng)絡(luò)流量和減輕了服務(wù)端的負(fù)擔(dān)。同時(shí)將操作結(jié)果發(fā)送至服務(wù)端驗(yàn)證,并使得唯有服務(wù)端驗(yàn)證得到操作結(jié)果非法時(shí)才會(huì)告知客戶端需要重載游戲數(shù)據(jù),由此進(jìn)一步節(jié)省了網(wǎng)絡(luò)流量。因此,相對(duì)于現(xiàn)有技術(shù),本發(fā)明增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法有效地減少了客戶端與服務(wù)端之間的交互,減小網(wǎng)絡(luò)環(huán)境對(duì)游戲的影響,降低網(wǎng)絡(luò)流量并增強(qiáng)游戲穩(wěn)定性和流暢性。
[0013]作為進(jìn)一步改進(jìn),所述步驟客戶端根據(jù)服務(wù)端的驗(yàn)證反饋判斷是否重載數(shù)據(jù),包括:
[0014]當(dāng)客戶端接收不到服務(wù)端的任何反饋時(shí),操作結(jié)果合法,客戶端不重載游戲數(shù)據(jù);
[0015]當(dāng)客戶端接收到服務(wù)端的異常反饋時(shí),操作結(jié)果非法,客戶端重載游戲數(shù)據(jù)。
[0016]由此進(jìn)一步減少了客戶端與服務(wù)端之間的交互,有利于進(jìn)一步降低網(wǎng)絡(luò)流量。
[0017]作為進(jìn)一步改進(jìn),本發(fā)明增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法還包括步驟:
[0018]于客戶端中構(gòu)建邏輯層;
[0019]客戶端啟動(dòng)游戲時(shí)同時(shí)啟動(dòng)邏輯層,并初始化邏輯層中的數(shù)據(jù);
[0020]客戶端通過邏輯層向服務(wù)端請(qǐng)求數(shù)據(jù),如果邏輯層中存在相關(guān)的數(shù)據(jù),則客戶端接收由邏輯層直接返回的數(shù)據(jù);否則,客戶端接收由邏輯層從服務(wù)端中下載得到的相關(guān)數(shù)據(jù)。
[0021]通過邏輯層的構(gòu)建及作用,相當(dāng)于在客戶端中內(nèi)置了一個(gè)小型的服務(wù)端,使邏輯層完成服務(wù)端的部分工作,從而分擔(dān)了服務(wù)端的壓力,同時(shí)避免了網(wǎng)絡(luò)因素對(duì)客戶端請(qǐng)求數(shù)據(jù)響應(yīng)的速度,有利于加快了響應(yīng)速度,進(jìn)一步優(yōu)化通信和降低網(wǎng)絡(luò)流量。
[0022]作為進(jìn)一步改進(jìn),所述邏輯層對(duì)服務(wù)端發(fā)送的數(shù)據(jù)進(jìn)行緩存,并根據(jù)服務(wù)端發(fā)送的新的數(shù)據(jù)更新其自身的本地緩存數(shù)據(jù)。此處有利于保證邏輯層中緩存數(shù)據(jù)的實(shí)時(shí)性和有效性,以進(jìn)一步滿足對(duì)客戶端請(qǐng)求的數(shù)據(jù)的響應(yīng)。
[0023]作為進(jìn)一步改進(jìn),客戶端再次通過邏輯層向服務(wù)端請(qǐng)求數(shù)據(jù)時(shí),邏輯層對(duì)其緩存數(shù)據(jù)進(jìn)行壓縮處理,并將壓縮后的數(shù)據(jù)發(fā)送至服務(wù)端驗(yàn)證;且邏輯層根據(jù)服務(wù)端反饋回來的驗(yàn)證結(jié)果判斷是否將緩存數(shù)據(jù)返回至客戶端。通過邏輯層對(duì)本身的數(shù)據(jù)進(jìn)行壓縮,從而壓縮了客戶端與服務(wù)端之間的通信數(shù)據(jù),由此在較大程度上進(jìn)一步減少了用戶的流量消耗。
[0024]作為進(jìn)一步改進(jìn),所述步驟邏輯層根據(jù)服務(wù)端反饋回來的驗(yàn)證結(jié)果判斷是否將緩存數(shù)據(jù)返回至客戶端具體包括以下步驟:
[0025]如果服務(wù)端返回緩存數(shù)據(jù)非法的驗(yàn)證結(jié)果至邏輯層,則邏輯層根據(jù)服務(wù)端中的數(shù)據(jù)更新緩存數(shù)據(jù);
[0026]如果服務(wù)端返回緩存數(shù)據(jù)合法的驗(yàn)證結(jié)果至邏輯層,則邏輯層將其緩存數(shù)據(jù)返回至客戶端。
[0027]作為進(jìn)一步改進(jìn),本發(fā)明增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法還包括以下步驟:
[0028]邏輯層接收由產(chǎn)生觸發(fā)事件的服務(wù)端所發(fā)送的隨機(jī)因子,并根據(jù)隨機(jī)因子執(zhí)行服務(wù)端所需的運(yùn)算,生成相應(yīng)的任務(wù);
[0029]邏輯層將生成的任務(wù)發(fā)送至客戶端,由客戶端執(zhí)行并響應(yīng)。
[0030]通過邏輯層根據(jù)服務(wù)端中的觸發(fā)事件的隨機(jī)因子生產(chǎn)相應(yīng)的任務(wù)并告知客戶端執(zhí)行響應(yīng),實(shí)現(xiàn)了邏輯層對(duì)服務(wù)端運(yùn)算的分散,進(jìn)一步減輕了服務(wù)端的負(fù)擔(dān)。
[0031]作為進(jìn)一步改進(jìn),邏輯層生成相應(yīng)的任務(wù)后,還通過服務(wù)端對(duì)其生成的任務(wù)進(jìn)行取樣驗(yàn)證。通過此處設(shè)置,有利于確保了邏輯層運(yùn)算的正確性。
[0032]作為進(jìn)一步改進(jìn),本發(fā)明增強(qiáng)網(wǎng)絡(luò)手游游戲穩(wěn)定性的方法還包括以下步驟:
[0033]客戶端將數(shù)據(jù)包發(fā)送至服務(wù)端前,依照先后順序依次對(duì)每個(gè)數(shù)據(jù)包進(jìn)行編號(hào);
[0034]編號(hào)完畢,客戶端發(fā)送數(shù)據(jù)包至服務(wù)端;
[0035]服務(wù)端接收到完整的數(shù)據(jù)包后,保存并更新最后接收到的完整的數(shù)據(jù)包的編號(hào);
[0036]服務(wù)端與客戶端斷線重連,且服務(wù)端還未完全接收到客戶端發(fā)送的所有數(shù)據(jù)包時(shí),服務(wù)端將最后接收到的完整的數(shù)據(jù)包的編號(hào)發(fā)送至客戶端;
[0037]客戶端接根據(jù)服務(wù)端發(fā)送的編號(hào),從編號(hào)為服務(wù)端發(fā)送的編號(hào)+1的數(shù)據(jù)包開始繼續(xù)將未發(fā)送的數(shù)據(jù)包發(fā)送至服務(wù)端。
[0038]通過上述對(duì)數(shù)據(jù)包編號(hào)并在斷線重連時(shí)服務(wù)端將接收到的最后一個(gè)完整的數(shù)據(jù)包的編號(hào)返回至客戶端,使得客戶端能夠清楚知道服務(wù)端從哪個(gè)數(shù)據(jù)包開始就沒有再接收數(shù)據(jù)包,從而不需要重發(fā)一次所有的數(shù)據(jù)包即可實(shí)現(xiàn)對(duì)數(shù)據(jù)包的續(xù)發(fā),也不需要通過反饋包的方式就可以正確地知道接著要向服務(wù)端發(fā)的數(shù)據(jù)包,不僅不會(huì)導(dǎo)致數(shù)據(jù)包的重發(fā)和漏發(fā),而且還進(jìn)一步減少了網(wǎng)絡(luò)流量的耗費(fèi)。
[0039]作為進(jìn)一步改進(jìn),每個(gè)數(shù)據(jù)包的編號(hào)均為一個(gè)2字節(jié)的編號(hào),且編號(hào)的順序從0x1開始至Oxffff,且客戶端所緩存的數(shù)據(jù)包的個(gè)數(shù)小于Oxffff。此處設(shè)置有利于避免因數(shù)據(jù)包編號(hào)重復(fù)而導(dǎo)致的混亂。
[0040]作為進(jìn)一步改進(jìn),當(dāng)客戶端與服務(wù)端之間的網(wǎng)絡(luò)連接斷開后,繼續(xù)由客戶端對(duì)玩家的操作指令進(jìn)行處理并響應(yīng),產(chǎn)生并緩存處理結(jié)果,同時(shí)在后臺(tái)不斷嘗試重新連接服務(wù)端。此處設(shè)置進(jìn)一步保證了在網(wǎng)絡(luò)環(huán)境不好的情