本發(fā)明涉及信息處理技術(shù)領(lǐng)域,尤其涉及一種直播游戲的方法、主播端、直播服務(wù)器及客戶端。
背景技術(shù):
目前,隨著網(wǎng)絡(luò)通信技術(shù)的進(jìn)步和寬帶網(wǎng)絡(luò)的提速,網(wǎng)絡(luò)直播得到了越來(lái)越多的發(fā)展和應(yīng)用。尤其在游戲直播領(lǐng)域,越來(lái)越多的觀眾會(huì)通過(guò)直播平臺(tái)來(lái)觀看游戲的直播。
然而,申請(qǐng)人發(fā)現(xiàn),在上述直播游戲的方法中,主播僅能通過(guò)彈幕來(lái)與觀眾進(jìn)行互動(dòng),而對(duì)于游戲的過(guò)程中的精彩點(diǎn)或關(guān)鍵點(diǎn),例如游戲過(guò)程中的購(gòu)買裝備或者“5連殺”等事件,觀眾無(wú)法形象地獲知,因此主播無(wú)法與觀眾很好地進(jìn)行互動(dòng)??梢?jiàn),現(xiàn)有技術(shù)中直播游戲的方法存在互動(dòng)性較差的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種直播游戲的方法、主播端、直播服務(wù)器及客戶端,用以解決現(xiàn)有技術(shù)中直播游戲的方法存在互動(dòng)性較差的技術(shù)問(wèn)題。
第一方面,本發(fā)明實(shí)施例提供了一種直播游戲的方法,應(yīng)用于主播端,包括:
在游戲進(jìn)程中獲取游戲的特殊事件;
將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;
通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端,所述觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
在本申請(qǐng)?zhí)峁┑闹辈ビ螒虻姆椒ㄖ?,所述在游戲進(jìn)程獲取游戲的特殊事件,包括:
獲取所述游戲進(jìn)程的網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
根據(jù)所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù),獲取所述游戲的特殊事件。
在本申請(qǐng)?zhí)峁┑闹辈ビ螒虻姆椒ㄖ?,所述根?jù)所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù),獲取所述游戲的特殊事件,包括:
篩選出滿足預(yù)設(shè)規(guī)則所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
將滿足所述預(yù)設(shè)規(guī)則的所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù)對(duì)應(yīng)的游戲事件作為所述游戲的特殊事件。
在本申請(qǐng)?zhí)峁┑闹辈ビ螒虻姆椒ㄖ?,在所述將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程之前,還包括:
在直播進(jìn)程中創(chuàng)建命名管道;
所述游戲進(jìn)程中的預(yù)設(shè)配置程序通過(guò)所述命名管道的名稱與所述直播進(jìn)程建立通信連接。
基于與第一方面同樣的發(fā)明構(gòu)思,本發(fā)明第二方面還提供了一種直播游戲的方法,應(yīng)用于直播服務(wù)器,包括:
接收一主播端上直播進(jìn)程發(fā)送的游戲的特殊事件的消息,其中,所述特殊事件的消息從所述主播端上的游戲進(jìn)程中獲取,并由所述游戲進(jìn)程發(fā)送給所述直播進(jìn)程的;
將所述特殊事件的消息發(fā)送至觀眾端,以使所述觀眾端能基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
基于與第一方面同樣的發(fā)明構(gòu)思,本發(fā)明第三方面還提供了一種直播游戲的方法,應(yīng)用于觀眾端,包括:
接收直播服務(wù)器發(fā)送的特殊事件的消息,其中,所述特殊事件的消息是從主播端上游戲進(jìn)程中獲取的,并由所述游戲進(jìn)程發(fā)送給所述主播端上所述直播進(jìn)程,再通過(guò)所述直播進(jìn)程發(fā)送給所述直播服務(wù)器的;
根據(jù)所述特殊事件的消息,產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
基于與第一方面同樣的發(fā)明構(gòu)思,本發(fā)明第四方面還提供了一種主播端,包括:
獲取模塊,用于在游戲進(jìn)程中獲取游戲的特殊事件;
第一發(fā)送模塊,用于將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;
第二發(fā)送模塊,用于通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述消息發(fā)送至觀眾端,所述觀眾端基于所述消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
本發(fā)明提供的主播端中,所述獲取模塊用于:
獲取所述游戲進(jìn)程的網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
根據(jù)所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù),獲取所述游戲的特殊事件。
基于與第二方面同樣的發(fā)明構(gòu)思,本發(fā)明第五方面還提供了一種直播服務(wù)器,包括:
接收模塊,用于接收直播進(jìn)程發(fā)送的游戲的特殊事件的消息,所述特殊事件的消息從所述主播端上的游戲進(jìn)程中獲取的,并由所述游戲進(jìn)程發(fā)送給所述直播進(jìn)程的;
發(fā)送模塊,用于將所述特殊事件的消息發(fā)送至觀眾端,以使所述觀眾端能基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
基于與第三方面同樣的發(fā)明構(gòu)思,本發(fā)明第六方面還提供了一種客戶端,包括:
接收模塊,用于接收直播服務(wù)器發(fā)送的特殊事件的消息,其中,所述特殊事件的消息是從主播端上游戲進(jìn)程中獲取,并由所述游戲進(jìn)程發(fā)送給所述主播端上所述直播進(jìn)程,再通過(guò)所述直播進(jìn)程發(fā)送給所述直播服務(wù)器的;
處理模塊,用于根據(jù)所述特殊事件的消息,產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供了一種直播游戲的方法,首先通過(guò)在游戲進(jìn)程中獲取游戲的特殊事件;并將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;再通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端,所述觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。由于通過(guò)直播進(jìn)程直播游戲的過(guò)程中,將游戲進(jìn)程中獲取的游戲的特殊事件發(fā)送給直播進(jìn)程,直播進(jìn)程進(jìn)一步通過(guò)直播服務(wù)器將特殊事件的消息發(fā)送給觀眾端,并且觀眾端接收到特殊事件的消息后產(chǎn)生與特殊事件相對(duì)應(yīng)的特效,故而當(dāng)主播在直播的游戲中產(chǎn)生特殊事件時(shí),客戶端產(chǎn)生相應(yīng)的特效增強(qiáng)觀眾感受,從而提高主播端與觀眾端的交互,增加主播與觀眾之間的互動(dòng),由此解決了現(xiàn)有技術(shù)中直播游戲的方法存在的互動(dòng)性較差的技術(shù)問(wèn)題。
附圖說(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í)施例中一種直播游戲的方法流程圖;
圖2為本發(fā)明實(shí)施例中另一種直播游戲的方法流程圖;
圖3為本發(fā)明實(shí)施例中又一種直播游戲的方法流程圖;
圖4為圖1-圖3中直播游戲的方法的交互流程圖;
圖5為本發(fā)明實(shí)施例中一種主播端的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例中一種直播服務(wù)器的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例中一種客戶端的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本申請(qǐng)實(shí)施例通過(guò)提供一種直播游戲的方法、主播端、直播服務(wù)器及客戶端,用以解決現(xiàn)有技術(shù)中直播游戲的方法存在互動(dòng)性較差的技術(shù)問(wèn)題。
本申請(qǐng)實(shí)施例中的技術(shù)方案,總體思路如下:
通過(guò)在游戲進(jìn)程中獲取游戲的特殊事件;并將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;再通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端,所述觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
在上述方法中,由于通過(guò)直播進(jìn)程直播游戲的過(guò)程中,將游戲進(jìn)程中獲取的游戲的特殊事件發(fā)送給直播進(jìn)程,直播進(jìn)程進(jìn)一步通過(guò)直播服務(wù)器將特殊事件的消息發(fā)送給觀眾端,并且觀眾端接收到特殊事件的消息后產(chǎn)生與特殊事件相對(duì)應(yīng)的特效,故而當(dāng)主播在直播的游戲中產(chǎn)生特殊事件時(shí),客戶端產(chǎn)生相應(yīng)的特效增強(qiáng)觀眾感受,從而提高主播端與觀眾端的交互,增加主播與觀眾之間的互動(dòng),由此解決了現(xiàn)有技術(shù)中直播游戲的方法存在的互動(dòng)性較差的技術(shù)問(wèn)題。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(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ù)的范圍。
實(shí)施例一
本實(shí)施例提供了一種直播游戲的方法,應(yīng)用于主播端,請(qǐng)參考圖1,所述方法包括:
步驟s101:在游戲進(jìn)程中獲取游戲的特殊事件;
步驟s102:將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;
步驟s103:通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端,所述觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
在本申請(qǐng)實(shí)施例中,所述游戲進(jìn)程是運(yùn)行游戲產(chǎn)生的進(jìn)程。所述直播進(jìn)程是直播產(chǎn)生的進(jìn)程,在本發(fā)明實(shí)施例中,所述直播的內(nèi)容具體為所述游戲。上述游戲進(jìn)程和直播進(jìn)程均運(yùn)行于所述主播端,主播端可以為多種電子設(shè)備,例如手機(jī)、平板電腦、pc機(jī)等。
下面,結(jié)合圖1,對(duì)本申請(qǐng)?zhí)峁┑闹辈ビ螒虻姆椒ㄟM(jìn)行詳細(xì)描述:
首先,執(zhí)行步驟s101,在游戲進(jìn)程中獲取游戲的特殊事件。
舉例來(lái)說(shuō),上述游戲的特殊事件可以是游戲過(guò)程中的5連殺、購(gòu)買裝備等事件。在具體實(shí)施過(guò)程中,可以通過(guò)在游戲進(jìn)程中預(yù)設(shè)配置程序來(lái)實(shí)現(xiàn)。例如,通過(guò)將功能模塊注入到所述游戲進(jìn)程中,該功能模塊用于獲取游戲的特殊事件。例如可以通過(guò)調(diào)用windows系統(tǒng)提供的api(應(yīng)用程序編程接口,applicationprogramminginterface)函數(shù)來(lái)將一個(gè)功能模塊注入到一個(gè)游戲進(jìn)程中。具體來(lái)講,通過(guò)windows系統(tǒng)api函數(shù)createremotethread來(lái)在游戲進(jìn)程中創(chuàng)建一個(gè)遠(yuǎn)程線程,該遠(yuǎn)程線程是直播進(jìn)程在游戲進(jìn)程中創(chuàng)建的一個(gè)線程,通過(guò)上述創(chuàng)建的遠(yuǎn)程線程去調(diào)用系統(tǒng)函數(shù)loadlibrary來(lái)加載需要注入到游戲進(jìn)程的功能模塊。具體實(shí)現(xiàn)如下:
1、首先,通過(guò)windowsapi函數(shù)virtualallocex函數(shù)在游戲進(jìn)程的內(nèi)存空間中分配第一內(nèi)存空間。
2、通過(guò)windowsapi函數(shù)writeprocessmemory來(lái)將需要注入的功能模塊的磁盤路徑寫(xiě)入到上述第一內(nèi)存空間中。
3、然后調(diào)用windowsapi函數(shù)createremotethread函數(shù)來(lái)在游戲進(jìn)程中創(chuàng)建遠(yuǎn)程線程,該遠(yuǎn)程線程的執(zhí)行邏輯就是調(diào)用windowsapi函數(shù)loadlibrary來(lái)加載步驟2中寫(xiě)入的需要注入游戲進(jìn)程的功能模塊的磁盤路徑。這樣就實(shí)現(xiàn)了在游戲進(jìn)程中創(chuàng)建并啟動(dòng)一個(gè)遠(yuǎn)程線程,并進(jìn)一步通過(guò)遠(yuǎn)程線程來(lái)加載功能模塊,從而實(shí)現(xiàn)了在游戲進(jìn)程注入一個(gè)功能模塊,從而通過(guò)該功能模塊在游戲進(jìn)程中獲取游戲的特殊事件。
再執(zhí)行步驟s102:將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲。
在具體實(shí)施過(guò)程中,所述直播進(jìn)程用于直播所述游戲,現(xiàn)有技術(shù)中,通過(guò)直播進(jìn)程直播游戲時(shí),主播對(duì)游戲的過(guò)程進(jìn)行講解,從而與觀眾進(jìn)行互動(dòng)。而直播進(jìn)程與游戲進(jìn)程是相互獨(dú)立的,彼此之間無(wú)法進(jìn)行通信或交互,所以主播與觀眾之間的互動(dòng)性較差。而本申請(qǐng)?zhí)峁┑姆椒ㄖ?,由于在步驟s101中,在游戲進(jìn)程注入一個(gè)功能模塊,并通過(guò)該功能模塊在游戲進(jìn)程中獲取游戲的特殊事件,從而當(dāng)游戲進(jìn)程產(chǎn)生游戲的特殊事件后,可以將上述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,直播進(jìn)程可以獲得游戲的特殊事件。
然后執(zhí)行步驟s103:通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端,所述觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
在具體實(shí)施過(guò)程中,當(dāng)直播進(jìn)程接收到游戲的特殊事件的消息后,則可以將上述特殊事件的消息通過(guò)直播服務(wù)器支持的協(xié)議告知直播服務(wù)器,從而使直播服務(wù)器獲得該游戲的特殊事件的消息。然后通過(guò)直播服務(wù)器將特殊事件的消息發(fā)送至觀眾端,具體地,直播服務(wù)器可以按照直播服務(wù)器支持的協(xié)議轉(zhuǎn)發(fā)到觀眾端,這樣觀眾端可以接收到所述特殊事件的消息,并產(chǎn)生與所述特殊事件的消息相對(duì)應(yīng)的特效,從而讓觀眾能夠跟隨主播一起感受游戲的精彩點(diǎn)和關(guān)鍵點(diǎn),從而提高主播與觀眾的互動(dòng)??蛻舳水a(chǎn)生的特效,舉例來(lái)說(shuō),可以是顯示一個(gè)特定動(dòng)畫(huà),產(chǎn)生一次或多次震動(dòng),播放特定音樂(lè)、頁(yè)面跳躍或語(yǔ)音提示等中的一種或任意多種。
具體來(lái)講,在本申請(qǐng)?zhí)峁┑挠螒虻闹辈シ椒ㄖ?,所述在游戲進(jìn)程獲取游戲的特殊事件,包括:
獲取所述游戲進(jìn)程的網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
根據(jù)所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù),獲取所述游戲的特殊事件。
在具體的實(shí)施過(guò)程中,首先通過(guò)windows提供的動(dòng)態(tài)調(diào)試工具windbg來(lái)動(dòng)態(tài)調(diào)試游戲進(jìn)程,從而獲得游戲中網(wǎng)絡(luò)數(shù)據(jù)發(fā)包函數(shù)。然后通過(guò)反匯編分析網(wǎng)絡(luò)數(shù)據(jù)發(fā)包函數(shù)來(lái)獲取游戲的特殊事件,網(wǎng)絡(luò)數(shù)據(jù)發(fā)包函數(shù)即send函數(shù),用于發(fā)送網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。當(dāng)游戲進(jìn)程中產(chǎn)生特殊事件,會(huì)通過(guò)send函數(shù)發(fā)送一條獨(dú)立的網(wǎng)絡(luò)協(xié)議數(shù)據(jù),因此當(dāng)游戲進(jìn)程中調(diào)用send函數(shù)獲取到上述獨(dú)立網(wǎng)絡(luò)協(xié)議數(shù)據(jù)時(shí)則表示產(chǎn)生了特殊事件。所以,從被調(diào)用的send函數(shù)中獲取所述游戲進(jìn)程的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。具體地,可以通過(guò)在send函數(shù)下調(diào)試斷點(diǎn),獲取游戲進(jìn)程的調(diào)用堆棧信息,從而獲得上層的網(wǎng)絡(luò)協(xié)議發(fā)包的邏輯,根據(jù)上述邏輯分析網(wǎng)絡(luò)協(xié)議組包的代碼,由于網(wǎng)絡(luò)組包代碼中包括協(xié)議包頭,而協(xié)議包頭中包含了協(xié)議的類型,于是通過(guò)反匯編分析協(xié)議類型可以獲取游戲的特殊事件。
更具體地來(lái)講,根據(jù)所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù),獲取所述游戲的特殊事件,包括:
篩選出滿足預(yù)設(shè)規(guī)則所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
將滿足所述預(yù)設(shè)規(guī)則的所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù)對(duì)應(yīng)的游戲事件作為所述游戲的特殊事件。
由于在前述步驟中,在游戲進(jìn)程中注入了功能模塊,本發(fā)明實(shí)施例中的功能模塊具有hook功能,可以獲取游戲進(jìn)程中的網(wǎng)絡(luò)發(fā)包函數(shù)的代碼,從而可以獲取到所有的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。鉤子(hook),是windows消息處理機(jī)制的一個(gè)平臺(tái),應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進(jìn)程所創(chuàng)建的。當(dāng)消息到達(dá)后,在目標(biāo)窗口處理函數(shù)之前處理它。鉤子機(jī)制允許應(yīng)用程序截獲處理window消息或特定事件。具體來(lái)說(shuō),本實(shí)施例中則可以使用微軟提供的detours函數(shù)庫(kù)(一套開(kāi)源的具有hook功能的函數(shù)庫(kù))來(lái)獲取游戲進(jìn)程的網(wǎng)絡(luò)發(fā)包函數(shù)的代碼,然后從該代碼處可以獲取到發(fā)送的所有網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。每個(gè)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包括該網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段和數(shù)據(jù)內(nèi)容,通過(guò)分析網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段,篩選出特殊事件對(duì)應(yīng)的網(wǎng)絡(luò)協(xié)議數(shù)據(jù),由此確定游戲進(jìn)程出現(xiàn)了特殊事件。接著將特殊事件的消息通過(guò)通知直播進(jìn)程。
具體篩選特殊事件對(duì)應(yīng)的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)和通知直播進(jìn)程的實(shí)現(xiàn)方法如下:
1、首先使用detours庫(kù)來(lái)獲取游戲的網(wǎng)絡(luò)發(fā)包函數(shù)的代碼。
detours.hook(networkaddres,dataprocess);
其中detours.hook是該庫(kù)提供的攔截hook功能的接口。參數(shù)networkaddres是網(wǎng)絡(luò)發(fā)包函數(shù)。參數(shù)dataprocess是hook功能的回調(diào)函數(shù),用于實(shí)現(xiàn)獲取網(wǎng)絡(luò)協(xié)議數(shù)據(jù)并發(fā)送特殊事件的消息到直播進(jìn)程。
2、在函數(shù)dataprocess中,獲取并判斷游戲的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段和數(shù)據(jù)內(nèi)容。
在具體的實(shí)施過(guò)程中,篩選出滿足預(yù)設(shè)規(guī)則網(wǎng)絡(luò)協(xié)議數(shù)據(jù),具體是通過(guò)篩選預(yù)設(shè)類型字段的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)。預(yù)設(shè)類型字段為特殊數(shù)據(jù)對(duì)應(yīng)的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段,可以根據(jù)實(shí)際需要進(jìn)行設(shè)置。例如,將“5連殺”事件作為特殊事件,而“5連殺”的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段為12,則設(shè)置預(yù)設(shè)類型字段為“12”。那么,在dataprocess函數(shù)中判斷每個(gè)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段是否為“12”,如果一個(gè)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段為“12”時(shí),篩選出該網(wǎng)絡(luò)協(xié)議數(shù)據(jù),由此獲得游戲進(jìn)程中的特殊事件。或者例如,將“購(gòu)買一個(gè)游戲裝備”事件作為特殊事件,而“購(gòu)買一個(gè)游戲狀態(tài)”的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段為13,則設(shè)置預(yù)設(shè)類型字段為“13”。那么,在dataprocess函數(shù)中判斷每個(gè)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段是否為“13”,如果一個(gè)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的類型字段為“13”時(shí),篩選出該網(wǎng)絡(luò)協(xié)議數(shù)據(jù),由此獲得游戲進(jìn)程中的特殊事件。
進(jìn)一步,可以針對(duì)特殊事件定義一個(gè)唯一的事件類型,向直播進(jìn)程發(fā)送事件類型即為向直播進(jìn)程發(fā)送特殊事件的消息。舉例來(lái)說(shuō),特殊事件“5連殺的事件”定義為事件類型1,“購(gòu)買一個(gè)游戲裝備”定義為事件類型2等。那么,如果dataprocess函數(shù)篩選出“5連殺的事件”的網(wǎng)絡(luò)協(xié)議數(shù)據(jù),則向直播進(jìn)程發(fā)送事件類型1。
進(jìn)一步,在本申請(qǐng)?zhí)峁┑挠螒虻闹辈シ椒ㄖ?,在所述將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程之前,還包括:
在直播進(jìn)程中創(chuàng)建命名管道;
所述游戲進(jìn)程中的預(yù)設(shè)配置程序通過(guò)所述命名管道的名稱與所述直播進(jìn)程建立通信連接。
由于直播進(jìn)程與游戲進(jìn)程是相互獨(dú)立的進(jìn)程,要使直播進(jìn)程可以獲得游戲進(jìn)程的相關(guān)信息,尤其獲得游戲進(jìn)程產(chǎn)生特殊事件的消息,本發(fā)明實(shí)施例通過(guò)直播進(jìn)程與游戲進(jìn)程建立通信連接來(lái)實(shí)現(xiàn)。在具體的實(shí)施過(guò)程中,在前述步驟中,通過(guò)在游戲進(jìn)程中預(yù)設(shè)配置程序可以實(shí)現(xiàn)獲取游戲的特殊事件。為了使直播進(jìn)程獲取上述游戲的特殊事件,則需要通過(guò)游戲進(jìn)程將上述特殊事件發(fā)送給直播進(jìn)程。本實(shí)施例中通過(guò)游戲進(jìn)程與直播進(jìn)程建立一種連接,然后通過(guò)這種連接讓直播進(jìn)程可以獲得游戲進(jìn)程的特殊事件。本發(fā)明實(shí)施例中,通過(guò)在直播進(jìn)程中創(chuàng)建命名管道,然后游戲進(jìn)程中的預(yù)設(shè)配置程序通過(guò)命名管道的名稱連接命名管道,由此與直播進(jìn)程建立通信連接。
具體來(lái)說(shuō),命名管道是通過(guò)網(wǎng)絡(luò)來(lái)完成進(jìn)程間的通信,它屏蔽了底層的網(wǎng)絡(luò)協(xié)議細(xì)節(jié)。而游戲進(jìn)程中命名管道的功能是通過(guò)注入到游戲進(jìn)程中的功能模塊來(lái)實(shí)現(xiàn)的。對(duì)于命名管道,本發(fā)明實(shí)施例將注入游戲進(jìn)程的功能模塊作為命名管道的客戶端,注入直播進(jìn)程的另一端作為命名管道的服務(wù)端。首先服務(wù)端創(chuàng)建一個(gè)命名管道,然后等待客戶端來(lái)連接。功能模塊注入到游戲進(jìn)程中開(kāi)始運(yùn)行后,會(huì)根據(jù)已知的命名管道的名稱去連接該命名管道。一旦客戶端連接上命名管道的服務(wù)端,那么就可以實(shí)現(xiàn)直播進(jìn)程和游戲進(jìn)程的通信。具體的實(shí)現(xiàn)方法如下所述:
直播進(jìn)程作為命名管道服務(wù)端,首先會(huì)調(diào)用windowsapi函數(shù)createnamedpipe創(chuàng)建命名管道。創(chuàng)建的命名管道需要定義名稱。命名管道的名稱可以自定義,只要不與系統(tǒng)其他進(jìn)程的命名管道重名即可。
命名管道的客戶端為游戲進(jìn)程中的預(yù)置程序,即功能模塊,該功能模塊會(huì)通過(guò)這個(gè)名稱來(lái)連接這個(gè)管道。然后通過(guò)調(diào)用函數(shù)connectnamedpipe來(lái)等待命名管道的客戶端的連接。如果客戶端連接上了,直播進(jìn)程會(huì)調(diào)用函數(shù)readfile來(lái)讀取客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)(該數(shù)據(jù)是通知服務(wù)端客戶端已經(jīng)完成連接,可以進(jìn)行通信等)。然后通過(guò)調(diào)用函數(shù)writefile往命名管道中寫(xiě)入可以開(kāi)始監(jiān)控的信息。
具體地,上述功能模塊會(huì)通過(guò)調(diào)用函數(shù)createfile來(lái)連接服務(wù)端創(chuàng)建的命名管道,然后通過(guò)調(diào)用函數(shù)waitnamedpipe來(lái)等待服務(wù)端的響應(yīng)。接下來(lái)客戶端通過(guò)調(diào)用函數(shù)readfile來(lái)從命名管道中讀取服務(wù)端發(fā)送的開(kāi)始監(jiān)控的信息,并在接收到開(kāi)始監(jiān)控的信息后開(kāi)始篩選特殊事件。然后客戶端通過(guò)調(diào)用函數(shù)writefile向管道中寫(xiě)入特殊事件類的消息。
實(shí)施例二
基于與實(shí)施例一相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例二提供了一種直播游戲的方法,應(yīng)用于直播服務(wù)器,如圖2所示,該方法包括:
步驟s201:接收一主播端上直播進(jìn)程發(fā)送的游戲的特殊事件的消息,其中,所述特殊事件的消息從所述主播端上的游戲進(jìn)程中獲取,并由所述游戲進(jìn)程發(fā)送給所述直播進(jìn)程的;
步驟s202:將所述特殊事件的消息發(fā)送至觀眾端,以使所述觀眾端能基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
前述圖1中實(shí)施例中的直播游戲的方法的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的直播游戲的方法,通過(guò)前述對(duì)應(yīng)用于主播端的直播游戲的方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中應(yīng)用于直播服務(wù)器的直播游戲的方法的實(shí)施方法,所以為了說(shuō)明書(shū)的簡(jiǎn)潔,在此不再詳述。
實(shí)施例三
基于與實(shí)施例一相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例三提供了一種直播游戲的方法,應(yīng)用于觀眾端,如圖3所示,該方法包括:
步驟s301:接收直播服務(wù)器發(fā)送的特殊事件的消息,其中,所述特殊事件的消息是從主播端上游戲進(jìn)程中獲取的,并由所述游戲進(jìn)程發(fā)送給所述主播端上所述直播進(jìn)程,再通過(guò)所述直播進(jìn)程發(fā)送給所述直播服務(wù)器的;
步驟s302:根據(jù)所述特殊事件的消息,產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
在以上分別從主播端、直播服務(wù)器、客戶端的視角介紹本申請(qǐng)?zhí)峁┑囊环N直播游戲的方法后,本申請(qǐng)還提供了一種直播游戲的系統(tǒng),包括主播端、直播服務(wù)器和客戶端。下面通過(guò)一個(gè)完整的交互示例來(lái)說(shuō)明本申請(qǐng)直播游戲的方法在直播游戲的系統(tǒng)中的具體流程,具體參見(jiàn)圖4:
其中,主播端運(yùn)行有直播進(jìn)程和游戲進(jìn)程。游戲進(jìn)程中預(yù)設(shè)配置程序,該配置程序?yàn)橥ㄟ^(guò)直播進(jìn)程注入到游戲進(jìn)程的一個(gè)功能模塊。首先,執(zhí)行步驟s401:通過(guò)主播端游戲進(jìn)程中的功能模塊在游戲進(jìn)程中獲取游戲的特殊事件;然后執(zhí)行步驟s402:通過(guò)上述功能模塊將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程;接下來(lái)執(zhí)行步驟s403:直播進(jìn)程接收到游戲的特殊事件的消息后,將所述特殊事件的消息發(fā)送至直播服務(wù)器;接下來(lái)執(zhí)行步驟s404:所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端;最后執(zhí)行步驟s405:觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
前述圖1中實(shí)施例中的直播游戲的方法的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的直播游戲的方法,通過(guò)前述對(duì)應(yīng)用于主播端的直播游戲的方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中應(yīng)用于客戶端的直播游戲的方法的實(shí)施方法,所以為了說(shuō)明書(shū)的簡(jiǎn)潔,在此不再詳述。
實(shí)施例四
基于與實(shí)施例一相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例四提供了一種主播端,如圖5所示,所述主播端包括:
獲取模塊,用于在游戲進(jìn)程中獲取游戲的特殊事件;
第一發(fā)送模塊,用于將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;
第二發(fā)送模塊,用于通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述消息發(fā)送至觀眾端,所述觀眾端基于所述消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
在本實(shí)施例提供主播端中,所述獲取模塊用于:
獲取所述游戲進(jìn)程的網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
根據(jù)所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù),獲取所述游戲的特殊事件。
在本實(shí)施例提供主播端中,所述獲取模塊還用于:
篩選出滿足預(yù)設(shè)規(guī)則所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù);
將滿足所述預(yù)設(shè)規(guī)則的所述網(wǎng)絡(luò)協(xié)議數(shù)據(jù)對(duì)應(yīng)的游戲事件作為所述游戲的特殊事件。
在本實(shí)施例提供主播端中,還包括處理模塊,用于在所述將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程之前,在直播進(jìn)程中創(chuàng)建命名管道;
所述游戲進(jìn)程中的預(yù)設(shè)配置程序通過(guò)所述命名管道的名稱與所述直播進(jìn)程建立通信連接;
實(shí)施例五
基于與實(shí)施例二相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例五提供了一種直播服務(wù)器,如圖6所示,所述直播服務(wù)器包括:
接收模塊,用于接收直播進(jìn)程發(fā)送的游戲的特殊事件的消息,所述特殊事件的消息從所述主播端上的游戲進(jìn)程中獲取的,并由所述游戲進(jìn)程發(fā)送給所述直播進(jìn)程的;
發(fā)送模塊,用于將所述特殊事件的消息發(fā)送至觀眾端,以使所述觀眾端能基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
實(shí)施例六
基于與實(shí)施例三相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例六提供了一種客戶端,如圖7所示,所述客戶端包括:
接收模塊,用于接收直播服務(wù)器發(fā)送的特殊事件的消息,其中,所述特殊事件的消息是從主播端上游戲進(jìn)程中獲取,并由所述游戲進(jìn)程發(fā)送給所述主播端上所述直播進(jìn)程,再通過(guò)所述直播進(jìn)程發(fā)送給所述直播服務(wù)器的;
處理模塊,用于根據(jù)所述特殊事件的消息,產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。
實(shí)施例一至三中的游戲的直播方法的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例四至六中的主播端、直播服務(wù)器和客戶端,通過(guò)前述對(duì)游戲的直播方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中主播端、直播服務(wù)器和客戶端,所以為了說(shuō)明書(shū)的簡(jiǎn)潔,在此不再詳述。
本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供了一種直播游戲的方法,首先通過(guò)在游戲進(jìn)程中獲取游戲的特殊事件;并將所述游戲的特殊事件的消息發(fā)送至直播進(jìn)程,所述直播進(jìn)程用于直播所述游戲;再通過(guò)所述直播進(jìn)程將所述特殊事件的消息發(fā)送至直播服務(wù)器,以使所述直播服務(wù)器將所述特殊事件的消息發(fā)送至觀眾端,所述觀眾端基于所述特殊事件的消息產(chǎn)生與所述特殊事件相對(duì)應(yīng)的特效。由于通過(guò)直播進(jìn)程直播游戲的過(guò)程中,將游戲進(jìn)程中獲取的游戲的特殊事件發(fā)送給直播進(jìn)程,直播進(jìn)程進(jìn)一步通過(guò)直播服務(wù)器將特殊事件的消息發(fā)送給觀眾端,并且觀眾端接收到特殊事件的消息后產(chǎn)生與特殊事件相對(duì)應(yīng)的特效,故而當(dāng)主播在直播的游戲中產(chǎn)生特殊事件時(shí),客戶端產(chǎn)生相應(yīng)的特效增強(qiáng)觀眾感受,從而提高主播端與觀眾端的交互,增加主播與觀眾之間的互動(dòng),由此解決了現(xiàn)有技術(shù)中直播游戲的方法存在的互動(dòng)性較差的技術(shù)問(wèn)題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明實(shí)施例進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明實(shí)施例的精神和范圍。這樣,倘若本發(fā)明實(shí)施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。