本發(fā)明涉及計算機領域,具體而言,涉及一種控制對象的空間位置確定方法和裝置。
背景技術:
現有技術中,在網絡游戲應用中,通常涉及多個應用中的np同時攻擊同一個目標的情況,這種在網絡游戲中多個npc(non-playercharacter,非玩家控制角色)的ai(artificialintelligence人工智能控制)同時攻擊同一個目標(如,玩家角色)時的站位表現,被稱之為ai的合圍機制。在目前的游戲引擎中,ai的合圍機制的實現根據該游戲引擎是否帶物體碰撞,分為兩種:
1)帶物理碰撞的游戲引擎:單機游戲(如星際爭霸、魔獸爭霸),網游(如軒轅傳奇)等。這種游戲的特點是游戲中的所有物體(如上述的角色對象,如npc)在空間上是不可重疊的。因此在此類游戲應用中,多個npc的ai在攻擊同一個目標時,npc會移動到距離目標較近的并且沒有其他npc占據的空間上去。
2)無物理碰撞的游戲引擎:大部分的游戲應用都是不帶物理碰撞引擎的,此類游戲的特點是游戲中的物體可以在空間上重疊,如圖1所示的示意圖中,在游戲界面中有4個npc(圖1中的npc1、npc2、npc3和npc4)在攻擊同一目標(如圖1中的目標對象m1),該圖1中4個npc中有三個npc(即npc1、npc2和npc3)在空間位置上發(fā)生重疊。因為沒有物理碰撞,所以對某一個npc來說,游戲場景中的整片空間都是可以占用的,因此所有npc的可以選中同樣的占位點,堆疊在一起。這樣給玩家的體驗是非常不真實的。
上述的游戲引擎中,無物理碰撞的引擎中會產生物體重疊;為了解決該問題,只能直接使用帶理碰撞的游戲引擎,但是帶理碰撞的游戲引擎的開發(fā)成本較高且運行效率會比較低。
針對上述在不帶物理碰撞的游戲引擎中,使多個物體在空間位置上不發(fā)生重疊的方案運行效率低的問題,目前尚未提出有效的解決方案。
技術實現要素:
本發(fā)明實施例提供了一種控制對象的空間位置確定方法和裝置,以至少解決在不帶物理碰撞的游戲引擎中,使多個物體在空間位置上不發(fā)生重疊的方案運行效率低的技術問題。
根據本發(fā)明實施例的一個方面,提供了一種控制對象的空間位置確定方法,該方法包括:游戲應用的游戲引擎檢測到空間位置請求,其中,空間位置請求用于請求根據游戲應用中的第一控制對象的第一空間位置確定第二控制對象的第二空間位置,游戲引擎為無物理碰撞引擎;游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置,其中,多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置不重疊;游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。
根據本發(fā)明實施例的另一方面,還提供了一種控制對象的空間位置確定裝置,該裝置包括:檢測單元,用于游戲應用的游戲引擎檢測到空間位置請求,其中,空間位置請求用于請求根據游戲應用中的第一控制對象的第一空間位置確定第二控制對象的第二空間位置,游戲引擎為無物理碰撞引擎;第一確定單元,用于游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置,其中,多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置不重疊;第二確定單元,用于游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。
采用本發(fā)明實施例,不帶物理碰撞條件的游戲引擎,在檢測到空間位置請求之后,根據第一控制對象的第一空間位置確定多個候選空間位置,并將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。由于上述實施例中的多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置也不重疊,從該多個空間位置中選取一個未被占用的位置作為第二控制對象的第二空間位置,若第二控制對象為多個,多個第二控制對象的位置不會發(fā)生重疊。通過上述方案,無需使用研發(fā)成本高、運行效率低的帶物理碰撞的游戲引擎,即可在不帶物理碰撞的游戲引擎中對多個第一控制對象分配不重疊的空間位置,解決了現有技術中游戲引擎中多個物體在空間位置上不產生重疊的方案運行效率低的問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
圖1是根據現有技術的一種確定物體的空間位置的示意圖;
圖2是根據本發(fā)明實施例的一種可選的計算機的網絡環(huán)境示意圖;
圖3是根據本發(fā)明實施例的控制對象的空間位置確定方法的流程圖;
圖4是根據本發(fā)明實施例的一種可選的候選空間位置的分布示意圖;
圖5是根據本發(fā)明實施例的第二種可選的候選空間位置的分布示意圖;
圖6是根據本發(fā)明實施例的第三種可選的候選空間位置的分布示意圖;
圖7是根據本發(fā)明實施例的第四種可選的候選空間位置的分布示意圖;
圖8是根據本發(fā)明實施例的第五種可選的候選空間位置的分布示意圖;
圖9是根據本發(fā)明實施例的一種可選的空間位置請求生成的觸發(fā)條件 示意圖;
圖10是根據本發(fā)明實施例的空間位置確定方法生成的游戲界面示意圖;
圖11是根據本發(fā)明實施例的控制對象的空間位置確定裝置的示意圖;以及
圖12是根據本發(fā)明實施例的服務器的內部結構框圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
實施例1
根據本發(fā)明實施例,提供了一種控制對象的空間位置確定方法的實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
可選地,在本實施例中,上述控制對象的空間位置確定方法可以應用于如圖2所示的網絡環(huán)境中。該網絡環(huán)境包括終端201和服務器203,其中,終端可以與服務器通過網絡建立連接,終端和服務器上均可以設置處理器。
上述網絡包括但不限于:廣域網、城域網或局域網。優(yōu)選地,上述的網絡為局域網;上述終端可以包括個人計算機、移動終端(如手機、平板電腦等)。
圖3是根據本發(fā)明實施例的控制對象的空間位置確定方法的流程圖,如圖3所示,該方法包括如下步驟:
步驟s302:游戲應用的游戲引擎檢測到空間位置請求,其中,空間位置請求用于請求根據游戲應用中的第一控制對象的第一空間位置確定第二控制對象的第二空間位置,游戲引擎為無物理碰撞引擎,即,游戲應用中的控制對象在空間位置上被允許重疊;
步驟s304:游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置,其中,多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置不重疊;
步驟s306:游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。
在確定第二空間位置之后,生成攜帶有第二空間位置的信息的通知,第二控制對象的ai(如人工智能控制單元)接收到該通知之后,將第二控制對象自行移動至第二空間位置。
采用本發(fā)明實施例,不帶物理碰撞條件的游戲引擎,在檢測到空間位置請求之后,根據第一控制對象的第一空間位置確定多個候選空間位置,并將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。由于上述實施例中的多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空 間位置也不重疊,從該多個空間位置中選取一個未被占用的位置作為第二控制對象的第二空間位置,若第二控制對象為多個,多個第二控制對象的位置不會發(fā)生重疊。通過上述方案,無需使用研發(fā)成本高、運行效率低的帶物理碰撞的游戲引擎,即可在不帶物理碰撞的游戲引擎中對多個第一控制對象分配不重疊的空間位置,解決了現有技術中游戲引擎中多個物體在空間位置上不產生重疊的方案運行效率低的問題。
在上述實施例中的第一控制對象和第二控制對象可以為游戲角色,也可以為靜態(tài)的游戲中的物體。上述實施例中的第二控制對象可以為人工智能控制的對象,空間位置請求也是第二控制對象的人工智能控制單元生成的,上述方法的執(zhí)行主體可以是游戲引擎中的合圍管理器。
例如,第一控制對象可以為游戲玩家,第二控制對象可以為npc,該游戲玩家可以為用戶在使用游戲客戶端時通過輸入操作指令而控制的游戲角色。
通過上述實施例,在沒有物理碰撞的條件下,為多個npc分配游戲應用的空間中不同的空間位置,且各個npc的空間位置各不相同,從而可以使ai通過合圍機制讓npc的站位表現更為真實和生動。
具體地,上述的游戲應用可以為網絡游戲應用,用戶可以通過游戲賬號登錄終端上安裝的游戲客戶端,進入游戲應用的游戲場景。在進入游戲場景之后,該游戲賬號對應場景中的一個游戲角色(即上述實施例中的第一控制對象)。在游戲引擎接收到終端的游戲客戶端的啟動指令之后,響應于該啟動指令,啟動對應的游戲項目。在游戲開始之后,檢測是否在游戲中出現npc,若出現了npc,檢測是否生成有空間位置請求,若有空間位置請求,則確定與第一控制對象的第一空間位置對應的多個彼此不重疊的候選空間位置,從該多個空間位置中選取一個未被占用的候選空間位置確定為npc的第二空間位置,也即將該未被占用的候選空間位置分配至npc,通知該npc為其分配的第二空間位置,npc移動至該第二空間位置。
可選地,游戲引擎也可以直接將該npc移動至第二空間位置,本發(fā)明對此不做限定。
在上述實施例中,已經被其他npc鎖定的空間位置不會被其他npc占用,可以讓多個npc合圍一個目標的時候,不產生重疊并盡量使得游戲真實,提高了用戶體驗。
圖4示出了一種可選的候選空間位置的分布,如圖4所示的實施例中,游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置包括:在以第一空間位置為中心的空間區(qū)域內確定多個候選空間位置,其中,每個候選空間位置與第一空間位置的距離不超過預設閾值。
如圖4所示,以第一空間位置為中心,以預設閾值為半徑,確定一個圓形的空間區(qū)域,在該圓形的空間區(qū)域中隨機設置多個候選空間位置,則每個候選空間位置與該第一空間位置的距離不超過預設閾值,且該多個候選空間位置包圍該第一空間位置。
因為,在游戲應用中第二控制對象需對第一控制對象執(zhí)行操作(如合圍、攻擊等操作),將候選空間位置確定在距離第一空間位置不超過預設距離的范圍內,可以更好的實現游戲的合圍或攻擊功能。
在一個可選的實施例中,在以第一空間位置為中心的空間區(qū)域內確定多個候選空間位置可以包括:在空間區(qū)域內,在以第一空間位置為中心的合圍圈上設置多個候選空間位置。
具體地,合圍圈為n個,其中,在以第一空間位置為中心的合圍圈上設置多個候選空間位置包括:在n個合圍圈中的每個合圍圈上設置一組候選空間位置,其中,第i個合圍圈上設置有第i組候選空間位置,n為自然數,i為小于等于n的自然數。
可以以第一空間位置為圓心設置n個合圍圈,每個合圍圈的半徑不同,每個合圍圈上設置一組候選空間位置,即,第i個合圍圈上設置有第i組候選空間位置,這樣減少了候選空間位置設置的隨機性,提高了處理器的 性能;并且,每個合圍圈上的候選空間位置距離一致,在選取第二空間位置時,可以一個合圍圈一個合圍圈的選取,如先選取第一個合圍圈上的候選空間位置,若第一個合圍圈上沒有合適的位置,再選取第二個合圍圈上的位置,以此類推。該方案與隨機設置候選空間位置相比,設置時有規(guī)律、選取時也有規(guī)律,從而可以提高處理速度。
按照上述實施例設置候選空間位置時,第i組候選空間位置在第i個合圍圈上均勻分布,每組候選空間位置的個數均不相同。
如圖5所示,可以在確定的空間區(qū)域內,設置3個合圍圈,三個合圍圈的半徑分別為r1、r2和r3,三個合圍圈的半徑不同,每個合圍圈上設置一組候選空間位置,每組候選空間位置的個數也不同。圖5中的第一組候選空間位置為5個、第二組候選空間位置為9個,第三組候選空間位置為13個,且每個合圍圈上的候選空間位置均勻分布。
需要說明的是,本申請實施例中的合圍圈僅是一個虛擬概念,可以按照半徑距離直接設置候選空間位置,而不設置合圍圈,也即在以第一控制對象為中心,按照不同的半徑距離設置n組候選空間位置,每組候選空間位置距離第一控制對象的距離可以相同。
在一種可選的實施例中,在以第一空間位置為中心的合圍圈上設置多個候選空間位置可以包括:按照第一控制對象和第二控制對象的屬性信息設置下述至少之一:第i個合圍圈與第一控制對象的距離、第i組候選空間位置的個數、以及第i組候選空間位置的分布方式。
在該可選的實施例中,可以按照第一控制對象和第二控制對象的屬性確定合圍圈的個數、每個合圍圈與第一控制對象的距離、每組候選空間位置的個數、以及候選空間位置的分布方式(如均勻分布或不均勻分布)。
為了讓多個npc合圍同一個目標的時候不產生重疊并盡量能夠真實,本申請實施例將多個候選空間位置稱之為“陣形”。如圖6所示,一個陣形是目標(即第一控制對象)周圍一系列虛擬的點(即候選空間位置)。
在設置候選空間位置時,多個候選空間位置中的各個候選空間位置與目標對象(即第一控制對象)所在的第一空間位置的連接互不重合,以使處于每個候選空間位置上的npc對象均可直接對目標對象執(zhí)行操作,也即,每個候選空間位置均被設置為可直接對目標對象執(zhí)行操作的位置。
在一個可選的實現方案中,可以按照任意兩個候選空間位置和第一空間位置確定的夾角來設置每個候選空間位置,該夾角以第一空間位置為頂點,以任意兩個候選空間位置中一個候選空間位置與頂點的連線作為一條邊,以任意兩個候選空間位置中另一個候選空間位置與頂點的連線作為另一條邊。
具體地,先將目標對象周圍的空間(即上述實施例中的空間區(qū)域)離目標對象的距離遠近分n個“合圍圈”(如圖6所示為三個合圍圈,三個合圍圈可以為半徑分別為r1,r2,以及r3的三個圓周),在合圍圈上的合適的角度上分配一個“合圍點”(即候選空間位置),該合適的角度可以基于游戲應用的場景自定義,也可以根據目標對象和npc對象的屬性設置,如圖6所示,h1和h2的夾角、h3和h4的夾角、h5和h6的夾角分別為a1、a2和a3)。其中合圍圈的半徑r和數量n,每一合圍圈上合圍點的數量(此變量也可通過合圍點的夾角a確定)均可根據業(yè)務需要自行定義。同樣的,合圍點的分布方式也不一定是合圍圈的方式,可以是任意的形狀。
需要進一步說明的是,為了使多個候選空間位置的合圍效果更加逼真,可以對多個候選空間位置的相對位置按照偏移向量進行調整,如圖7所示,可以對合圍點的相對位置進行一些距離和角度上的隨機偏移,造成參差不齊的效果,也即,調整后合圍圈與第一控制對象的距離可以不變,每個合圍圈上的候選空間位置發(fā)生變化,變化后的候選空間位置可以不再位于合圍圈上。
上述實施例中確定第二空間位置時,可以按照預先定義的優(yōu)先級選取方式選取,如按照距離最短優(yōu)先的選取方式、距離相鄰的候選空間位置最遠的選取方式等,該預先定義的優(yōu)先級選取方式也可根據業(yè)務需要自行定 義,一般來說可以遵循最短距離優(yōu)先原則,也就是給npc(如怪物)分配一個距離目標對象較近的合圍圈上離自己當前位置最近的合圍點。
也即,游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置可以包括:將多個候選空間位置中一個距離第一空間位置最近、且未被占用的候選空間位置確定為第二控制對象的第二空間位置。
具體地,在確定第一空間位置之后,獲取距離第一空間位置最近的合圍圈,從當前獲取的合圍圈中選取未被占用的候選空間位置,若該當前獲取的合圍圈中的候選空間位置均被占用,則獲取下一個距離最近的合圍圈,以此類推,直至找到被占用的合圍圈。
在上述實施例中,若同一個合圍圈中有幾個未被占用的候選空間位置,則可以隨機從該未被占用的候選空間位置中選取一個作為第二空間位置;也可以從該未被占用的候選空間位置中選取一個距離第二控制對象當前位置最近的位置作為第二空間位置;若第二控制對象的當前位置為空(也即,第二控制對象尚未存在于該游戲空間中),則可以隨機選取。
在本發(fā)明的上述實施例中,每個候選空間位置可以具有一個狀態(tài)標志,該狀態(tài)標志用于指示候選空間位置是否被占用,也即,可以通過狀態(tài)標志確定對應的候選空間位置是否被占用。在將多個候選空間位置中一個距離第一空間位置最近、且未被占用的候選空間位置確定為第二控制對象的第二空間位置之后,將距離第一空間位置最近、且未被占用的候選空間位置的狀態(tài)修改為被占用狀態(tài)。
每次確定好第二空間位置之后,把確定的第二空間位置的狀態(tài)修改為被占用狀態(tài),同理,在每次npc消失之后,將消失的npc的空間位置的狀態(tài)再修改回未被占用的狀態(tài),以下次選取空間位置時可以保證準確確定第二控制對象的空間位置。
下面結合圖8詳述本發(fā)明上述實施例,如圖8所示,在檢測到位置確 定請求之后,確定第一控制對象的第一空間位置的多個候選空間位置(該候選空間位置的確定可以采用上述任意一種實施例中的確定方式),如圖8所示的實施例中,確定的候選空間位置有些已經被占用,如圖8中第一個合圍圈中的h11、h12、h13和h14已經被占用,第二個合圍圈中的h23已經被占用,按照上述的選取方案,可以選取第一個合圍圈中未被占用的候選空間位置h15,并將h15確定為第二空間位置,游戲引擎生成攜帶有第二空間位置的信息的通知,將該通知發(fā)送至第二控制對象的人工控制單元,該人工控制單元自行將第二控制對象移動至該第二空間位置,以對第一控制對象執(zhí)行攻擊等操作。
圖8中被涂黑的候選空間位置表示被占用的候選空間位置。
本發(fā)明上述實施例中,游戲應用的游戲引擎檢測到空間位置請求可以包括:若游戲引擎接收到第二控制對象對第一控制對象的操作指令,則確定檢測到空間位置請求;或者,在第一控制對象位于第三空間位置、且第一控制對象被多個位于第四空間位置的第二控制對象包圍的情況下,若檢測到第一控制對象移動至第一空間位置、且第一空間位置與第三空間位置的距離超過預設距離,則確定檢測到空間位置請求。
可選地,在第一控制對象位于第三空間位置、且第一控制對象被多個位于第四空間位置的第二控制對象包圍的情況下,方法還包括:在檢測到第一控制對象移動至第一空間位置的情況下,若第一空間位置與第三空間位置的距離未超過預設距離,則基于第一空間位置和第三空間位置確定第一控制對象的移動向量;按照移動向量,將第二控制對象從第二空間位置平移至第五空間位置。也即,若第一控制對象的移動幅度不大,則基于第一控制對象的移動,平移第二控制對象,而無需重新生成一個空間位置請求,以節(jié)省資源。
在一個可選的實施例中,在啟動游戲功能之后,當第二控制對象攻擊第一控制對象時,生成操作指令,如攻擊指令、圍攻指令等,并生成空間位置請求,則游戲引擎可以檢測到該空間位置請求;在一個可選的實施例 中,若檢測到npc生成該操作指令,則確定檢測到空間位置請求。
在另一個可選的實施例中,在啟動游戲功能之后,第一控制對象位于第三空間位置、且第一控制對象被多個位于第四空間位置的第二控制對象包圍,在第一控制對象處于上述的狀態(tài)時,若游戲引擎檢測到第一控制對象的位置移動至第一空間位置,且該次移動幅度很大,如第三控制位置移動的距離超出預設距離范圍,則npc生成空間位置請求,以重新獲取pc的空間位置。
下面結合圖9詳述本發(fā)明實施例,當第一控制對象位于第三空間位置,且有3個位于第四空間位置的第二控制對象包圍著第一控制對象,若第一控制對象發(fā)生移動,且移動距離較遠,則npc的ai生成空間位置請求,重新申請空間位置。
當npc攻擊該目標時,首先從多個候選空間位置中申請一個合圍點(即第二空間位置)作為該npc的站位點,并在合圍點上記錄當前狀態(tài),已經被其他npc鎖定的合圍點不能再被其他npc占用,如被涂黑的候選空間位置所示,剩余的npc只能從剩余的未被占用的合圍點中選取。
合圍點選取的優(yōu)先級算法也可根據業(yè)務需要自行定義,一般來說遵循最短距離優(yōu)先原則,也就是給怪物(即第二控制對象)分配一個距離目標較近的合圍圈上離自己當前位置最近的合圍點,如圖中的第二空間位置。
由于合圍目標不一定是靜止不動的,當目標在不斷移動時,整個“陣形”也會基于目標不斷整體平移,也就是每個合圍點絕對坐標會不斷變化。因此npc申請到合圍點以后,ai需要不斷對合圍點當前的坐標進行判定,如果發(fā)現自己和合圍點偏離較遠,就向新坐標發(fā)起移動。同時,如果目標一次性移動較原始坐標偏離較遠(如圖9所示的狀態(tài)),導致合圍的npc的相對位置發(fā)生較大改變,也可以一次性重置所有合圍點,讓npc重新發(fā)起申請。
如圖10所示,通過本發(fā)明上述實施例生成的游戲場景(如圖10中的 游戲界面)中若有4個第二控制對象(npc1、npc2、npc3和npc4)和一個第一控制對象(即目標對象m1),則四個第二控制對象對第一控制對象生成合圍之勢,與圖1相比,四個npc的空間位置沒有重疊。
通過本發(fā)明上述實施例,在不帶物理碰撞的游戲中,怪物合圍也可以模擬出有碰撞的效果,從而使怪物表現更為真實。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例2
根據本發(fā)明實施例,還提供了一種用于實施上述控制對象的空間位置確定方法,如圖11所示,該裝置可以包括:
可選地,在本實施例中,上述控制對象的空間位置確定方法也可以應用于如圖2所示的網絡環(huán)境中。
如圖11所示,該控制對象的空間位置確定裝置包括如下:檢測單元111、第一確定單元113和第二確定單元115。
其中,檢測單元,用于游戲應用的游戲引擎檢測到空間位置請求,其 中,空間位置請求用于請求根據游戲應用中的第一控制對象的第一空間位置確定第二控制對象的第二空間位置,游戲引擎為無物理碰撞引擎,如,游戲應用中的控制對象在空間位置上被允許重疊;
第一確定單元,用于游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置,其中,多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置不重疊;
第二確定單元,用于游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。
在確定第二空間位置之后,生成攜帶有第二空間位置的信息的通知,第二控制對象的ai(如人工智能控制單元)接收到該通知之后,將第二控制對象自行移動至第二空間位置。
該實施例中的裝置可以安裝在游戲應用的游戲引擎中,該游戲引擎可以位于該游戲應用對應的服務器上。
采用本發(fā)明實施例,不帶物理碰撞條件的游戲引擎,在檢測到空間位置請求之后,根據第一控制對象的第一空間位置確定多個候選空間位置,并將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。由于上述實施例中的多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置也不重疊,從該多個空間位置中選取一個未被占用的位置作為第二控制對象的第二空間位置,若第二控制對象為多個,多個第二控制對象的位置不會發(fā)生重疊。通過上述方案,無需使用研發(fā)成本高、運行效率低的帶物理碰撞的游戲引擎,即可在不帶物理碰撞的游戲引擎中對多個第一控制對象分配不重疊的空間位置,解決了現有技術中游戲引擎中多個物體在空間位置上不產生重疊的方案運行效率低的問題。
在上述實施例中的第一控制對象和第二控制對象可以為游戲角色,也可以為靜態(tài)的游戲中的物體。上述實施例中的第二控制對象可以為人工智 能控制的對象,空間位置請求也是第二控制對象的人工智能控制單元生成的,上述方法的執(zhí)行主體可以是游戲引擎中的合圍管理器。
例如,第一控制對象可以為游戲玩家,第二控制對象可以為npc,該游戲玩家可以為用戶在使用游戲客戶端時通過輸入操作指令而控制的游戲角色。
通過上述實施例,在沒有物理碰撞的條件下,為多個npc分配游戲應用的空間中不同的空間位置,且各個npc的空間位置各不相同,從而可以使ai通過合圍機制讓npc的站位表現更為真實和生動。
根據本發(fā)明的上述實施例,第一確定單元可以包括:確定模塊,用于在以第一空間位置為中心的空間區(qū)域內確定多個候選空間位置,其中,每個候選空間位置與第一空間位置的距離不超過預設閾值。
以第一空間位置為中心,以預設閾值為半徑,確定一個圓形的空間區(qū)域,在該圓形的空間區(qū)域中隨機設置多個候選空間位置,則每個候選空間位置與該第一空間位置的距離不超過預設閾值,且該多個候選空間位置包圍該第一空間位置。
因為,在游戲應用中第二控制對象需對第一控制對象執(zhí)行操作(如合圍、攻擊等操作),將候選空間位置確定在距離第一空間位置不超過預設距離的范圍內,可以更好的實現游戲的合圍或攻擊功能。
在一個可選的實施例中,確定模塊可以包括:設置子模塊,用于在空間區(qū)域內,在以第一空間位置為中心的合圍圈上設置多個候選空間位置。
具體地,合圍圈為n個,其中,設置子模塊包括:第一位置設置子模塊,用于在n個合圍圈中的每個合圍圈上設置一組候選空間位置,其中,第i個合圍圈上設置有第i組候選空間位置,n為自然數,i為小于等于n的自然數。
可以以第一空間位置為圓心設置n個合圍圈,每個合圍圈的半徑不同,每個合圍圈上設置一組候選空間位置,即,第i個合圍圈上設置有第i組 候選空間位置,這樣減少了候選空間位置設置的隨機性,提高了處理器的性能;并且,每個合圍圈上的候選空間位置距離一致,在選取第二空間位置時,可以一個合圍圈一個合圍圈的選取,如先選取第一個合圍圈上的候選空間位置,若第一個合圍圈上沒有合適的位置,再選取第二個合圍圈上的位置,以此類推。該方案與隨機設置候選空間位置相比,設置時有規(guī)律、選取時也有規(guī)律,從而可以提高處理速度。
按照上述實施例設置候選空間位置時,第i組候選空間位置在第i個合圍圈上均勻分布,每組候選空間位置的個數均不相同。
可選地,第i組候選空間位置在第i個合圍圈上也可以不均勻分布,每組候選空間位置的個數也可以相同。
需要說明的是,本申請實施例中的合圍圈僅是一個虛擬概念,可以按照半徑距離直接設置候選空間位置,而不設置合圍圈,也即在以第一控制對象為中心,按照不同的半徑距離設置n組候選空間位置,每組候選空間位置距離第一控制對象的距離可以相同。
在另一種可選的實現方式中,設置子模塊包括:第二位置設置子模塊,用于按照第一控制對象和第二控制對象的屬性信息設置下述至少之一:第i個合圍圈與第一控制對象的距離、第i組候選空間位置的個數、以及第i組候選空間位置的分布方式。
在該可選的實施例中,可以按照第一控制對象和第二控制對象的屬性確定合圍圈的個數、每個合圍圈與第一控制對象的距離、每組候選空間位置的個數、以及候選空間位置的分布方式(如均勻分布或不均勻分布)。
在設置候選空間位置時,多個候選空間位置中的各個候選空間位置與目標對象(即第一控制對象)所在的第一空間位置的連接互不重合,以使處于每個候選空間位置上的npc對象均可直接對目標對象執(zhí)行操作,也即,每個候選空間位置均被設置為可直接對目標對象執(zhí)行操作的位置。
上述實施例中確定第二空間位置時,可以按照預先定義的優(yōu)先級選取 方式選取,如按照距離最短優(yōu)先的選取方式、距離相鄰的候選空間位置最遠的選取方式等,該預先定義的優(yōu)先級選取方式也可根據業(yè)務需要自行定義,一般來說可以遵循最短距離優(yōu)先原則,也就是給npc(如怪物)分配一個距離目標對象較近的合圍圈上離自己當前位置最近的合圍點。
也即,第二確定單元包括的位置選取模塊,用于將多個候選空間位置中一個距離第一空間位置最近、且未被占用的候選空間位置確定為第二控制對象的第二空間位置。
具體地,在確定第一空間位置之后,獲取距離第一空間位置最近的合圍圈,從當前獲取的合圍圈中選取未被占用的候選空間位置,若該當前獲取的合圍圈中的候選空間位置均被占用,則獲取下一個距離最近的合圍圈,以此類推,直至找到被占用的合圍圈。
在本發(fā)明的上述實施例中,每個候選空間位置可以具有一個狀態(tài)標志,該狀態(tài)標志用于指示候選空間位置是否被占用,也即,可以通過狀態(tài)標志確定對應的候選空間位置是否被占用。在將多個候選空間位置中一個距離第一空間位置最近、且未被占用的候選空間位置確定為第二控制對象的第二空間位置之后,通過狀態(tài)修改單元將距離第一空間位置最近、且未被占用的候選空間位置的狀態(tài)修改為被占用狀態(tài)。
本發(fā)明上述實施例中,檢測單元包括:第一檢測模塊,用于在接收到第二控制對象對第一控制對象的操作指令時,確定檢測到空間位置請求;或者,第二檢測模塊,用于在第一控制對象位于第三空間位置、且第一控制對象被多個位于第四空間位置的第二控制對象包圍的情況下,若檢測到第一控制對象移動至第一空間位置、且第一空間位置與第三空間位置的距離超過預設距離,則確定檢測到空間位置請求。
上述的兩種為觸發(fā)生成空間位置請求的觸發(fā)條件。
可選地,第二檢測模塊還用于在檢測到第一控制對象移動至第一空間位置的情況下,若第一空間位置與第三空間位置的距離未超過預設距離, 則基于第一空間位置和第三空間位置確定第一控制對象的移動向量;按照移動向量,將第二控制對象從第二空間位置平移至第五空間位置。
由于合圍目標不一定是靜止不動的,當目標在不斷移動時,整個“陣形”也會基于目標不斷整體平移,也就是每個合圍點絕對坐標會不斷變化。因此npc申請到合圍點以后,ai需要不斷對合圍點當前的坐標進行判定,如果發(fā)現自己和合圍點偏離較遠,就向新坐標發(fā)起移動。同時,如果目標一次性移動較原始坐標偏離較遠(如圖8所示的狀態(tài)),導致合圍的npc的相對位置發(fā)生較大改變,也可以一次性重置所有合圍點,讓npc重新發(fā)起申請。
通過本發(fā)明上述實施例,在不帶物理碰撞的游戲中,怪物合圍也可以模擬出有碰撞的效果,從而使怪物表現更為真實。
本實施例中所提供的各個模塊與方法實施例對應步驟所提供的使用方法相同、應用場景也可以相同。當然,需要注意的是,上述模塊涉及的方案可以不限于上述實施例中的內容和場景,且上述模塊可以運行在計算機終端或移動終端,可以通過軟件或硬件實現。
實施例3
根據本發(fā)明實施例,還提供了一種用于實施上述控制對象的空間位置確定方法的服務器。
如圖12所示,該服務器包括:一個或多個(圖中僅示出一個)處理器1201、存儲器1203、以及傳輸裝置1205(如上述實施例中的發(fā)送裝置),如圖12所示,該終端還可以包括輸入輸出設備1207。
其中,存儲器1203可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的控制對象的空間位置確定方法和裝置對應的程序指令/模塊,處理器1201通過運行存儲在存儲器1203內的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數據處理,即實現上述的控制對象的空間位置確定方法。存儲器1203可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個 或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器1203可進一步包括相對于處理器1201遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至終端。上述網絡的實例包括但不限于互聯網、企業(yè)內部網、局域網、移動通信網及其組合。
上述的傳輸裝置1205用于經由一個網絡接收或者發(fā)送數據,還可以用于處理器與存儲器之間的數據傳輸。上述的網絡具體實例可包括有線網絡及無線網絡。在一個實例中,傳輸裝置1205包括一個網絡適配器(networkinterfacecontroller,nic),其可通過網線與其他網絡設備與路由器相連從而可與互聯網或局域網進行通訊。在一個實例中,傳輸裝置1205為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯網進行通訊。
其中,具體地,存儲器1203用于存儲應用程序。
處理器1201可以通過傳輸裝置1205調用存儲器1203存儲的應用程序,以執(zhí)行下述步驟:
s1,游戲應用的游戲引擎檢測到空間位置請求,其中,空間位置請求用于請求根據游戲應用中的第一控制對象的第一空間位置確定第二控制對象的第二空間位置,游戲引擎為無物理碰撞引擎,如,游戲應用中的控制對象在空間位置上被允許重疊;
s2,游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置,其中,多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置不重疊;
s3,游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。
處理器1201可以通過傳輸裝置1205調用存儲器1203存儲的應用程序,以執(zhí)行下述步驟:
在以第一空間位置為中心的空間區(qū)域內確定多個候選空間位置,其中, 每個候選空間位置與第一空間位置的距離不超過預設閾值。
采用本發(fā)明實施例,不帶物理碰撞條件的游戲引擎,在檢測到空間位置請求之后,根據第一控制對象的第一空間位置確定多個候選空間位置,并將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。由于上述實施例中的多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置也不重疊,從該多個空間位置中選取一個未被占用的位置作為第二控制對象的第二空間位置,若第二控制對象為多個,多個第二控制對象的位置不會發(fā)生重疊。通過上述方案,無需使用研發(fā)成本高、運行效率低的帶物理碰撞的游戲引擎,即可在不帶物理碰撞的游戲引擎中對多個第一控制對象分配不重疊的空間位置,解決了現有技術中游戲引擎中多個物體在空間位置上不產生重疊的方案運行效率低的問題。
可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。
需要進一步說明的是,寄存區(qū)域為系統(tǒng)的內存和系統(tǒng)處理器中的寄存器。
本領域普通技術人員可以理解,圖12所示的結構僅為示意,終端可以是智能手機(如android手機、ios手機等)、平板電腦、掌上電腦以及移動互聯網設備(mobileinternetdevices,mid)、pad等終端設備。圖12其并不對上述電子裝置的結構造成限定。例如,終端還可包括比圖12中所示更多或者更少的組件(如網絡接口、顯示裝置等),或者具有與圖12所示不同的配置。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設備相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機存取器(randomaccessmemory,ram)、磁盤或光盤等。
實施例4
本發(fā)明的實施例還提供了一種存儲介質??蛇x地,在本實施例中,上述存儲介質可以用于存儲執(zhí)行控制對象的空間位置確定方法的程序代碼。
可選地,在本實施例中,上述存儲介質可以位于圖2所示的網絡中的多個網絡設備中的至少一個網絡設備。
可選地,在本實施例中,存儲介質被設置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,游戲應用的游戲引擎檢測到空間位置請求,其中,空間位置請求用于請求根據游戲應用中的第一控制對象的第一空間位置確定第二控制對象的第二空間位置,游戲引擎為無物理碰撞引擎,如,游戲應用中的控制對象在空間位置上可重疊;
s2,游戲引擎根據第一控制對象的第一空間位置確定多個候選空間位置,其中,多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置不重疊;
s3,游戲引擎將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:
在以第一空間位置為中心的空間區(qū)域內確定多個候選空間位置,其中,每個候選空間位置與第一空間位置的距離不超過預設閾值。
采用本發(fā)明實施例,不帶物理碰撞條件的游戲引擎,在檢測到空間位置請求之后,根據第一控制對象的第一空間位置確定多個候選空間位置,并將多個候選空間位置中的一個未被占用的候選空間位置確定為第二控制對象的第二空間位置。由于上述實施例中的多個候選空間位置包圍第一空間位置,且多個候選空間位置彼此不重疊,多個候選空間位置與第一空間位置也不重疊,從該多個空間位置中選取一個未被占用的位置作為第二 控制對象的第二空間位置,若第二控制對象為多個,多個第二控制對象的位置不會發(fā)生重疊。通過上述方案,無需使用研發(fā)成本高、運行效率低的帶物理碰撞的游戲引擎,即可在不帶物理碰撞的游戲引擎中對多個第一控制對象分配不重疊的空間位置,解決了現有技術中游戲引擎中多個物體在空間位置上不產生重疊的方案運行效率低的問題。
可選地,在本實施例中,上述存儲介質可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。
可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
上述實施例中的集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質中?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在存儲介質中,包括若干指令用以使得一臺或多臺計算機設備(可為個人計算機、服務器或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的客戶端,可通過其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦 合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕嶋H的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。