本申請涉及通信技術領域,尤其涉及一種游戲數據獲取方法和裝置。
背景技術:
隨著網絡游戲的不斷發(fā)展,兩人或多人進行對戰(zhàn)的競技類游戲越來越受到游戲玩家的喜愛。在競技類游戲的場景中,游戲玩家可以根據游戲規(guī)則進行游戲操作。
目前,經常會存在一些游戲玩家利用游戲自身的漏洞或者利用其他作弊程序對游戲運行數據進行惡意篡改,以達到改變游戲角色能力等目的,使得游戲角色的行為不符合游戲規(guī)則,影響了游戲的安全性,也無法保證不同游戲玩家之間競技的公平性。為了識別出網絡游戲中違反游戲規(guī)則的角色行為,網絡游戲中的服務系統(如,用于進行數據分析的服務器)需要對網絡游戲中游戲角色的行為數據進行分析,然而服務系統獲取的游戲角色的行為數據具有盲目性,不利于服務系統全面、準確的定位出違法游戲規(guī)則的角色行為。
技術實現要素:
有鑒于此,本申請?zhí)峁┝艘环N游戲數據獲取方法和裝置,以使得游戲的服務系統能夠更為精準的獲取包含違規(guī)行為的游戲畫面的畫面數據,有利于快速精準的定位出違反游戲規(guī)則的角色行為。
為實現上述目的,一方面,本申請實施例提供了一種游戲數據獲取方法,包括:
接收用戶輸入的違規(guī)舉報請求;
響應于所述違規(guī)舉報請求,獲取游戲進程輸出的游戲畫面的畫面數據;
從所述游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色;
將所述畫面數據和所述目標游戲角色的信息發(fā)送給指定的分析服務器。
另一方面,本申請實施例還提供了一種游戲數據獲取裝置,包括:
請求接收單元,用于接收用戶輸入的違規(guī)舉報請求;
數據獲取單元,用于響應于所述違規(guī)舉報請求,獲取游戲進程輸出的游戲畫面的畫面數據;
角色確定單元,用于從所述游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色;
數據發(fā)送單元,用于將所述畫面數據和所述目標游戲角色的信息發(fā)送給指定的分析服務器。
經由上述的技術方案可知,在終端接收到用戶輸入的違規(guī)舉報請求時,獲取游戲進程輸出的游戲畫面的畫面數據;從游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色,并將獲取到的畫面數據和目標游戲角色的信息發(fā)送給指定的分析服務器,這樣,游戲玩家在發(fā)現游戲畫面中某些游戲角色的角色行為異常時,可以觸發(fā)終端主動上報這些游戲角色的信息以及包含有這些游戲角色異常行為的游戲畫面,使得分析服務器可以有針對性的獲取到反映游戲角色行為異常的數據,從而有利于分析服務器及時準確的定位出游戲中的違規(guī)行為。
附圖說明
為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本申請實施例公開的數據獲取系統的一種組成結構示意圖;
圖2為本申請實施例公開的數據獲取方法的一種流程示意圖;
圖3為本申請實施例公開的數據獲取方法的又一種流程示意圖;
圖4為本申請實施例公開的數據獲取方法的又一種流程示意圖;
圖5為本申請實施例公開的數據獲取裝置一種組成結構示意圖;
圖6為本申請實施例公開的一種終端的結構示意圖。
具體實施方式
本申請實施例的游戲數據獲取方法和裝置中,在終端接收到用戶輸入的違規(guī)舉報請求時,獲取游戲進程輸出的游戲畫面的畫面數據;從游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色;然后,將獲取到的畫面數據和目標游戲角色的信息發(fā)送給指定的分析服務器,使得游戲玩家在發(fā)現游戲畫面中某些游戲角色的角色行為異常時,可以觸發(fā)終端主動上報這些游戲角色的信息以及包含有這些游戲角色異常行為的游戲畫面,使得分析服務器可以有針對性的獲取到反映游戲角色行為異常的數據,從而有利于分析服務器及時準確的定位出游戲中的違規(guī)行為。
本申請實施例的數據游戲獲取方法和裝置可以應用于運行有游戲應用的終端,該終端也可以理解為游戲客戶端。如,該終端可以為運行有游戲應用的臺式計算機、筆記本、手機等等終端。
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請?zhí)峁┑挠螒驍祿@取系統的一種組成結構示意圖,圖1所示的游戲數據獲取系統可以實施本申請實施例提供的游戲數據獲取方法,參照圖1,本申請?zhí)峁┑挠螒驍祿@取系統可以包括:
游戲應用的服務系統10和多個運行有游戲應用的終端11。
其中,服務系統10可以包括分析服務器101和至少一臺業(yè)務服務器102,該業(yè)務服務器102可以為終端提供運行該游戲應用所需的游戲數據;具體的,該服務系統可以包括多臺業(yè)務服務器,這多臺業(yè)務服務器可以部署于同一個機房內,也可以是分布在多個不同地區(qū)中。該服務系統可以提供一款或多款游戲。該分析服務器101可以接收終端上報的游戲畫面的畫面數據,并對終端上報的數據進行分析。
該終端11通過運行該游戲應用,并基于該游戲應用于該服務系統建立通信連接,以向該服務系統請求運行某款游戲所需的游戲業(yè)務數據;同時,在本申請實施例中,該終端還可以將響應于用戶輸入的違規(guī)舉報請求而獲取到的游戲畫面的畫面數據以及確定出的待分析的目標游戲角色的信息發(fā)送給服務系統中用于進行數據分析的分析服務器101。
可以理解的是,該分析服務器101可以與向終端提供運行游戲所需的游戲業(yè)務數據的業(yè)務服務器102是同一臺服務器,也可以是獨立設置的僅僅用于進行游戲畫面數據分析的服務器。
基于圖1所示的游戲數據獲取系統,下面將從終端的角度進行描述,如圖2示出了本申請?zhí)峁┑挠螒驍祿@取方法的一個實施例的流程示意圖,該流程包括以下步驟:
S201,接收用戶輸入的違規(guī)舉報請求。
在終端上啟動游戲應用之后,游戲應用調用游戲進程,使得終端運行該游戲進程,實現在終端上運行某款網絡游戲。在終端運行游戲進程的過程中,如果作為游戲玩家的用戶發(fā)現網絡游戲中的某個游戲角色出現違規(guī)行為,則該用戶可以向終端輸入違規(guī)舉報請求。
其中,該違規(guī)舉報請求用于觸發(fā)終端捕獲游戲進程輸出的游戲畫面的畫面數據。當用戶輸入該違規(guī)舉報請求,則表明用戶發(fā)現游戲進程所輸出的游戲畫面中存在違規(guī)行為的游戲角色。游戲角色出現違規(guī)行為可以有多種表現形式,如,某個游戲角色被攻擊后,該游戲角色的血量應該減少,但是如何該游戲角色被持續(xù)多次攻擊后,該游戲角色的血量卻沒有發(fā)生變化,則說明該游戲角色可能是利用游戲漏洞或者游戲外掛實現了游戲違規(guī)行為。當然,游戲角色的違規(guī)行為還可以有其他表現形式,在此不一一列舉。
其中,用戶輸入違規(guī)舉報請求的方式可以有多種,如,可以是點擊終端中指定的按鍵,或者是點擊游戲畫面中呈現出的某個按鍵;還可以是通過在終端顯示出的游戲畫面中進行指定操作,以使得終端確定該用戶當前的輸入操作為觸發(fā)輸入違規(guī)舉報請求的操作。
S202,響應于該違規(guī)舉報請求,獲取游戲進程輸出的游戲畫面的畫面數據。
其中,獲取游戲進程輸出的游戲畫面的畫面數據可以有多種情況:
在一種可能的實現方式中:可以獲取游戲進程當前輸出的游戲畫面的畫面數據,具體的,可以是獲取游戲進程當前顯示輸出的游戲畫面的畫面數據。
如,顯卡中可以緩存終端的顯示界面中當前輸出的畫面的數據,則終端可以從讀取顯卡中緩存中的畫面數據,從而得到該游戲進程當前輸出的游戲畫面的畫面數據。又如,游戲進程可以緩存當前輸出的游戲畫面的畫面數據,這樣終端可以向游戲進程請求該游戲進程當前輸出的游戲畫面的畫面數據。當然,還可以有其他方式來獲取游戲進程當前輸出的游戲畫面的畫面數據,在此不再贅述。
在另一種可能的實現方式中,可以截獲游戲進程待輸出的游戲畫面的畫面數據。在該種情況下,截獲到的游戲畫面可以是單幀游戲畫面,即截取游戲進程當前待輸出的一幀游戲畫面的畫面數據。截獲的游戲畫面也可以是錄制的游戲進程輸出的多幀游戲畫面,即,截取游戲進程當前時刻之后待輸出的多幀游戲畫面的畫面數據。如,按照預設的時間間隔,每隔該預設的時間間隔,觸發(fā)截取游戲進程當前待輸出的一幀游戲畫面的畫面數據,從而得到多幀游戲畫面的畫面數據。
其中,截獲游戲進程當前待輸出的游戲畫面的畫面數據的方式可以為:從顯卡中截取當前待輸出至顯示界面的畫面數據,從而得到包含該游戲進程當前待輸出的游戲畫面的畫面數據;也可以是:向游戲進程發(fā)送游戲畫面請求,以使得游戲進程響應該游戲畫面請求返回當前待輸出的游戲畫面的畫面數據。當然,還可以有其他方式來截獲游戲進程待輸出的多幀游戲畫面,在此不再贅述。
可以理解的是,在需要獲取游戲進程輸出的多幀游戲畫面的情況下,獲取游戲進程輸出的游戲畫面的畫面數據也可以是獲取游戲進程當前輸出的游戲畫面以及游戲進程當前時刻之后待輸出的指定數量幀游戲畫面的畫面數據。
S203,從該游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色。
其中,待分析的游戲角色是步驟203中獲取到的游戲畫面中的某一個或者多個游戲角色。待分析的游戲角色可以認為是獲取到的游戲畫面中可能存在違規(guī)行為的游戲角色。為了便于區(qū)分,本申請實施例中,將確定出的待分析的游戲角色成為目標游戲角色。
可以理解的是,本申請實施例可以適用于多款網絡游戲,尤其適用于玩家與玩家對戰(zhàn)的網絡游戲。在該種情況下,目標游戲角色可以為某個游戲玩家對應的游戲角色。當然,該游戲進程所運行的網絡游戲也可以是玩家與環(huán)境對戰(zhàn)的網絡游戲,在玩家與環(huán)境對戰(zhàn)的網絡游戲中,游戲角色可以為真實游戲玩家所對應的游戲角色,也可以為游戲系統設置的虛擬游戲角色。
確定待分析的游戲角色的方式可以有多種,如,當獲取到的游戲畫面的畫面數據為一幀游戲畫面的畫面數據時,可以是將游戲畫面中包含的游戲角色都確定為目標游戲角色;當獲取到的游戲畫面的畫面數據為多幀游戲畫面的畫面數據時,可以是將所有游戲角色均作為待分析的游戲角色;也可以是僅僅將獲取到的第一幀游戲畫面中所包含的游戲角色作為待分析的游戲角色。
可選的,為了明確游戲畫面中用戶認為存在違規(guī)行為且需要舉報的游戲角色,可以由用戶來選取待分析的目標游戲角色。具體的,終端可以先確定獲取到的游戲畫面中所包含的游戲角色,得到至少一個游戲角色;然后,輸出包含有該至少一個游戲角色的選擇界面,如,在該選擇界面中包含有該至少一個游戲角色的角色名稱或角色標識等信息,以便用戶選擇某一個游戲角色作為需要舉報的存在違規(guī)行為的游戲角色;相應的,終端根據選擇界面中的選擇操作,可以從選擇界面顯示出的至少一個游戲角色中確定出待分析的目標游戲角色。
S204,將該畫面數據和目標游戲角色的信息發(fā)送給指定的分析服務器。
其中,該目標游戲角色的信息用于標識出該目標游戲角色,如,目標游戲角色的游戲ID、游戲角色名稱、游戲角色所對應的玩家賬號等等。
由于獲取到的游戲畫面的畫面數據是用戶認為存在違規(guī)行為的游戲畫面,與分析服務器盲目性的每隔預定時間獲取一次游戲的游戲畫面相比,在由用戶的違規(guī)舉報請求所觸發(fā)獲取到的游戲畫面存在違規(guī)行為的可能性更大,更有利于分析服務器定位出違規(guī)行為。同時,將游戲畫面中待分析的目標游戲角色的信息也發(fā)送給服務器,有利于服務器有針對性的分析游戲畫面中游戲角色的行為數據,快速、準確的分析出該目標游戲角色是否存在違規(guī)行為。
可選的,在本申請實施例中,在步驟202之后,為了降低存儲獲取到的畫面數據的存儲量,降低存儲成本,并降低傳輸的數據量,提高數據傳輸效率,可以對獲取到的畫面數據進行處理,以降低獲取到的畫面數據的數據量。
如,在一種實現方式中,可以對獲取到的畫面數據進行壓縮。具體的,可以先確定游戲進程輸出的游戲畫面的分辨率,根據該分辨率確定游戲畫面的壓縮比,根據壓縮比對獲取到的游戲畫面的畫面數據進行壓縮。
在另一種實現方式中,可以將獲取到的畫面數據進行格式轉換。如,目前游戲進程所輸出的游戲畫面大部分是RGBA(一種RGB顏色空間)格式編碼的,則可以將該游戲畫面由RGBA格式轉換為YUV(一種顏色編碼方法)編碼格式。與傳輸RGB編碼格式的圖像或視頻數據傳輸相比,傳輸YUV編碼的圖像或視頻數據的最大的優(yōu)點在于只需占用極少的頻寬。
在另一種實現方式中,當在步驟202中需要獲取多幀游戲畫面的畫面數據的情況下,由于分析服務器分析游戲角色異常行為的過程中,僅僅需要基于第一幀游戲畫面,分析后續(xù)多幀游戲畫面的差異性變化,便可以確定異常行為,因此,在步驟202中每次截取到一幀游戲畫面,都將本次截取到的一幀游戲畫面與上一次截取到的一幀游戲畫面進行對比,并將本次截取到的一幀游戲畫面相對于上一次截取到的一幀游戲畫面存在差異的像素點編碼為待存儲的一幀游戲畫面,這樣,存儲的游戲畫面幀由于僅僅包含與上一幀存在差異的像素點,從而可以降低存儲的游戲畫面幀的數據量,進而降低后續(xù)向分析服務器傳輸的數據量。
為了便于理解,下面分別對截取游戲進程輸出的單幀游戲畫面,以及錄制游戲進程輸出的多幀游戲畫面這兩種情況進行介紹。
可以理解的是,獲取游戲進程輸出的游戲畫面的方式可以有多種,但是當顯示界面中顯示有多個不同應用對應的顯示窗口,顯卡中會同時存儲有該多個應用的顯示窗口當前所顯示的或者待顯示的窗口內容,這樣,終端無法單獨提取出游戲進程輸出的游戲畫面的畫面數據,從而導致獲取到數據量較大,也增加了分析服務器分析的難度。例如,顯示界面中除了顯示有游戲進程的游戲界面之外,可能會顯示其他即時通訊應用的即時聊天窗口,這樣,從顯卡中直接獲取的畫面數據中除了包含有游戲進程當前輸出的或者當前待輸出的游戲畫面的畫面數據之外,還會包含有即時通信應用中當前輸出的或者待輸出的消息內容。因此,為了能夠更精準的獲取游戲進程輸出的游戲畫面的畫面數據,以終端直接從游戲進程獲取該游戲進程輸出的游戲畫面的畫面數據為優(yōu)選實施方式。
進一步的,如果游戲進程在輸出游戲畫面的同時,還緩存游戲進程當前輸出的游戲畫面的畫面數據也必然會增大游戲進程的存儲負擔。可以理解的是,由于游戲進程每秒輸出的游戲畫面多達上百幀,而相鄰前后兩幀游戲畫面的畫面差異非常小,而且,由于游戲進程每次顯示游戲畫面之前,均需要先從業(yè)務服務器獲取待輸出的游戲畫面的畫面數據并緩存,并在需要輸出該游戲畫面時,輸出相應的游戲畫面,因此,終端可以直接截取游戲進程當前待輸出的游戲畫面的畫面數據,這樣,既可以獲取到反映違規(guī)行為的游戲畫面,又無需游戲進程單獨緩存已輸出的游戲畫面的畫面數據,從而可以減少游戲進程的負擔,避免對游戲運行產生影響。因此,在本申請以下實施例中,以獲取游戲進程輸出的游戲畫面為游戲進程待輸出的游戲畫面為例進行介紹。
首先以響應于違規(guī)舉報請求,僅獲取游戲進程當前待輸出的一幀游戲畫面的畫面數據為例進行介紹。
結合圖1,參見圖3,其示出了本申請一種游戲數據獲取方法又一個實施例的流程交互示意圖,本實施例的方法可以包括:
S301,在終端基于游戲進程運行網絡游戲的過程中,終端通過游戲進程接收業(yè)務服務器發(fā)送的游戲畫面的畫面數據。
可以理解的是,在終端顯示游戲畫面的畫面數據之前,終端會調用游戲進程,并通過游戲進程向業(yè)務服務器請求運行網絡游戲所需的游戲業(yè)務數據,這樣,業(yè)務服務器為終端返回游戲業(yè)務數據,以使得終端的游戲進程運行網絡游戲。如,終端基于游戲進程向業(yè)務服務器請求分配游戲的房間,以使得該終端的游戲玩家可以同該房間內的其他游戲玩家一起競技。
在終端基于游戲進程登錄業(yè)務服務器,并運行網絡游戲之后,當網絡游戲中任意一個游戲玩家在該游戲玩家所在的游戲界面中進行操作,使得網絡游戲的游戲數據發(fā)生變化之后,業(yè)務服務器均會對網絡游戲的游戲畫面進行更新,并將更新后的游戲畫面實時反饋給各個游戲玩家所在的終端。
S302,終端基于該游戲進程輸出游戲畫面的畫面數據并緩存下一幀待輸出的游戲畫面的畫面數據。
可以理解的是,由于業(yè)務服務器與終端中的游戲進程會實時交互,以更新游戲進程中輸出的游戲畫面,因此,在游戲進程顯示輸出有一幀游戲畫面的同時,游戲進程會從業(yè)務服務器獲取下一幀待輸出的游戲畫面并進行緩存,以在到達輸出下一幀游戲畫面的時刻時,輸出該下一幀游戲畫面,同時,繼續(xù)從業(yè)務服務器獲取后續(xù)待輸出的游戲畫面的畫面數據并緩存,如此循環(huán)。
當然,在實際應用中,終端的游戲進程也可能會緩存多幀需要依次輸出的游戲畫面,在該種情況下,具體實現過程與本實施例相似,由于本實施例僅僅每次僅僅需要獲取當前時刻之后最近一次需要輸出的一幀游戲畫面,因此,本實施例以游戲進程緩存有下一幀待輸出的游戲畫面為例進行介紹。
S303,終端接收用戶輸入的違規(guī)舉報請求。
S304,終端響應于該違規(guī)舉報請求,創(chuàng)建與游戲進程共享的共享內存。
S305,終端向游戲進程發(fā)送游戲畫面請求,以觸發(fā)游戲進程從緩存的游戲畫面中,獲取下一幀待輸出的游戲畫面的畫面數據,并將該下一幀游戲畫面的畫面數據寫入到共享內存中。
其中,下一幀待輸出的游戲畫面是指當前時刻之后最近一次需要輸出的一幀游戲畫面。
游戲進程將下一幀待輸出的游戲畫面寫入到共享內存之后,如果需要顯示該下一幀待輸出的游戲畫面,游戲進程仍可以正常輸出該下一幀待輸出的游戲畫面,從而不會影響到游戲進程正常的游戲畫面輸出。
S306,終端讀取該共享內存中存儲的一幀游戲畫面的畫面數據。
需要說明的是,本實施例中,步驟S304中創(chuàng)建共享內存的以及步驟S305中由游戲進程將獲取到的下一幀游戲畫面的畫面數據寫入到共享內存僅僅是一種優(yōu)選實施方式,在實際應用中,終端也可以通過其他方式來獲取游戲進程下一幀待輸出的游戲畫面的畫面數據。
S307,終端確定該幀游戲畫面中包含的游戲角色的信息。
其中,終端可以分析獲取到該幀游戲畫面中包含有哪些游戲角色,如,通過分析游戲畫面中包含的游戲角色的ID或玩家賬號等信息,確定出游戲畫面中包含的游戲角色的信息。
S308,終端輸出包含有確定出的游戲角色的信息的選擇界面。
如,在該選擇界面中可以設置分別表征確定出的各個游戲角色的選項框,用戶通過點擊選項框,觸發(fā)終端將該選項框對應的游戲角色確定為需要舉報的目標游戲角色。
S309,該終端確定游戲玩家在該選擇界面中選取出待舉報的目標游戲角色。
S310,終端將從共享內存中讀取出的游戲畫面的畫面格式從RGBA編碼轉換為YUV編碼格式。
需要說明的是,該步驟S310與步驟S307的順序并不限于圖3所示,在實際應用中,可以先執(zhí)行步驟S310,然后再執(zhí)行該步驟S307至S309的操作,當然,也可以是在執(zhí)行步驟S310的同時,執(zhí)行該步驟S307至S309。
其中,該步驟S310為一種可選步驟,目的是為了降低需要傳輸的游戲畫面的數據量。
S311,終端將用戶選取的目標游戲角色的信息以及編碼為YUV編碼格式的游戲畫面的畫面數據發(fā)送給分析服務器。
由于本實施例中每次接收到違規(guī)舉報請求僅僅需要獲取下一幀待輸出的游戲畫面的畫面數據,因此,截獲到下一幀待輸出的游戲畫面的畫面數據之后,終端便可以確定當前結束游戲畫面的截取,在該種情況下,終端將確定出的目標游戲角色的信息以及截獲的游戲畫面的畫面數據發(fā)送給分析服務器。
可選的,在本申請實施例中,在該步驟S311之前,終端還可以獲取游戲進程輸出的游戲畫面的分辨率,并按照該分辨率確定壓縮比,基于該壓縮比對編碼為YUV編碼格式的游戲畫面進行壓縮。相應的,該S311中可以將對編碼為YUV格式的游戲畫面進行壓縮后的畫面數據傳輸給分析服務器。
可以理解的是,在終端接收到違規(guī)舉報請求之后,終端還可以創(chuàng)建用于存儲畫面數據的緩存空間,在從共享內存中讀取到該幀游戲畫面的畫面數據之后,可以將該幀游戲畫面的畫面數據緩存到該緩存空間,然后在對緩存空間緩存的畫面數據進行處理。
下面以每次響應于違規(guī)舉報請求,連續(xù)多次截取游戲進程待輸出的游戲畫面,以獲取到游戲進程待輸出的多幀游戲畫面的畫面數據為例進行介紹。
結合圖1,參見圖4,其示出了本申請一種游戲數據獲取方法又一個實施例的流程示意圖。為了便于清楚描述終端與游戲進程之間的交互,下面以終端運行有錄制進程,且基于該錄制進程與游戲進程的交互,獲取游戲進程待輸出的多幀游戲畫面為例進行介紹。本實施例的方法可以包括:
S401,在終端的游戲進程運行網絡游戲的過程中,接收業(yè)務服務器發(fā)送的游戲畫面的畫面數據。
S402,該游戲進程輸出游戲畫面的畫面數據,并緩存下一幀待輸出的游戲畫面的畫面數據。
S403,終端的錄制進程接收用戶輸入的違規(guī)舉報請求。
以上步驟可以參見前面實施例的相關介紹,在此不再贅述。
S404,該錄制進程響應于該違規(guī)舉報請求,創(chuàng)建視頻文件緩存空間。
由于本實施例中,錄制進程需要獲取多幀游戲畫面,然后將多幀游戲畫面一并傳輸給分析服務器,因此,為了對不同次獲取到的游戲畫面幀進行緩存,本實施例可以創(chuàng)建用于緩存多幀游戲畫面所組成的視頻文件的緩存空間,此處稱為視頻文件緩存空間。
當然,該創(chuàng)建視頻文件緩存空間僅僅是一種優(yōu)選實施方式,在實際應用中,也可以不創(chuàng)建該視頻文件緩存空間,這樣,錄制進程也可以在每獲取到一幀游戲畫面之后,便在對該游戲畫面進行處理,將該幀游戲畫面?zhèn)鬏斀o分析服務器。
S405,錄制進程創(chuàng)建與游戲進程共享的共享內存。
S406,錄制進程判斷當前時刻距離接收到違規(guī)舉報請求的時刻之間的時長是否超過預設時長,如果是,則執(zhí)行S414;如果否,執(zhí)行S407;
在本實施例中,以接收到違規(guī)舉報請求可以觸發(fā)終端通過錄制進程在預設時長內連續(xù)多次截取游戲進程待輸出的游戲畫面為例。其中,該預設時長可以根據需要設定,如,預設時長可以為5秒。
可以理解的是,本實施例中,當前時刻距離接收到違規(guī)舉報請求的時長達到預設時長僅僅是預設的觸發(fā)錄制進程終止截取游戲畫面的一種終止截取條件。在實際應用中,該終止截取條件還可以有其他多種情況,當錄制進程判斷出當前時刻不滿足該終止截取條件時,仍可以繼續(xù)執(zhí)行步驟407;直至當前時刻滿足終止截取條件時,結束游戲畫面的截取。如,終端可以在接收到用戶輸入的終止截取指令時,結束游戲畫面的截取,不再向游戲進程發(fā)送游戲畫面請求。
S407,如果當前時刻距離上一次發(fā)送游戲畫面請求的時刻未達到預設時長,錄制進程向游戲進程發(fā)送游戲畫面請求。
其中,該預設時長可以理解為前面所提到的預設的時間間隔??梢岳斫獾氖?,錄制進程每隔預設的時間間隔發(fā)送一次游戲畫面請求僅僅是一種優(yōu)選的實施方式,一方面是為了使得游戲進程向共享內存寫入一幀游戲畫面之后,該錄制進程可以有足夠的時間處理該共享內存中的游戲畫面;另一方面,為了減少獲取到的游戲畫面幀的數量,如,通過設置該預設的時間間隔,可以實現每隔指定數量幀游戲畫面,獲取一幀游戲進程待輸出的游戲畫面,而由于一秒內游戲進程可能需要輸出上百幀游戲畫面,而如果兩幀游戲畫面之間僅僅間隔有少量幀游戲畫面,并不會影響到分析服務器對游戲畫面中違規(guī)行為的分析。
當然,如果采用錄制進程每次向緩存空間中存入一幀游戲畫面之后,便立刻向游戲進程發(fā)送游戲畫面請求的方式,也同樣適用于本實施例。
S408,游戲進程響應于該游戲畫面請求,將游戲進程中緩存的下一幀待輸出的游戲畫面的畫面數據寫入到共享內存中。
本實施例中,在游戲進程將游戲畫面顯示到游戲界面之前,游戲進程截取待輸出的游戲畫面并存儲到一個共享內存中,然后游戲進程可以繼續(xù)正常運行;而錄制進程可以從共享內存中讀取需要截取的游戲畫面,對游戲進程的邏輯無影響,從而可以保證游戲進程的正常運行,保證了用戶正常的游戲的體驗。
可以理解的是,本實施例中錄制進程向游戲進程發(fā)送一次游戲畫面請求,便觸發(fā)游戲進程獲取一次下一幀待輸出游戲畫面。當然,也可以是錄制進程在接收到違規(guī)舉報請求之后,該錄制進程發(fā)送一次游戲畫面請求,而由游戲進程按照預設的時間間隔,觸發(fā)一次將當前待輸出的下一幀游戲畫面寫入到共享內存中。
S409,游戲進程通知錄制進程去共享內存中讀取游戲畫面的畫面數據。
S410,錄制進程讀取共享內存中當前存儲的當前游戲畫面的畫面數據。
S411,如果錄制進程檢測到視頻文件緩存空間中存儲有該當前游戲畫面之前最近一次讀取到的上一幀游戲畫面,則將當前游戲畫面與上一幀游戲畫面的畫面數據進行比較,并將當前游戲畫面與上一幀游戲畫面中存在差異的像素點進行編碼,得到編碼后的游戲畫面幀。
可選的,在該步驟S411之前,錄制進程可以將從共享內存中讀取出的游戲畫面的畫面格式從RGBA編碼轉換為YUV編碼格式。
S412,錄制進程將編碼后的游戲畫面幀存儲到視頻文件緩存空間,并返回S406;
S413,如果錄制進程檢測到視頻文件緩存空間中沒有存儲該當前游戲畫面之前最近一次讀取到的上一幀游戲畫面,則將該當前游戲畫面的畫面數據直接存儲到該視頻文件緩存空間,并返回S406。
S414,錄制進程確定視頻文件緩存空間緩存的該多幀游戲畫面中所包含的游戲角色的信息。
可以理解的是,如果步驟S406中錄制進程判斷當前時刻距離接收到違規(guī)舉報請求的時刻之間的時長是否超過預設時長,則說明當前時刻為結束游戲畫面截取的時刻,則錄制進程結束錄制游戲畫面的操作,并根據視頻文件緩存空間緩存的多幀游戲畫面,確定該多幀游戲畫面中都涉及到哪些游戲角色。如,該多幀游戲畫面中可以包括有游戲角色A、游戲角色B和游戲角色C,則后續(xù)輸出的選擇界面中可以包含有這三個游戲角色對應的選擇選項。
當然,在本實施例是以錄制進程結束對游戲畫面的截取之后,確定游戲畫面中所涉及到的游戲角色為例進行介紹,但是可以理解的是,一般情況下,用戶發(fā)出違規(guī)舉報請求之后,游戲進程當前輸出的游戲畫面以及下一幀待輸出的游戲畫面中一般便可以包含有需要舉報的游戲角色,因此,也可以在錄制進程截取到第一幀游戲畫面時,便觸發(fā)確定該第一幀游戲畫面中所包含的游戲角色,并執(zhí)行后續(xù)的步驟S415和S416。
S415,錄制進程輸出包含有確定出的游戲角色的信息的選擇界面。
S416,錄制進程確定游戲玩家在該選擇界面中選取出的待舉報的目標游戲角色。
S417,錄制進程將視頻文件緩存空間緩存的游戲畫面的畫面數據以及該目標游戲角色的信息發(fā)送給分析服務器。
在錄制進程確定當前結束游戲畫面的截取,且確定出目標游戲角色時,則可以將緩存空間中緩存的游戲畫面的數據以及該目標游戲角色的信息發(fā)送給分析服務器。
可選的,在本申請實施例中,在該步驟S403之后,終端還可以獲取游戲進程輸出的游戲畫面的分辨率,并按照該分辨率確定壓縮比,這樣,在將游戲畫面存儲到視頻文件緩存空間之前,可以基于該壓縮比對游戲畫面進行壓縮。
下面對本發(fā)明實施例提供的一種游戲數據獲取裝置進行介紹,下文描述的一種游戲數據獲取裝置可與上文描述的一種游戲數據獲取方法相互對應參照。
參見圖5,其示出了本申請一種游戲數據獲取裝置一個實施例的組成結構示意圖,所述裝置包括:
請求接收單元501,用于接收用戶輸入的違規(guī)舉報請求;
數據獲取單元502,用于響應于所述違規(guī)舉報請求,獲取游戲進程輸出的游戲畫面的畫面數據;
角色確定單元503,用于從所述游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色;
數據發(fā)送單元504,用于將所述畫面數據和所述目標游戲角色的信息發(fā)送給指定的分析服務器。
可選的,所述數據獲取單元具體為,用于截獲游戲進程當前待輸出的游戲畫面的畫面數據。
進一步的,所述數據獲取單元,可以包括:
數據獲取子單元,用于按照預設的時間間隔,截獲游戲進程當前待輸出的游戲畫面的畫面數據,直至檢測到當前時刻滿足預設的終止截取條件為止,得到至少一幀游戲畫面的畫面數據。
可選的,所述數據獲取子單元中的所述預設的終止截取條件,包括:當前時刻距離接收到所述違規(guī)舉報請求的時刻的時長達到預設時長;或者,當前時刻接收到終止截取指令。
可選的,所述數據獲取單元包括:
畫面請求子單元,用于向游戲進程發(fā)送游戲畫面請求,所述游戲畫面請求用于請求游戲進程返回所述游戲進程當前待輸出的游戲畫面的畫面數據;
畫面獲取子單元,用于獲取所述游戲進程返回的所述游戲畫面的畫面數據。
可選的,該裝置還可以包括:
共享內存創(chuàng)建單元,用于在畫面請求子單元游戲進程發(fā)送游戲畫面請求之前,創(chuàng)建與所述游戲進程之間共享的共享內存;
則畫面獲取子單元,具體為,用于從所述共享內存中讀取所述游戲進程返回的所述游戲畫面的畫面數據。
可選的,該裝置還可以包括:
緩存創(chuàng)建單元,用于在向游戲進程發(fā)送游戲畫面請求之前,創(chuàng)建用于存儲畫面數據的緩存空間;
數據轉存單元,用于在所述畫面獲取子單元從所述共享內存中讀取所述游戲進程返回的所述游戲畫面的畫面數據之后,將從所述共享內存中讀取到的所述游戲畫面的畫面數據存儲到所述緩存空間;
所述數據發(fā)送單元,用于當結束游戲畫面的截獲時,將緩存空間內緩存的所述游戲畫面的畫面數據以及所述目標游戲角色的信息發(fā)送給指定的分析服務器。
可選的,當緩存空間中存儲有至少一幀游戲畫面的畫面數據時,所述數據轉存單元,包括:
差異編碼單元,用于將從共享內存中讀取到的當前游戲畫面的畫面數據與緩存空間中存儲的所述當前游戲畫面之前的上一幀游戲畫面的畫面數據進行比較,并將所述當前游戲畫面與所述上一幀游戲畫面中存在差異的像素點編碼為待存儲的游戲畫面;
轉存子單元,用于將所述待存儲的游戲畫面的畫面數據存儲到所述緩存空間。
可選的,所述角色確定單元,包括:
角色獲取子單元,用于確定獲取到的游戲畫面中所包含的至少一個游戲角色;
界面輸出子單元,用于輸出包含所述至少一個游戲角色的選擇界面;
目標確定子單元,用于根據所述選擇界面的選擇操作,從所述至少一個游戲角色中確定出待分析的目標游戲角色。
本發(fā)明實施例還提供了一種終端,該終端可以實現上述所述的一種游戲數據獲取方法。
圖6示出了終端的硬件結構框圖,參照圖6,終端600可以包括:處理器601,通信接口602,存儲器603和通信總線604;
其中處理器601、通信接口602、存儲器603通過通信總線604完成相互間的通信;
可選的,通信接口602可以為通信模塊的接口,如GSM模塊的接口;
處理器601,用于執(zhí)行程序;
存儲器603,用于存放程序;
程序可以包括程序代碼,所述程序代碼包括計算機操作指令。
處理器601可能是一個中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
存儲器603可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
其中,程序可具體用于:
接收用戶輸入的違規(guī)舉報請求;
響應于所述違規(guī)舉報請求,獲取游戲進程輸出的游戲畫面的畫面數據;
從所述游戲畫面所包含的游戲角色中,確定出待分析的目標游戲角色;
將所述畫面數據和所述目標游戲角色的信息發(fā)送給指定的分析服務器。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域技術人員能夠實現或使用本發(fā)明。對這些實施例的多種修改對本領域技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
以上僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。