本發(fā)明涉及計算機領域,具體而言,涉及一種游戲中角色行為的生成方法和裝置。
背景技術:
目前,在電腦游戲當中,游戲玩家可以與電腦人工智能(Artificial Intelligence,簡稱為AI)進行交互或者對戰(zhàn)來體驗游戲,因此電腦AI能力的強弱對于游戲玩家來說至關重要。一個好的AI能夠盡可能地模擬出人的動作,機器學習是做出這樣的AI的目前最主要的一類方法。
一般來說,AI的實現(xiàn)有兩個階段:離線訓練階段和在線實施階段。離線訓練階段需要大量的有價值的訓練數(shù)據(jù),而游戲的真實日志數(shù)據(jù)通常遠遠達不到數(shù)據(jù)量上的要求,目前通過仿真的方法進行游戲模擬來產生日志數(shù)據(jù)是一種常用的做法。在線實施階段,為了快速準確地預測下一步的策略或者動作,基于當前的游戲信息進行仿真來模擬游戲進程從而進行評估也是一種常用的做法。游戲的仿真方法當前主要有蒙特卡洛樹搜索(Monte Carlo Tree Search,簡稱為MCTS)、行為樹等,例如,在棋類游戲中,利用MCTS來預測每一步的走子,在實時戰(zhàn)略游戲中,利用行為樹來控制NPC的下一步動作。但是這些仿真方法或者僅僅考慮了兩個角色進行對戰(zhàn),因而按照游戲的回合順序分別進行模擬,或者假設非玩家角色(Non-Player Character,簡稱為NPC)之間相互無關,或者存在一些簡單的單依賴關系,無論哪一種情況,對所有NPC同時進行模擬都無法有效地處理實時多人對戰(zhàn)游戲中角色兩兩之間均可能都有依賴關系的情況。
圖1是根據(jù)相關技術中的一種游戲中角色行為的生成方法的流程圖。如圖1所示,該游戲中角色行為的生成方法包括以下步驟:步驟S101′,仿真模擬A方的策略或動作,可以用MCTS等方法仿真;步驟S102′,判斷游戲是否結束,如果是,則結束,如果否,則轉至步驟S103′;步驟S103′,仿真模擬B方的策略或動作,可以用MCTS等方法仿真,步驟S104′,判斷游戲是否結束,如果是,則結束,如果否,則轉至步驟S101′,可以實現(xiàn)棋類游戲的仿真,但是無法有效地處理實時多人對戰(zhàn)游戲中角色兩兩之間存在相互依賴的復雜情況,游戲中角色行為生成的準確度較低。
圖2是根據(jù)相關技術中的另一種游戲中角色行為的生成方法的流程圖。如圖2所示,該游戲中角色行為的生成方法包括以下步驟:步驟S201′,同時仿真模擬所有NPC的策略或動作,可以用MCTS等方法仿真;步驟S202′,判斷游戲是否結束,如果是,則結束,如果否,則轉至步驟S201′,可以實現(xiàn)實時戰(zhàn)略類游戲的仿真,但是無法有效地處理實時多人對戰(zhàn)游戲中角色兩兩之間存在相互依賴的復雜情況,游戲中角色行為生成的準確度較低。
針對上述的游戲中角色行為生成的準確度較低的問題,目前尚未提出有效的解決方案。
技術實現(xiàn)要素:
本發(fā)明實施例提供了一種游戲中角色行為的生成方法和裝置,以解決游戲中角色行為生成的準確度較低的技術問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種游戲中角色行為的生成方法。該游戲中角色行為的生成方法包括:接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序;按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;將行為信息發(fā)送給游戲客戶端。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種游戲中角色行為的生成裝置。該游戲中角色行為的生成裝置接收單元,用于接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);獲取單元,用于從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序;模擬單元,用于按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;生成單元,用于使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;發(fā)送單元,用于將行為信息發(fā)送給游戲客戶端。
在本發(fā)明實施例中,接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,行為順序序列中記錄了多個角色的行為執(zhí)行順序;按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;使用更新后的行為預測模型生成行為信息,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;將行為信息發(fā)送給游戲客戶端,達到了對游戲中的角色行為進行生成的目的,及使模擬更加合理,從而提高了游戲中角色行為生成的準確度以及生成的效率,進而解決了游戲中角色行為生成的準確度較低的技術問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
圖1是根據(jù)相關技術中的一種游戲中角色行為的生成方法的流程圖;
圖2是根據(jù)相關技術中的另一種游戲中角色行為的生成方法的流程圖;
圖3是根據(jù)本發(fā)明實施例的游戲中角色行為的生成方法的硬件環(huán)境的示意圖;
圖4是根據(jù)本發(fā)明實施例的一種游戲中角色行為的生成方法的流程圖;
圖5是根據(jù)本發(fā)明實施例的一種按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的方法的流程圖;
圖6是根據(jù)本發(fā)明實施例的另一種按照行為執(zhí)行順序依次使用行為預測模型對所述多個角色進行仿真模擬的方法的流程圖;
圖7是根據(jù)本發(fā)明實施例的一種通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列的方法的流程圖;
圖8是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成方法的流程圖;
圖9是根據(jù)本發(fā)明實施例的一種得到行為序列庫的基于統(tǒng)計的方法的流程圖;
圖10是根據(jù)本發(fā)明實施例的一種通過MCTS進行模擬的方法的流程圖;
圖11是根據(jù)本發(fā)明實施例的一種游戲中的交互方法的流程示意圖;
圖12是根據(jù)本發(fā)明實施例的一種游戲中角色行為的生成裝置的示意圖;
圖13是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成裝置的示意圖;
圖14是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成裝置的示意圖;
圖15是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成裝置的示意圖;以及
圖16是根據(jù)本發(fā)明實施例的一種終端的結構框圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
實施例1
根據(jù)本發(fā)明實施例,提供了一種游戲中角色行為的生成方法的實施例。
可選地,在本實施例中,上述游戲中角色行為的生成方法可以應用于如圖3所示的由服務器302和終端304所構成的硬件環(huán)境中。圖3是根據(jù)本發(fā)明實施例的游戲中角色行為的生成方法的硬件環(huán)境的示意圖。如圖3所示,服務器302通過網絡與終端304進行連接,上述網絡包括但不限于:廣域網、城域網或局域網,終端304并不限定于PC、手機、平板電腦等。本發(fā)明實施例的游戲中角色行為的生成方法可以由服務器302來執(zhí)行,也可以由終端304來執(zhí)行,還可以是由服務器302和終端304共同執(zhí)行。其中,終端304執(zhí)行本發(fā)明實施例的游戲中角色行為的生成方法也可以是由安裝在其上的客戶端來執(zhí)行。
圖4是根據(jù)本發(fā)明實施例的一種游戲中角色行為的生成方法的流程圖。如圖4所示,該游戲中角色行為的生成方法可以包括以下步驟:
步驟S402,接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù)。
在本申請上述步驟S402提供的技術方案中,接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài)。
游戲客戶端將當前游戲的狀態(tài)數(shù)據(jù)通過網絡發(fā)送到游戲模擬服務器上,游戲模擬服務器接收客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù)。在當前游戲中,存在多個角色,可以將多個角色的當前操作狀態(tài)的狀態(tài)數(shù)據(jù)、當前動作狀態(tài)的狀態(tài)數(shù)據(jù)等當前游戲的狀態(tài)數(shù)據(jù)發(fā)送到游戲模擬服務器上,游戲模擬服務器進而接收游戲客戶端發(fā)送的當前操作狀態(tài)的狀態(tài)數(shù)據(jù)、當前動作狀態(tài)的狀態(tài)數(shù)據(jù)等當前游戲的狀態(tài)數(shù)據(jù)。
可選地,在當前游戲中存在A角色、B角色、C角色、D角色,A角色的當前狀態(tài)為等待狀態(tài),B角色的當前狀態(tài)為攻打狀態(tài),C角色的當前狀態(tài)為逃跑狀態(tài),D角色的當前狀態(tài)為處于具體位置的位置狀態(tài),接收A角色、B角色、C角色、D角色的當前狀態(tài)的狀態(tài)數(shù)據(jù)。
步驟S404,從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列。
在本申請上述步驟S404提供的技術方案中,從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序。
游戲的狀態(tài)數(shù)據(jù)用于指示游戲中多個角色的狀態(tài),包括了每一個角色行動的時間,游戲中多個角色的狀態(tài)隨著時間的持續(xù)在游戲環(huán)境中會有不同的狀態(tài),比如,A角色在最近一次行動的時間的狀態(tài)為逃跑狀態(tài),B角色在最近一次行動的時間的狀態(tài)為攻打狀態(tài),A角色在之后行動的時間的狀態(tài)可能為攻打狀態(tài),B角色在下一時刻的狀態(tài)可能為逃跑狀態(tài)。當前游戲的狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài),包括了每一個角色最近一次行動的時間。在接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù)之后,便可以確定當前游戲中多個角色的當前狀態(tài),進而可以確定每一個角色最近一次行動的時間。
從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列。其中,從當前狀態(tài)開始,也即,從每一個角色最近一次行動的時間開始,而不考慮當前游戲中多個角色在歷史行動的時間的狀態(tài),當前游戲相關的行為順序序列為本局游戲相關的行為順序序列。
從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,也即,從每一個角色最近一次行動的時間開始,從行為順序庫中獲取與本局游戲相關的行為順序序列,服務器在從行為順序庫中獲取與本局游戲相關的行為順序序列的時間是從當前狀態(tài)對應的最近一次行動的時間開始的。該實施例的行為順序庫為預先獲取到的存放行為順序序列的數(shù)據(jù)庫。其中,行為順序序列,是指各個角色依次行動的一種順序,記錄了多個角色的行為執(zhí)行順序,比如,在當前游戲中某一方存在A角色、B角色、C角色和D角色,A角色、B角色、C角色和D角色為一個角色組合{A,B,C,D},角色組合是指該序列中所包含的角色ID的不可重復的集合。A角色、B角色、C角色和D角色依次行動。如果從極小的時間粒度上去看,游戲中不同角色的行為其實是存在先后順序關系的。
可選地,在多人對戰(zhàn)游戲中,角色的組合是多樣化的,歷史積累大量的游戲日志數(shù)據(jù),一般是按照某個幀率(例如每秒60幀)來記錄的,通常在每一幀中最多只有一個角色在行動,這樣根據(jù)幀與幀之間的順序關系,以及每一幀對應的有行為的角色,就可以得到不同角色的行為順序序列。在得到不同角色的行為順序序列之后,對大量的角色組合和與角色組合相對應的行為順序序列進行統(tǒng)計,對相同的角色組合,保留出現(xiàn)次數(shù)最多的行為順序序列,從而得到行為順序庫。除了得到行為順序序列之外,每一個角色的行為頻率、行為失誤率等參數(shù)也可以一并統(tǒng)計得到。
從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列?,F(xiàn)對當前游戲相關的行為順序序列介紹如下:
第一步,在步驟S402中獲取狀態(tài)數(shù)據(jù),該狀態(tài)數(shù)據(jù)包括每一個角色(無論是否AI控制)最近一次行動的時間(這個狀態(tài)數(shù)據(jù)至少要傳過來);
第二步,獲取與每一方的角色組合相同的行為順序序列;
第三步,結合行為順序序列中的每個角色的“行為頻率”參數(shù)(這個參數(shù)需要在統(tǒng)計階段記錄下來)和第一步中的“最近一次行動的時間”,將多方對應的行為順序序列拼接在一起,形成包含游戲中所有角色在內的完整行為順序序列。例如游戲有兩方:A、B和C、D,對應的行為順序序列可以為AB和DC,拼接后形成的完整行為順序序列可以為ADCB;
第四步,基于上述的完整行為順序序列再開始后續(xù)的仿真模擬以及更新、預測等操作。
在從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列之后,對行為順序序列以隊列等形式存儲,存儲行為順序序列中的每一個角色,可選地,至少存儲相關的角色的ID,存儲的參數(shù)還可以包括最后一次行為的時間、行為頻率、行為失誤率等。
步驟S406,按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型。
在本申請上述步驟S406提供的技術方案中,按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的。
在從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列之后,依次對每一個角色進行仿真模擬,也即,對整個游戲進程的仿真模擬,該仿真模擬可以采用MCTS、行為樹等方法。
可選地,以MCTS方法為例,從當前狀態(tài)開始,使用行為預測模型,該預測模型可以為隨機預測模型,按照已經確定的行為執(zhí)行順序對多個角色進行仿真模擬,依次預測每一個角色的行為并計算行為對當前游戲的影響;在仿真模擬結束之后,更新行為預測模型,如果仿真模擬沒有結束,則繼續(xù)對需要仿真模擬的對象進行仿真模擬,直至仿真模擬完成。
在按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬之后,根據(jù)模擬結果來對行為預測模型進行更新,比如,當模擬結果判定為勝,則增大預測模型中對應的預測結果出現(xiàn)的概率,當模擬結果判定為負,則減小預測模型中對應的預測結果出現(xiàn)的概率,從而實現(xiàn)對行為預測模型的更新,重復執(zhí)行上述過程多次,直至達到在MCTS方法中設定的執(zhí)行次數(shù),實現(xiàn)了對游戲進程進行仿真模擬的目的。
可選地,完整的模擬過程為依次模擬角色行為,在判斷是否需要進行下一個角色的模擬以及剛模擬完的角色是否要插入隊列的時候,需要先判斷當前模擬是否終止,例如判斷游戲是否結束,或者是否達到某個分值等。當整個模擬的過程終止之后,才會得到當前的模擬結果,當前的模擬結果可以為勝利,失敗等游戲結果,并根據(jù)這個游戲結果來更新行為預測模型。但在得到當前的模擬結果之前,在依次對角色進行模擬的每一次,都要判斷是否達到用于判斷模擬是否終止的條件。
步驟S408,使用更新后的行為預測模型生成行為信息。
在本申請上述步驟S408提供的技術方案中,使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為。
可選地,判斷按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的次數(shù)是否達到預定的模擬次數(shù),如果按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的次數(shù)達到預定的模擬次數(shù),使用最新的行為預測模型預測當前角色中的一個或多個在當前狀態(tài)之后的下一個行為,也即,以行為預測模型中的最大概率的行為來模擬當前角色中的一個或多個在當前狀態(tài)之后的下一個行為,該行為包括客戶端執(zhí)行的策略或動作。
可選地,該實施例中的預定的模擬次數(shù)為使用MCTS方法來完成仿真模擬的次數(shù),與MCTS方法中設定的執(zhí)行次數(shù)不一樣。
步驟S410,將行為信息發(fā)送給游戲客戶端。
在本申請上述步驟S410提供的技術方案中,將行為信息發(fā)送給游戲客戶端。
在使用更新后的行為預測模型生成行為信息之后,將行為信息發(fā)送給游戲客戶端,客戶端執(zhí)行行為信息中的策略或動作。可選地,判斷游戲是否結束,如果判斷出游戲結束,則結束游戲,如果判斷出游戲沒有結束,則執(zhí)行步驟S402,接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù)。其中,判斷游戲是否結束,是指根據(jù)游戲本身程序的設定來進行判斷,比如,當擊敗所有對手,或者占領對手領地,或者比分率先達到某一個分值時,確定游戲結束。
通過上述步驟S402至步驟S410,通過接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序;按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;將行為信息發(fā)送給游戲客戶端,可以解決游戲中角色行為生成的準確度較低的技術問題,進而達到提高游戲中角色行為生成的準確度和生產的效率的技術效果。
作為一種可選的實施例,步驟S406,按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型包括:重復執(zhí)行以下步驟,直到達到預定的模擬次數(shù):在本次模擬中按照行為執(zhí)行順序依次從多個角色中獲取當前待模擬的角色,重復執(zhí)行圖5所示的步驟。
圖5是根據(jù)本發(fā)明實施例的一種按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的方法的流程圖。如圖5所示,該步驟包括:
步驟S501,使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬。
在本申請上述步驟S501提供的技術方案中,使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬,對當前待模擬的角色進行模擬不是針對一個角色的,而是針對所有角色的,游戲是一步步按照預測模擬進行下去,最終會產生一個游戲結果,比如,勝利、失敗等結果。
步驟S502,判斷對當前待模擬的角色進行模擬之后是否得到用于指示當前游戲結束的當前的模擬結果。
在本申請上述步驟S502提供的技術方案中,用于指示當前游戲結束的當前的模擬結果可以為游戲結束,或者是到某個分值的情況。
步驟S503,若得到當前的模擬結果,則結束本次模擬,并根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新。
在本申請上述步驟S503提供的技術方案中,在判斷對當前待模擬的角色進行模擬之后是否得到用于指示當前游戲結束的當前的模擬結果之后,若得到當前的模擬結果,則結束本次模擬,并根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新,其中,模擬結果包括每次模擬得到的當前的模擬結果,更新后的行為預測模型是使用最后一次模擬得到的當前的模擬結果對倒數(shù)第二次模擬后更新得到的行為預測模型進行更新得到的。
可選地,從當前狀態(tài)開始,模擬游戲的進程,使用行為預測模型按照選定的行為順序序列,依次預測每一個角色的行為并計算行為對當前游戲的影響,該行為預測模型可以為隨機預測模型。計算行為對當前游戲的影響是根據(jù)游戲本身的設計來進行的。判斷該次模擬是否達到模擬結束條件,如果該次模擬達到模擬結束條件,根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新,比如,當模擬結果判定為勝,則增大上次模擬后更新得到的行為預測模型中對應的預測結果出現(xiàn)的概率,當模擬結果判定為負則減小上次模擬后更新得到的行為預測模型中對應的預測結果出現(xiàn)的概率。如果該次模擬沒有達到模擬結束條件,則繼續(xù)使用行為預測模型按照選定的行為順序序列,依次預測每一個角色的行為并計算行為對當前游戲的影響。可選地,模擬結束條件可以是模擬直至游戲結束,或者是模擬達成事先指定的模擬完成條件,比如,達到一定的模擬步數(shù)則確定模擬完成。如果模擬未完成則繼續(xù)模擬,直至完成模擬。
在根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新之后,判斷按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的次數(shù)是否達到預定的模擬次數(shù),如果按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的次數(shù)達到預定的模擬次數(shù),則使用最新的行為預測模型預測當前角色的行為,也即,以行為預測模型中的最大概率的行為來模擬當前角色的行為。其中,預定的模擬次數(shù)是事先人工指定的一個參數(shù)。如果按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬的次數(shù)未達到預定的模擬次數(shù),那么需要繼續(xù)按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬。
該實施例通過重復執(zhí)行以下步驟,直到達到預定的模擬次數(shù):在本次模擬中按照行為執(zhí)行順序依次從多個角色中獲取當前待模擬的角色,重復執(zhí)行以下步驟:使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬;判斷對當前待模擬的角色進行模擬之后是否得到用于指示當前游戲結束的當前的模擬結果;若得到當前的模擬結果,則結束本次模擬,并根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新,達到了按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,進而達到提高游戲中角色行為生成的準確度和生成的效率的技術效果。
作為一種可選的實施例,按照行為執(zhí)行順序從多個角色中獲取當前待模擬的角色包括:從執(zhí)行隊列中取出位于隊首的當前待模擬的角色,其中,多個角色按照行為執(zhí)行順序存入執(zhí)行隊列。
行為順序序列中的多個角色以執(zhí)行隊列的形式存儲,行為順序序列中記錄了多個角色的行為執(zhí)行順序。從執(zhí)行隊列中取出位于隊首的當前待模擬的角色,也即,從執(zhí)行隊列中獲取第一個需要仿真模擬的對象進行仿真模擬。仿真模擬可以采用MCTS、行為樹等方法。MCTS仿真是指對游戲進行事先指定的多次模擬并對行為預測模型進行更新,利用最新的行為預測模型來決定角色當前應當采取的策略,一次來模擬當前角色的行為,利用行為樹進行仿真可以按照行為樹提供的復雜的規(guī)則來決定角色當前應當采取的策略,以此來模擬當前角色的行為,其中,復雜的規(guī)則一般是人工定義的,比如,當血量低于某一個閾值時,角色應當朝哪一個方向逃離危險區(qū)域多少距離。采用MCTS、行為樹等方法進行仿真模擬的計算耗時低,仿真模擬效果好。
作為一種可選的實施例,在使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬,得到當前的模擬結果之前,判斷模擬是否結束,如果模擬沒有結束,將已執(zhí)行完模擬的當前待模擬的角色重新插入到執(zhí)行隊列中,也即,插入隊列操作是在得到最終模擬結果之前完成的,在所有角色都經過多次模擬之后才能得到游戲的結果。
圖6是根據(jù)本發(fā)明實施例的另一種按照行為執(zhí)行順序依次使用行為預測模型對所述多個角色進行仿真模擬的方法的流程圖。如圖6所示,該按照行為執(zhí)行順序依次使用行為預測模型對所述多個角色進行仿真模擬的方法還包括以下步驟:
步驟S601,在未得到用于指示當前游戲結束的當前的模擬結果的情況下,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列的隊尾;或者,獲取當前待模擬的角色在當前狀態(tài)下的最后一次行為的執(zhí)行時間T1,以及預先記錄的行為頻率所對應的間隔時間T2。
在本申請上述步驟S601提供的技術方案中,在使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬之后,在未得到用于指示當前游戲結束的當前的模擬結果的情況下,將已經仿真模擬完畢的當前待模擬的角色重新插入該執(zhí)行隊列,可以將已經仿真模擬完畢的對象根據(jù)行為順序序列中的行為執(zhí)行順序依次插入執(zhí)行隊列的隊尾,或者獲取根據(jù)每個角色最后一次行為的時間T1以及根據(jù)行為頻率得到的行為間隔時間T2,其中,行為頻率與最后一次行為相對應。
步驟S602,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列中與(T1+T2)對應的位置上。
在本申請上述步驟S602提供的技術方案中,在將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列的隊尾;或者,獲取當前待模擬的角色在當前狀態(tài)下的最后一次行為的執(zhí)行時間T1,以及預先記錄的行為頻率所對應的間隔時間T2之后,計算其下一次行為所發(fā)生的時間T1+T2,然后按照時間T1+T2插入到執(zhí)行隊列中相應的位置。
該實施例通過在未得到用于指示當前游戲結束的當前的模擬結果的情況下,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列的隊尾;或者,獲取當前待模擬的角色在當前狀態(tài)下的最后一次行為的執(zhí)行時間T1,以及預先記錄的行為頻率所對應的間隔時間T2,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列中與(T1+T2)對應的位置上,達到了提高游戲中角色行為生成的準確度和生成的效率的技術效果。
作為一種可選的實施例,在從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列之前,通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列,其中,歷史游戲日志中的每條游戲日志記錄是按照預定幀率記錄的,預定幀率下的每一幀中最多只有一個角色在執(zhí)行行為。
從游戲日志數(shù)據(jù)庫中依次讀取一條歷史游戲日志;每一條歷史游戲日志均按照預定幀率來記錄的,其中每一幀中至多只有一個角色在行動。依次從該條歷史游戲日志的每一幀中抽取出有行為記錄的角色及其相關數(shù)據(jù),并按時間順序排列成一個游戲日志完整序列,可以從第一幀開始,把每一幀中有行為記錄的角色和相關數(shù)據(jù)抽取出來,相關數(shù)據(jù)包括角色屬于哪一方、角色的行為頻率、角色的行為失誤率等數(shù)據(jù),然后按照時間順序排列,得到游戲日志完整序列。將上述游戲日志完整序列按照各方進行分解,產生各方的序列;從上述各方序列的第一個角色開始,依次找出排列中各方的最小全序列;每一方的全序列是指該方的某一包含該方所有的角色的連續(xù)子序列,連續(xù)子序列是指該子序列對應的角色序列字符串要能被該方序列對應的角色序列字符串所包含。其中,序列有包含關系,如果一條序列對應的角色序列字符串被另一條序列對應的角色序列字符串所包含,則稱前者被后者包含,或者稱前者小于后者。
每一條歷史游戲日志會產生一個游戲日志完整序列,每一個游戲日志完整序列會產生多個各方序列,每一個各方序列會產生多個最小全序列,從而對產生的所有的最小全序列進行計數(shù)。對包含角色組合相同的最小全序列,將次數(shù)最多的最小全序列加入行為順序庫,從而獲取行為順序庫,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列。
作為一種可選的實施例,通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列包括:從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列;從游戲日志完整序列中獲取每個角色集合的子序列;從每個角色集合的子序列中得到角色集合的最小全序列;在歷史游戲日志的所有游戲日志記錄的最小全序列中,對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列。
圖7是根據(jù)本發(fā)明實施例的一種通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列的方法的流程圖。如圖7所示,該通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列的方法以下步驟:
步驟S701,從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列。
在本申請上述步驟S701提供的技術方案中,從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列,其中,游戲日志完整序列是按照時間順序對每條游戲日志記錄中的所有幀中的有行為記錄的角色進行排列得到的。
依次從每條游戲日志記錄中的每一幀中抽取出有行為記錄的角色及其相關數(shù)據(jù),并按時間順序排列成一個游戲日志完整序列。
步驟S702,從游戲日志完整序列中獲取每個角色集合的子序列。
在本申請上述步驟S702提供的技術方案中,從游戲日志完整序列中獲取每個角色集合的子序列,其中,多個角色被劃分為至少兩個角色集合,每個角色集合的子序列是按照時間順序對所有幀中屬于該角色集合的、有行為記錄的角色進行排列得到的。
從游戲日志完整序列的第一幀開始,把每一幀中有行為記錄的角色和相關數(shù)據(jù)抽取出來,相關數(shù)據(jù)包括角色屬于哪一方,比如,有的游戲中,角色會被劃分為多個不同的陣營,每一個陣營稱為一方,為角色集合的子序列。相關數(shù)據(jù)還包括角色的行為頻率、角色的行為失誤率等數(shù)據(jù),然后按照時間順序排列對所有幀中屬于該角色集合的、有行為記錄的角色進行排列。
舉例而言,假設該條行為記錄中一共包含6個角色,記為A、B、C、D、E、F,那么,每一幀中可以至多抽取到其中一個角色的相關數(shù)據(jù),可以用多維數(shù)組的方式記錄下來,仍以A、B、C、D、E、F來代表相應的數(shù)組。假設該條日志數(shù)據(jù)中有20幀記錄了角色的行為,那么按照時間順序排列得到的游戲日志完整序列類似于ACBBDEFABCDFEABCDFEC形式。
將上述游戲日志完整序列按照各個就是集合進行分解,產生每個角色集合的子序列。假設上述例子中角色A、C、E為一方,角色B、D、F為另一方,那么序列ACBBDEFABCDFEABCDFEC就被分解成兩個子序列:ACEACEACEC和BBDFBDFBDF。
步驟S703,從每個角色集合的子序列中得到角色集合的最小全序列。
在本申請上述步驟S703提供的技術方案中,從每個角色集合的子序列中得到角色集合的最小全序列,其中,最小全序列包括:子序列中的連續(xù)字符串,其中,連續(xù)字符串僅包括角色集合中的每個角色的標識;在歷史游戲日志的所有游戲日志記錄的最小全序列中,對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列。從上述每個角色集合的子序列的第一個角色開始,依次找出排列中各方的最小全序列;在每個角色集合的子序列中,把每個角色集合的最小全序列都找出來。每個角色集合的全序列是指該角色集合的某一包含該角色集合中所有的角色的連續(xù)子序列,比如,對于角色集合的ACEACEACEC序列而言,子序列中的連續(xù)字符串ACE是全序列,而AEC、AC均不是。序列有包含關系,如果一條序列對應的角色序列字符串被另一條序列對應的角色序列字符串所包含,則稱前者被后者包含,或者稱前者小于后者。比如,AEC被CAECE包含,或者AEC小于CAECE。最小全序列是指該全序列在包含關系中是最小的全序列。依次是指從角色集合的序列的第一個角色開始遍歷直至該角色集合的序列的最后一個角色。比如,以角色集合的ACEACEACEC為例,最小全序列為:ACE、CEA、EAC。
對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列,將次數(shù)最多的最小全序列加入行為序列庫。其中,角色組合是指該序列中所包含的角色ID的不可重復的集合,比如,CAECE的角色組合是集合{C,A,E}。
該實施例通過從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列,其中,游戲日志完整序列是按照時間順序對每條游戲日志記錄中的所有幀中的有行為記錄的角色進行排列得到的;從游戲日志完整序列中獲取每個角色集合的子序列,其中,多個角色被劃分為至少兩個角色集合,每個角色集合的子序列是按照時間順序對所有幀中屬于該角色集合的、有行為記錄的角色進行排列得到的;從每個角色集合的子序列中得到角色集合的最小全序列,其中,最小全序列包括:子序列中的連續(xù)字符串,其中,連續(xù)字符串僅包括角色集合中的每個角色的標識;在歷史游戲日志的所有游戲日志記錄的最小全序列中,對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列,實現(xiàn)了通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列的目的,進而達到了提高游戲中角色行為生成的準確度和生成的效率的技術效果。
作為一種可選的實施例,當前游戲包括實時戰(zhàn)略類游戲,多個角色被劃分為至少兩個角色集合,其中,至少兩個角色集合在實時戰(zhàn)略類游戲中是對立的。
本發(fā)明實施例通過行為順序序列,使得對實時多人對戰(zhàn)游戲中多個角色的仿真模擬變得可行,這樣的方式與實時多人對戰(zhàn)游戲的特點更為貼近,相對更加合理,而且計算耗時也非常低,再結合MCTS、行為樹等模擬仿真方法,不僅可以使得AI更為接近甚至超越人類選手的水平,提升AI的能力,而且整個模擬過程可以很好的滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求,達到了提高游戲中角色行為生成的準確度和生成的效率的技術效果,更好地提高游戲玩家的體驗。
實施例2
下面結合優(yōu)選的實施例對本發(fā)明的技術方案進行說明。
本發(fā)明實施例提出了一種實時多人對戰(zhàn)游戲中基于順序的仿真方法,能夠針對實時多人對戰(zhàn)游戲這種復雜情況做出更合理的模擬,更好地提升AI的能力,并且能滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求。
圖8是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成方法的流程圖。如圖8所示,該游戲中角色行為的生成方法包括以下步驟:
步驟S801,從行為順序庫中取出本局游戲相關的行為順序序列。
從行為順序庫中取出本局游戲相關的行為順序序列,行為順序序列數(shù)據(jù)庫中的行為順序序列可以通過對歷史的游戲日志進行統(tǒng)計等方法得到。
行為序列庫是存放行為順序數(shù)據(jù)的數(shù)據(jù)庫。其中,行為順序,是指各個角色依次行動的一種順序,如果從極小的時間粒度上去看,游戲中不同角色的行為其實是存在先后順序關系的。在多人對戰(zhàn)游戲里,角色的組合是多樣化的,可以通過基于統(tǒng)計的辦法得到不同角色組合中各個角色的行為順序。
可選地,歷史積累的大量游戲日志數(shù)據(jù),一般是按照某個幀率(例如每秒60幀)來記錄的,通常在每一幀中最多只有一個角色在行動,這樣一來,根據(jù)幀與幀之間的順序關系,以及每一幀對應的有行為的角色,就可以得到不同角色的行為順序序列,再對大量的角色組合和對應的行為順序序列進行統(tǒng)計,對相同的角色組合,保留出現(xiàn)次數(shù)最多的行為順序序列,就可得到行為序列庫。不僅如此,除了得到行為順序序列外,每一個角色的行為頻率、行為失誤率等參數(shù)也可以一并統(tǒng)計得到,從而實現(xiàn)從行為順序庫中取出本局游戲相關的行為順序序列。
本局游戲相關的行為順序序列的實現(xiàn)過程如下:
第一步,在中獲取狀態(tài)數(shù)據(jù),該狀態(tài)數(shù)據(jù)包括每一個角色(無論是否AI控制)最近一次行動的時間(這個狀態(tài)數(shù)據(jù)至少要傳過來);
第二步,獲取與每一方的角色組合相同的行為順序序列;
第三步,結合行為順序序列中的每個角色的“行為頻率”參數(shù)(這個參數(shù)需要在統(tǒng)計階段記錄下來)和第一步中的“最近一次行動的時間”,將多方對應的行為順序序列拼接在一起,形成包含游戲中所有角色在內的完整行為順序序列。例如游戲有兩方:A、B和C、D,對應的行為順序序列可以為AB和DC,拼接后形成的完整行為順序序列可以為ADCB;
第四步,基于上述的完整行為順序序列再開始后續(xù)的仿真模擬以及更新、預測等操作。
步驟S802,將該行為順序序列以隊列等形式存儲。
將該行為順序序列以隊列等形式存儲,該隊列也即執(zhí)行隊列。對于行為順序序列中的每一個對象(即角色),至少需要存儲相關的角色的ID,除此之外,存儲的參數(shù)還可以包含:最后一次行為的時間、行為頻率、行為失誤率等。
步驟S803,從該隊列中取出第一個需要仿真模擬的對象進行仿真模擬。
從該隊列中取出第一個需要仿真模擬的對象進行仿真模擬,仿真模擬可以采用MCTS、行為樹等方法。
步驟S804,判斷模擬是否結束。
判斷模擬是否結束,如果判斷出模擬結束,則結束模擬,如果判斷出模擬沒有結束,則執(zhí)行步驟S805。其中,判斷模擬是否結束,是指根據(jù)游戲本身程序的設定來進行判斷,比如,擊敗所有對手,或者占領對手領地,或者比分率先達到某一個分值等。
步驟S805,將已經仿真模擬完畢的對象重新插入該隊列。
將已經仿真模擬完畢的對象重新插入該隊列,執(zhí)行步驟S803。
已經模擬完畢的對象重新插入該隊列比如,可以根據(jù)行為順序序列中的順序依次插入隊列尾部,或者根據(jù)每個角色最后一次行為的時間T1以及根據(jù)行為頻率得到的行為間隔時間T2,計算其下一次行為所發(fā)生的時間T1+T2,然后按照時間插入到隊列中相應的位置。
該實施例從行為順序庫中取出本局游戲相關的行為順序序列,將該行為順序序列以隊列等形式存儲,從該隊列中取出第一個需要仿真模擬的對象進行仿真模擬,判斷游戲是否結束,如果判斷出游戲結束,則結束游戲,如果判斷出游戲沒有結束,將已經仿真模擬完畢的對象重新插入該隊列,從而實現(xiàn)了通過順序序列的方式進行仿真模擬的目的。這樣的方式與實時多人對戰(zhàn)游戲的特點更為貼近,相對更加合理,而且計算耗時也非常低,再結合上述提及的業(yè)界主流的仿真模擬方法,不僅可以使得AI更為接近甚至超越人類選手的水平,提升AI的能力,而且整個模擬過程可以很好的滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求。
圖9是根據(jù)本發(fā)明實施例的一種得到行為序列庫的基于統(tǒng)計的方法的流程圖。如圖9所示,該得到行為序列庫的基于統(tǒng)計的方法包括以下步驟:
步驟S901,從游戲日志數(shù)據(jù)庫中依次讀取一條游戲日志數(shù)據(jù)。
每一條游戲日志數(shù)據(jù)均按照某個給定的幀率來記錄的,其中每一幀中至多只有一個角色在行動。
步驟S902,依次從該條日志數(shù)據(jù)的每一幀中抽取出有行為記錄的角色及其相關數(shù)據(jù),并按時間順序排列成一個游戲日志完整序列。
從第一幀開始,把每一幀中有行為記錄的角色和相關數(shù)據(jù)抽取出來,相關數(shù)據(jù)包括角色屬于哪一方(有的游戲中,角色會被劃分為多個不同的陣營,每一個陣營稱為一方)、角色的行為頻率、角色的行為失誤率等數(shù)據(jù),然后按照時間順序排列。假設該條游戲記錄中一共包含6個角色,記為A、B、C、D、E、F,那么,每一幀中可以至多抽取到其中一個角色的相關數(shù)據(jù),可以用多維數(shù)組的方式記錄下來,以A、B、C、D、E、F來代表相應的數(shù)組。假設該條日志數(shù)據(jù)中有20幀記錄了角色的行為,那么按照時間順序排列得到的游戲日志完整序列類似于ACBBDEFABCDFEABCDFEC這樣的形式。
步驟S903,將上述游戲日志完整序列按照各方進行分解,產生各方的序列。
假設上述例子中角色A、C、E為一方,角色B、D、F為另一方,那么序列ACBBDEFABCDFEABCDFEC就被分解成兩個序列:ACEACEACEC和BBDFBDFBDF。
步驟S904,從上述各方序列的第一個角色開始,依次找出排列中各方的最小全序列。
每一方的全序列是指該方的某一包含該方所有的角色的連續(xù)子序列,連續(xù)子序列是指該子序列對應的角色序列(序列中只保留角色ID)字符串要能被該方序列對應的角色序列字符串所包含,比如,對于ACEACEACEC這個序列而言,ACE是全序列,而AEC、AC均不是。序列有包含關系:如果一條序列對應的角色序列字符串被另一條序列對應的角色序列字符串所包含,則稱前者被后者包含,或者稱前者小于后者。比如,AEC被CAECE包含,或者AEC小于CAECE。最小是指該全序列在包含關系中是最小的。依次是指從各方序列的第一個角色開始遍歷直至該方序列的最后一個角色。以ACEACEACEC為例,找到的最小全序列為:ACE、CEA、EAC。
步驟S905,統(tǒng)計游戲日志數(shù)據(jù)庫中產生的所有的最小全序列的次數(shù)。
每一條游戲日志會產生一個游戲日志完整序列,每一個游戲日志完整序列會產生多個各方序列,每一個各方序列會產生多個最小全序列。
步驟S906,對包含角色組合相同的最小全序列,將次數(shù)最多的最小全序列加入行為序列庫。
對包含角色組合相同的最小全序列,將次數(shù)最多的最小全序列加入行為序列庫,角色組合是指該序列中所包含的角色ID的不可重復的集合,比如,CAECE的角色組合是集合{C,A,E}。
該實施例的本局游戲相關的行為順序序列,是指行為順序序列數(shù)據(jù)庫中角色組合與本局游戲中AI控制的每一方的角色組合(控制多方即多個角色組合)相同的行為順序序列。
在游戲進行的同時,還可以實時分析對手的行為順序序列與行為頻率、行為失誤率等,對AI的行為順序序列和其它參數(shù)進行調整,使得AI的能力與對手更為接近,不會比對手太強或太弱。
圖10是根據(jù)本發(fā)明實施例的一種通過MCTS進行模擬的方法的流程圖。如圖10所示,該通過MCTS進行模擬的方法包括以下步驟:
步驟S1001,從當前狀態(tài)開始,使用行為預測模型依照選定的行為順序序列,依次預測每一個角色的行為并計算行為對當前游戲的影響。
從當前狀態(tài)開始,使用行為預測模型按照選定的行為順序序列,依次預測每一個角色的行為并計算行為對當前游戲的影響。行為預測模型可以為隨機預測模型。
利用MCTS仿真是指進行多次(事先指定的游戲的模擬次數(shù))的模擬。計算行為對當前游戲的影響是根據(jù)游戲本身的設計來進行的。計算行為對當前游戲的影響是根據(jù)游戲本身的設計來進行的。
步驟S1002,判斷該次模擬是否結束。
判斷該次模擬是否結束,如果判斷出該次模擬結束,執(zhí)行步驟S1003,如果判斷出該次模擬沒有結束,執(zhí)行步驟S1001。
模擬結束條件可以是模擬直至游戲結束,或者是模擬達成事先指定的模擬完成條件,比如,達到一定的模擬步數(shù)等。如果模擬未完成則繼續(xù)模擬,直至完成模擬。
步驟S1003,更新行為預測模型。
在每次模擬結束之后,根據(jù)模擬結果來對行為預測模型進行更新。比如,當模擬結果判定為勝時,則增大預測模型中對應的預測結果出現(xiàn)的概率,當模擬結果判定為負時,則減小預測模型中對應的預測結果出現(xiàn)的概率,從而實現(xiàn)了對預測行為模型的更新。
步驟S1004,判斷是否達到模擬次數(shù)。
在更新行為預測模型之后,判斷是否達到模擬次數(shù),如果判斷出達到模擬次數(shù),執(zhí)行步驟S1005,如果判斷出未達到模擬次數(shù),執(zhí)行步驟S1001。
模擬次數(shù)是事先人工指定的一個參數(shù)。如果沒有達到模擬次數(shù)的要求,那么需要繼續(xù)模擬。
步驟S1005,使用最新的行為預測模型預測當前角色的行為。
即以行為預測模型中的最大概率的行為來模擬當前角色的行為。
本發(fā)明實施例的游戲中角色行為的生成方法,能夠針對實時多人對戰(zhàn)游戲做出更合理的模擬,使得AI更接近甚至超越人類選手的水平,更好的提升AI的能力,并且能滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求,提高了游戲中角色行為的生成的準確度和生成的效率,進而提高了游戲玩家的用戶體驗。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例3
本發(fā)明實施例的應用環(huán)境可以但不限于參照上述實施例中的應用環(huán)境,本實施例中對此不再贅述。本發(fā)明實施例提供了用于實施上述游戲中角色行為的生成方法的一種可選的具體應用。
發(fā)明提出的基于順序的仿真方法能夠針對實時多人對戰(zhàn)游戲這種復雜情況做出更合理的模擬,更好的提升AI的能力,并且能滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求。
本發(fā)明提出一種實時多人對戰(zhàn)游戲中基于順序的仿真方法,能夠針對實時多人對戰(zhàn)游戲這種復雜情況做出更合理的模擬,更好的提升AI的能力,并且能滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求。
本技術主要應用在實時多人對戰(zhàn)游戲的人機對戰(zhàn)模式,提升游戲AI的能力,優(yōu)化玩家的用戶體驗。
圖11是根據(jù)本發(fā)明實施例的一種游戲中的交互方法的流程示意圖。如圖11所示,該游戲過程中的交互方法包括以下步驟:
步驟S1101,游戲客戶端將當前游戲的狀態(tài)數(shù)據(jù)通過網絡發(fā)送到游戲模擬服務器上。
步驟S1102,游戲模擬服務器通過仿真方法選擇最佳的策略或動作并返回給游戲客戶端。
步驟S1103,客戶端執(zhí)行返回的策略或動作。
在該實施例中,游戲客戶端實時上傳狀態(tài)數(shù)據(jù)至游戲模擬服務器,該狀態(tài)數(shù)據(jù)包括當前的操作狀態(tài)的狀態(tài)數(shù)據(jù),或者當前的動作的動作狀態(tài)數(shù)據(jù)等。游戲模擬服務器根據(jù)當前狀態(tài)數(shù)據(jù)按照預測行為模型在行為順序庫中獲取角色組合與本局游戲中的每一方的角色組合相同的行為順序序列,按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,該模擬結果可以為輸、或者贏的模擬結果,使用更新后的行為預測模型生成行為信息,該行為信息為使用行為預測模型對一個或多個角色進行預測得到的最佳策略或者動作,也即,游戲客戶端執(zhí)行的策略或者動作的概率最高。將該行為信息發(fā)送給游戲客戶端,客戶端執(zhí)行游戲模擬服務器返回的策略或者動作。
本發(fā)明實施例提出一種實時多人對戰(zhàn)游戲中基于順序的仿真方法,能夠針對實時多人對戰(zhàn)游戲做出更合理的模擬,使得AI更接近甚至超越人類選手的水平,更好的提升AI的能力,并且能滿足實時多人對戰(zhàn)游戲嚴格的實時性的要求,提高玩家的用戶體驗。
實施例4
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述游戲中角色行為的生成方法的游戲中角色行為的生成裝置。圖12是根據(jù)本發(fā)明實施例的一種游戲中角色行為的生成裝置的示意圖。如圖12所示,該游戲中角色行為的生成方法包括:接收單元10,獲取單元20,模擬單元30,生成單元40和發(fā)送單元50。
接收單元10,用于接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài)。
獲取單元20,用于從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序。
模擬單元30,用于按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的。
生成單元40,用于使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為。
發(fā)送單元50,用于將行為信息發(fā)送給游戲客戶端。
圖13是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成裝置的示意圖。如圖13所示,該游戲中角色行為的生成裝置包括:接收單元10,獲取單元20,模擬單元30,生成單元40和發(fā)送單元50。其中,模擬單元30包括:執(zhí)行模塊31。
需要說明的是,該實施例的接收單元10,獲取單元20,模擬單元30,生成單元40和發(fā)送單元50與圖12所示實施例的游戲中角色行為的生成裝置中的作用相同,此處不再贅述。
執(zhí)行模塊31,用于重復執(zhí)行以下步驟,直到達到預定的模擬次數(shù):在本次模擬中按照行為執(zhí)行順序依次從多個角色中獲取當前待模擬的角色,重復執(zhí)行以下步驟:使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬;判斷對當前待模擬的角色進行模擬之后是否得到用于指示當前游戲結束的當前的模擬結果;若得到當前的模擬結果,則結束本次模擬,并根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新。
可選地,模擬結果包括每次模擬得到的當前的模擬結果,更新后的行為預測模型是使用最后一次模擬得到的當前的模擬結果對倒數(shù)第二次模擬后更新得到的行為預測模型進行更新得到的。
可選地,模擬單元30用于從執(zhí)行隊列中取出位于隊首的當前待模擬的角色,其中,多個角色按照行為執(zhí)行順序存入在執(zhí)行隊列。
可選地,執(zhí)行模塊31還用于在未得到用于指示當前游戲結束的當前的模擬結果的情況下,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列的隊尾;或者,獲取當前待模擬的角色在當前狀態(tài)下的最后一次行為的執(zhí)行時間T1,以及預先記錄的行為頻率所對應的間隔時間T2,并將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列中與(T1+T2)對應的位置上,其中,行為頻率與最后一次行為相對應。
圖14是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成裝置的示意圖。如圖14所示,該游戲中角色行為的生成裝置包括:接收單元10,獲取單元20,模擬單元30,生成單元40和發(fā)送單元50。該游戲中角色行為的生成裝置還包括:統(tǒng)計單元60。
需要說明的是,該實施例的接收單元10,獲取單元20,模擬單元30,生成單元40和發(fā)送單元50與圖12所示實施例的游戲中角色行為的生成裝置中的作用相同,此處不再贅述。
統(tǒng)計單元60,用于在從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列之前,通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列,其中,歷史游戲日志中的每條游戲日志記錄是按照預定幀率記錄的,預定幀率下的每一幀中最多只有一個角色在執(zhí)行行為。
圖15是根據(jù)本發(fā)明實施例的另一種游戲中角色行為的生成裝置的示意圖。如圖15所示,該游戲中角色行為的生成裝置包括:接收單元10,獲取單元20,模擬單元30,生成單元40,發(fā)送單元50和統(tǒng)計單元60。其中,統(tǒng)計單元60包括:第一獲取模塊61,第二獲取模塊62,第三獲取模塊63和記錄模塊64。
需要說明的是,該實施例的接收單元10,獲取單元20,模擬單元30,生成單元40,發(fā)送單元50和統(tǒng)計單元60與圖14所示實施例的游戲中角色行為的生成裝置中的作用相同,此處不再贅述。
第一獲取模塊61,用于從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列,其中,游戲日志完整序列是按照時間順序對每條游戲日志記錄中的所有幀中的有行為記錄的角色進行排列得到的。
第二獲取模塊62,用于從游戲日志完整序列中獲取每個角色集合的子序列,其中,多個角色被劃分為至少兩個角色集合,每個角色集合的子序列是按照時間順序對所有幀中屬于該角色集合的、有行為記錄的角色進行排列得到的。
第三獲取模塊63,用于從每個角色集合的子序列中得到角色集合的最小全序列,其中,最小全序列包括:子序列中的連續(xù)字符串,其中,連續(xù)字符串僅包括角色集合中的每個角色的標識。
記錄模塊64,用于在歷史游戲日志的所有游戲日志記錄的最小全序列中,對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列。
可選地,在本發(fā)明實施例中的游戲中角色行為的生成裝置中,當前游戲包括實時戰(zhàn)略類游戲,多個角色被劃分為至少兩個角色集合,其中,至少兩個角色集合在實時戰(zhàn)略類游戲中是對立的。
需要說明的是,該實施例中的接收單元10可以用于執(zhí)行本申請實施例1中的步驟S402,該實施例中的獲取單元20可以用于執(zhí)行本申請實施例1中的步驟S404,該實施例中的模擬單元30可以用于執(zhí)行本申請實施例1中的步驟S406,該實施例中的生成單元40可以用于執(zhí)行本申請實施例1中的步驟S408,該實施例中的發(fā)送單元50可以用于執(zhí)行本申請實施例1中的步驟S410。
該實施例通過接收單元10接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài),通過獲取單元20從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序,通過模擬單元30按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的,通過生成單元40使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為,通過發(fā)送單元50將行為信息發(fā)送給游戲客戶端,可以解決游戲中角色行為生成的準確度較低的技術問題,達到了提高游戲中角色行為生成的準確度和生成的效率的技術效果。
此處需要說明的是,上述單元和模塊與對應的步驟所實現(xiàn)的示例和應用場景相同,但不限于上述實施例所公開的內容。需要說明的是,上述單元和模塊作為裝置的一部分可以運行在如圖3所示的硬件環(huán)境中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。其中,硬件環(huán)境包括網絡環(huán)境。
實施例5
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述游戲中角色行為的生成方法的服務器或終端。
圖16是根據(jù)本發(fā)明實施例的一種終端的結構框圖。如圖16所示,該終端可以包括:一個或多個(圖中僅示出一個)處理器161、存儲器163、以及傳輸裝置165(如上述實施例中的發(fā)送裝置)。如圖16所示,該終端還可以包括輸入輸出設備167。
其中,存儲器163可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的游戲中角色行為的生成方法和裝置對應的程序指令/模塊,處理器161通過運行存儲在存儲器163內的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數(shù)據(jù)處理,即實現(xiàn)上述的游戲中角色行為的生成方法。存儲器163可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器163可進一步包括相對于處理器161遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至終端。上述網絡的實例包括但不限于互聯(lián)網、企業(yè)內部網、局域網、移動通信網及其組合。
上述的傳輸裝置165用于經由一個網絡接收或者發(fā)送數(shù)據(jù),還可以用于處理器與存儲器之間的數(shù)據(jù)傳輸。上述的網絡具體實例可包括有線網絡及無線網絡。在一個實例中,傳輸裝置165包括一個網絡適配器(Network Interface Controller,NIC),其可通過網線與其他網絡設備與路由器相連從而可與互聯(lián)網或局域網進行通訊。在一個實例中,傳輸裝置165為射頻(Radio Frequency,RF)模塊,其用于通過無線方式與互聯(lián)網進行通訊。
其中,具體地,存儲器163用于存儲應用程序。
處理器161可以通過傳輸裝置165調用存儲器163存儲的應用程序,以執(zhí)行下述步驟:
接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);
從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序;
按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;
使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;將行為信息發(fā)送給游戲客戶端。
處理器161還用于執(zhí)行下述步驟:按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型包括:重復執(zhí)行以下步驟,直到達到預定的模擬次數(shù):在本次模擬中按照行為執(zhí)行順序依次從多個角色中獲取當前待模擬的角色,重復執(zhí)行以下步驟:使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬;判斷對當前待模擬的角色進行模擬之后是否得到用于指示當前游戲結束的當前的模擬結果;若得到當前的模擬結果,則結束本次模擬,并根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新;其中,模擬結果包括每次模擬得到的當前的模擬結果,更新后的行為預測模型是使用最后一次模擬得到的當前的模擬結果對倒數(shù)第二次模擬后更新得到的行為預測模型進行更新得到的。
處理器161還用于執(zhí)行下述步驟:從執(zhí)行隊列中取出位于隊首的當前待模擬的角色,其中,多個角色按照行為執(zhí)行順序存入執(zhí)行隊列。
處理器161還用于執(zhí)行下述步驟:在未得到用于指示當前游戲結束的當前的模擬結果的情況下,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列的隊尾;或者,獲取當前待模擬的角色在當前狀態(tài)下的最后一次行為的執(zhí)行時間T1,以及預先記錄的行為頻率所對應的間隔時間T2,并將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列中與(T1+T2)對應的位置上,其中,行為頻率與最后一次行為相對應。
處理器161還用于執(zhí)行下述步驟:在從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列之前,通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列,其中,歷史游戲日志中的每條游戲日志記錄是按照預定幀率記錄的,預定幀率下的每一幀中最多只有一個角色在執(zhí)行行為。
處理器161還用于執(zhí)行下述步驟:從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列,其中,游戲日志完整序列是按照時間順序對每條游戲日志記錄中的所有幀中的有行為記錄的角色進行排列得到的;從游戲日志完整序列中獲取每個角色集合的子序列,其中,多個角色被劃分為至少兩個角色集合,每個角色集合的子序列是按照時間順序對所有幀中屬于該角色集合的、有行為記錄的角色進行排列得到的;從每個角色集合的子序列中得到角色集合的最小全序列,其中,最小全序列包括:子序列中的連續(xù)字符串,其中,連續(xù)字符串僅包括角色集合中的每個角色的標識;在歷史游戲日志的所有游戲日志記錄的最小全序列中,對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列。
采用本發(fā)明實施例,提供了一種游戲中角色行為的生成方法的方案。接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,行為順序序列中記錄了多個角色的行為執(zhí)行順序;按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;使用更新后的行為預測模型生成行為信息,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;將行為信息發(fā)送給游戲客戶端,達到了對游戲中的角色行為進行生成的目的,從而實現(xiàn)了提高游戲中角色行為生成的準確度和生成的效率的技術效果,進而解決了游戲中角色行為生成的準確度較低的技術問題。
可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。
本領域普通技術人員可以理解,圖16所示的結構僅為示意,終端可以是智能手機(如Android手機、iOS手機等)、平板電腦、掌上電腦以及移動互聯(lián)網設備(Mobile Internet Devices,MID)、PAD等終端設備。圖16并不對上述電子裝置的結構造成限定。例如,終端還可包括比圖16中所示更多或者更少的組件(如網絡接口、顯示裝置等),或者具有與圖16所示不同的配置。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設備相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:閃存盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取器(Random Access Memory,RAM)、磁盤或光盤等。
實施例6
本發(fā)明的實施例還提供了一種存儲介質。可選地,在本實施例中,上述存儲介質可以用于執(zhí)行游戲中角色行為的生成方法的程序代碼。
可選地,在本實施例中,上述存儲介質可以位于上述實施例所示的網絡中的多個網絡設備中的至少一個網絡設備上。
可選地,在本實施例中,存儲介質被設置為存儲用于執(zhí)行以下步驟的程序代碼:
接收游戲客戶端發(fā)送的當前游戲的狀態(tài)數(shù)據(jù),其中,狀態(tài)數(shù)據(jù)用于指示當前游戲中多個角色的當前狀態(tài);
從當前狀態(tài)開始,從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列,其中,行為順序序列中記錄了多個角色的行為執(zhí)行順序;
按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型,其中,更新后的行為預測模型是根據(jù)模擬結果進行更新得到的;
使用更新后的行為預測模型生成行為信息,其中,行為信息用于指示多個角色中的一個或多個在當前狀態(tài)之后的下一個行為;將行為信息發(fā)送給游戲客戶端。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:按照行為執(zhí)行順序依次使用行為預測模型對多個角色進行仿真模擬,得到模擬結果和更新后的行為預測模型包括:重復執(zhí)行以下步驟,直到達到預定的模擬次數(shù):在本次模擬中按照行為執(zhí)行順序依次從多個角色中獲取當前待模擬的角色,重復執(zhí)行以下步驟:使用上次模擬后更新得到的行為預測模型對當前待模擬的角色進行模擬;判斷對當前待模擬的角色進行模擬之后是否得到用于指示當前游戲結束的當前的模擬結果;若得到當前的模擬結果,則結束本次模擬,并根據(jù)當前的模擬結果對上次模擬后更新得到的行為預測模型進行更新;其中,模擬結果包括每次模擬得到的當前的模擬結果,更新后的行為預測模型是使用最后一次模擬得到的當前的模擬結果對倒數(shù)第二次模擬后更新得到的行為預測模型進行更新得到的。
存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:從執(zhí)行隊列中取出位于隊首的當前待模擬的角色,其中,多個角色按照行為執(zhí)行順序存入執(zhí)行隊列。
存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在未得到用于指示當前游戲結束的當前的模擬結果的情況下,將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列的隊尾;或者,獲取當前待模擬的角色在當前狀態(tài)下的最后一次行為的執(zhí)行時間T1,以及預先記錄的行為頻率所對應的間隔時間T2,并將已執(zhí)行完模擬的當前待模擬的角色存入執(zhí)行隊列中與(T1+T2)對應的位置上,其中,行為頻率與最后一次行為相對應。
存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在從預先獲取到的行為順序庫中獲取當前游戲相關的行為順序序列之前,通過對歷史游戲日志進行統(tǒng)計操作,得到行為順序庫中的行為順序序列,其中,歷史游戲日志中的每條游戲日志記錄是按照預定幀率記錄的,預定幀率下的每一幀中最多只有一個角色在執(zhí)行行為。
存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:從每條游戲日志記錄中獲取每幀有行為記錄的角色,得到游戲日志完整序列,其中,游戲日志完整序列是按照時間順序對每條游戲日志記錄中的所有幀中的有行為記錄的角色進行排列得到的;從游戲日志完整序列中獲取每個角色集合的子序列,其中,多個角色被劃分為至少兩個角色集合,每個角色集合的子序列是按照時間順序對所有幀中屬于該角色集合的、有行為記錄的角色進行排列得到的;從每個角色集合的子序列中得到角色集合的最小全序列,其中,最小全序列包括:子序列中的連續(xù)字符串,其中,連續(xù)字符串僅包括角色集合中的每個角色的標識;在歷史游戲日志的所有游戲日志記錄的最小全序列中,對于角色組合相同的最小全序列,將出現(xiàn)次數(shù)最多的最小全序列記錄為行為順序庫中的行為順序序列。
可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。
可選地,在本實施例中,上述存儲介質可以包括但不限于:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
上述實施例中的集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質中?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在存儲介質中,包括若干指令用以使得一臺或多臺計算機設備(可為個人計算機、服務器或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的客戶端,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。