一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)及其處理方法
【專利摘要】本申請(qǐng)公開了一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)及其處理方法,該系統(tǒng)在非用戶控制角色(NPC)選中用戶角色作為近距交互目標(biāo)之后,確定此前與該用戶角色發(fā)生所述近距交互的所有角色的總數(shù)N,確定模擬旋轉(zhuǎn)弧度C=N×a,所述a為指定基準(zhǔn)弧度;之后執(zhí)行位置分配,即:以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在目的坐標(biāo)處是否有靜態(tài)阻擋,如果有則將當(dāng)前弧度C遞加指定弧度后得到新的弧度C,重新執(zhí)行本位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色進(jìn)行所述近距交互。利用本發(fā)明,可以降低用戶角色和NPC的模型重疊的幾率,進(jìn)而提升用戶體驗(yàn),同時(shí)降低系統(tǒng)的開銷。
【專利說明】—種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)及其處理方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及計(jì)算機(jī)數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)及 其處理方法。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)游戲(Online Game)又稱“在線游戲”,是指以互聯(lián)網(wǎng)為傳輸媒介,以游戲服務(wù) 器和用戶設(shè)備(如計(jì)算機(jī)、智能手機(jī)、平板電腦等)為處理終端,以游戲客戶端或網(wǎng)頁為信息 交互窗口的旨在實(shí)現(xiàn)娛樂、休閑、交流和取得虛擬成就的具有可持續(xù)性的多人在線游戲。
[0003]在目前的網(wǎng)絡(luò)游戲系統(tǒng)中,主要包括以下兩種角色間的交互模式:
[0004]一、用戶與用戶之間形成的互動(dòng)競(jìng)技交互模式(PVP,Player VS Player),意為用 戶對(duì)戰(zhàn),網(wǎng)絡(luò)游戲系統(tǒng)中需要包括PVP相關(guān)的處理系統(tǒng),用于處理PVP模式下的交互指令和 數(shù)據(jù)。
[0005]二、用戶與環(huán)境的互動(dòng)競(jìng)技交互模式(PVE, Player VS Environment),意為用戶與 非用戶控制角色(NPC, Non-Player-Controlled Character)之間形成的互動(dòng)競(jìng)技。所述 NPC由網(wǎng)絡(luò)游戲系統(tǒng)中的NPC系統(tǒng)控制,NPC系統(tǒng)中包括NPC的仿真智能(Al,Artificial Intelligence)模塊,這些Al模塊是指指游戲中NPC的控制邏輯,可以使游戲中的NPC擁有 獨(dú)立的仿真智能的能力,用戶角色可以與NPC角色進(jìn)行游戲交互,例如對(duì)話、獲得服務(wù)或者 進(jìn)行戰(zhàn)斗等游戲交互。
[0006]在目前的網(wǎng)絡(luò)游戲系統(tǒng),尤其是國(guó)戰(zhàn)類的網(wǎng)絡(luò)游戲系統(tǒng)中,主要是以PVP模式為 主導(dǎo),但網(wǎng)絡(luò)游戲中也需要提供比較豐富的PVE模式來滿足角色的成長(zhǎng)需求,同時(shí)也要求 PVE模式的運(yùn)行處理中能有較好的用戶體驗(yàn)。
[0007]目前網(wǎng)絡(luò)游戲系統(tǒng)可以根據(jù)角色之間的阻擋方式分為有動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系 統(tǒng)和無動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系統(tǒng)。
[0008]所述有動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系統(tǒng)是指在該游戲系統(tǒng)中,角色模型不但可以被地圖 中的固定場(chǎng)景(如山、石頭、房屋等)阻擋,而且還可以被其它角色模型阻擋。所述角色模型 是該角色的模擬的2D或3D形象,在2D網(wǎng)絡(luò)游戲中通常為2D形象,在3D網(wǎng)絡(luò)游戲中通常 為3D形象。
[0009]所述非動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系統(tǒng)是指在該游戲系統(tǒng)中,角色模型可以被地圖中的 固定場(chǎng)景阻擋,但是不必被其它動(dòng)態(tài)的角色模型阻擋。
[0010]在國(guó)戰(zhàn)網(wǎng)絡(luò)游戲中,由于參與游戲的角色的數(shù)量眾多,為了保證畫面中角色模型 所處位置清晰度,保證為用戶提供良好的畫面操作體驗(yàn),需要網(wǎng)絡(luò)游戲系統(tǒng)所控制的各個(gè) 角色模型之間在進(jìn)行近距交互時(shí),在視覺上盡量不能相互重疊。所述近距交互例如可以是 NPC角色攻擊用戶角色的攻擊交互,或者其它的對(duì)話交互等。
[0011]在有動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系統(tǒng)中,由于該游戲系統(tǒng)有一套專用的阻擋算法來實(shí)時(shí) 計(jì)算角色模型間的動(dòng)態(tài)阻擋信息,因此各個(gè)角色模型之間在視覺上相互重疊的概率較低, 其畫面操作體驗(yàn)較好,但是由于要實(shí)時(shí)計(jì)算的動(dòng)態(tài)阻擋信息,因此服務(wù)器的系統(tǒng)開銷太大,其中包括CPU的開銷和存儲(chǔ)資源的開銷。
[0012]在無動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系統(tǒng)中,由于其不必實(shí)時(shí)計(jì)算動(dòng)態(tài)阻擋信息,其系統(tǒng)開 銷相對(duì)有動(dòng)態(tài)阻擋的游戲系統(tǒng)較小,因此,目前在以PVP模式為主以PVE模式為輔的大型國(guó) 戰(zhàn)網(wǎng)絡(luò)游戲中通常采用無動(dòng)態(tài)阻擋方式。
[0013]在目前的無動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲中,為了能解決用戶角色和NPC在近距交互的過 程中減少模型重疊的問題,給用戶提供比較好的PVE視覺體驗(yàn);需要NPC系統(tǒng)的Al模塊實(shí) 時(shí)檢測(cè)計(jì)算與角色之間的坐標(biāo)位置并能夠動(dòng)態(tài)調(diào)整NPC角色自身的坐標(biāo)。具體包括:
[0014]假設(shè)NPC角色的當(dāng)前坐標(biāo)為(xl,yl),半徑為rl,用戶角色的當(dāng)前坐標(biāo)為(x2,y2), 半徑為r2,NPC角色與用戶角色發(fā)生近距交互(如NPC角色攻擊用戶角色)的半徑為ar ;當(dāng) NPC角色產(chǎn)生攻擊目標(biāo)時(shí),在每個(gè)NPC角色的驅(qū)動(dòng)時(shí)鐘周期來到時(shí),計(jì)算NPC角色和用戶角 色之間的坐標(biāo)點(diǎn)的距離值S。
[0015]如果s>rl+r2+ar,則所述NPC角色繼續(xù)向目標(biāo)角色移動(dòng)并向視野中的所有角色發(fā) 送移動(dòng)消息包;
[0016]如果s〈rl+r2+ar,則所述NPC角色立刻停止移動(dòng)并向視野中的所有角色發(fā)送移動(dòng) 停止消息包。
[0017]所述攻擊同一個(gè)用戶的NPC角色根據(jù)收到的其它NPC角色發(fā)送的是否移動(dòng)的消息 包來動(dòng)態(tài)計(jì)算并調(diào)整自身的坐標(biāo)位置,從而避免與其它NPC角色模型重合。
[0018]因此,目前的無動(dòng)態(tài)阻擋的網(wǎng)絡(luò)游戲系統(tǒng)中,為了能解決用戶角色和NPC在近距 交互的過程中減少模型重疊的幾率,每個(gè)NPC需要在每次驅(qū)動(dòng)時(shí)鐘周期到來時(shí)進(jìn)行實(shí)時(shí)的 復(fù)雜的動(dòng)態(tài)計(jì)算,即:不但要計(jì)算自身與攻擊目標(biāo)之間的距離S,還要根據(jù)s的長(zhǎng)短判斷是 否移動(dòng)并發(fā)送相關(guān)的消息包,同時(shí)還要接收其它NPC的消息包根據(jù)其它NPC的移動(dòng)情況重 新計(jì)算自身的坐標(biāo)位置,所要進(jìn)行的運(yùn)算量非常大,會(huì)占用大量的系統(tǒng)開銷,如CPU開銷、 存儲(chǔ)開銷、帶寬開銷等。尤其是在大型網(wǎng)絡(luò)游戲系統(tǒng)中,服務(wù)器中的NPC角色數(shù)量通常會(huì)達(dá) 到萬以上的數(shù)量級(jí),這時(shí)對(duì)NPC角色進(jìn)行驅(qū)動(dòng)的NPC系統(tǒng)的開銷更是非常巨大的。
【發(fā)明內(nèi)容】
[0019]有鑒于此,本發(fā)明的主要目的在于提供一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)及其處理方 法,以降低用戶角色和NPC的模型重疊的幾率,同時(shí)降低網(wǎng)絡(luò)游戲系統(tǒng)的開銷。
[0020]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0021]一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的處理方法,該方法在非用戶控制角色NPC選中用 戶角色作為近距交互目標(biāo)之后,包括:
[0022]確定所述NPC選中所述用戶角色為近距交互目標(biāo)前,與該用戶角色發(fā)生所述近距 交互的所有角色的總數(shù)N,確定模擬旋轉(zhuǎn)弧度C=NXa,其中所述a為指定的基準(zhǔn)弧度;
[0023]執(zhí)行位置分配步驟,具體包括:以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從 當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在所述目的坐標(biāo)處是否有 靜態(tài)阻擋,如果有則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,重新 執(zhí)行本位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色進(jìn)行所 述近距交互。
[0024]一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng),包括:[0025]狀態(tài)監(jiān)測(cè)模塊,用于監(jiān)測(cè)NPC的近距交互狀態(tài),在NPC選中用戶角色作為近距交互 目標(biāo)后觸發(fā)所述模擬旋轉(zhuǎn)弧度確定模塊和位置分配模塊;
[0026]模擬旋轉(zhuǎn)弧度確定模塊,用于確定模擬旋轉(zhuǎn)弧度C=NX a,其中所述N為所述NPC選 中所述用戶角色為近距交互目標(biāo)前,與該用戶角色已經(jīng)發(fā)生所述近距交互的所有角色的總 數(shù),所述a為指定的基準(zhǔn)弧度;
[0027]位置分配模塊,用于以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從當(dāng)前坐標(biāo) 向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在所述目的坐標(biāo)處是否有靜態(tài)阻 擋,如果有則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,重新執(zhí)行本 位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色進(jìn)行所述近距交互。
[0028]與現(xiàn)有技術(shù)相比,本發(fā)明在用戶角色和NPC發(fā)生近距交互時(shí),根據(jù)與用戶角色發(fā) 生近距交互的NPC的數(shù)量決定模擬旋轉(zhuǎn)弧度,并以該模擬旋轉(zhuǎn)弧度進(jìn)行模擬旋轉(zhuǎn)后確定目 的坐標(biāo),在沒有靜態(tài)阻擋的情況下命令NPC移動(dòng)到目的坐標(biāo)。從而可以使與同一個(gè)用戶角 色進(jìn)行近距交互的所有NPC可以在該用戶角色周圍相對(duì)均勻的分布,降低了 NPC之間以及 NPC與用戶角色之間的模型重疊的幾率,給用戶提供了比較好的PVE視覺體驗(yàn),同時(shí)運(yùn)算過 程簡(jiǎn)單,不需要NPC角色之間進(jìn)行實(shí)時(shí)的復(fù)雜的動(dòng)態(tài)交互計(jì)算,降低了對(duì)網(wǎng)絡(luò)游戲系統(tǒng)的 開銷。
【專利附圖】
【附圖說明】
[0029]圖1為本發(fā)明所述無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的處理方法的一種主要流程圖;
[0030]圖2為本發(fā)明所述的無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的一種組成示意圖;
[0031]圖3為本發(fā)明所述NPC與用戶角色進(jìn)行近距交互時(shí)對(duì)NPC進(jìn)行位置分配的一種示 意圖;
[0032]圖4為利用本發(fā)明所述的處理方法對(duì)所有與用戶角色發(fā)生近距交互的NPC進(jìn)行位 置分配的一種示意圖;
[0033]圖5為分級(jí)劃分視野范圍區(qū)域的一種示意圖;
[0034]圖6為本發(fā)明所述的無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的又一種組成示意圖。
【具體實(shí)施方式】
[0035]下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說明
[0036]圖1為本發(fā)明所述無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的處理方法的一種主要流程圖;參見 圖1,該方法主要包括:
[0037]101、監(jiān)測(cè)非用戶控制角色NPC的近距交互狀態(tài),在NPC選中用戶角色作為近距交 互目標(biāo)之后,執(zhí)行后續(xù)步驟。所述用戶角色就是用戶控制角色,即游戲操作者的角色。所述 近距交互是指游戲角色之間進(jìn)行近距離的指令交互,例如NPC攻擊用戶角色就是近距交互 的一種。所述近距交互也不限定于角色的攻擊,也可是其它近距離的交互,例如角色間的對(duì) 話或其他動(dòng)作交互。
[0038]102、確定所述NPC選中所述用戶角色為近距交互目標(biāo)前,與該用戶角色發(fā)生所述 近距交互的所有角色的總數(shù)N,確定模擬旋轉(zhuǎn)弧度C=NXa,其中所述a為指定的基準(zhǔn)弧度。[0039]103、執(zhí)行位置分配步驟,具體包括:以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述 NPC從當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在所述目的坐標(biāo)處 是否有靜態(tài)阻擋,如果有則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度 C,重新執(zhí)行本位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色 進(jìn)行所述近距交互。所述指定方向可以指定逆時(shí)針方向,也可以指定順時(shí)針方向。
[0040]圖2為本發(fā)明所述的無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的一種組成示意圖。本發(fā)明所述的 無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)200與現(xiàn)有的無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的區(qū)別是本發(fā)明具有如 下模塊,用于執(zhí)行本發(fā)明的方法:
[0041]狀態(tài)監(jiān)測(cè)模塊201,用于監(jiān)測(cè)NPC的近距交互狀態(tài),在NPC選中用戶角色作為近距 交互目標(biāo)后觸發(fā)所述模擬旋轉(zhuǎn)弧度確定模塊202和位置分配模塊203 ;
[0042]模擬旋轉(zhuǎn)弧度確定模塊202,用于確定模擬旋轉(zhuǎn)弧度C=NXa,其中所述N為所述 NPC選中所述用戶角色為近距交互目標(biāo)前,與該用戶角色已經(jīng)發(fā)生所述近距交互的所有角 色的總數(shù),所述a為指定的基準(zhǔn)弧度;
[0043]位置分配模塊203,用于以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從當(dāng)前坐 標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在所述目的坐標(biāo)處是否有靜態(tài)阻 擋,如果有則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,重新執(zhí)行本 位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色進(jìn)行所述近距交互。
[0044]由于本發(fā)明主要是對(duì)網(wǎng)絡(luò)游戲系統(tǒng)中的NPC進(jìn)行處理,因此上述模塊通常設(shè)置在 網(wǎng)絡(luò)游戲系統(tǒng)中的NPC系統(tǒng)內(nèi),屬于NPC的Al模塊中的一部分,至于本發(fā)明所述的無動(dòng)態(tài) 阻擋網(wǎng)絡(luò)游戲系統(tǒng)的其它處理模塊,可以采用現(xiàn)有的無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的相關(guān)模 塊,本發(fā)明不再贅述。
[0045]本發(fā)明中,所述基準(zhǔn)弧度a可以為:/m,其中m為正整數(shù),所述遞加的指定弧度也 可以為在一種較佳的實(shí)施例中,所述基準(zhǔn)弧度a和所述遞加的指定弧度為/4。
[0046]如圖3所示為本發(fā)明所述NPC與用戶角色進(jìn)行近距交互時(shí)對(duì)NPC進(jìn)行位置分配 的一種示意圖。參見圖3,其中虛線圓圈301以用戶角色坐標(biāo)點(diǎn)為圓心,其半徑為用戶角色 模型半徑r2與NPC模型半徑rl之和,所述虛線圓圈302和虛線圓圈301之間的半徑差為 NPC與用戶角色發(fā)生近距交互的有效交互范圍,例如對(duì)于攻擊交互,所述虛線圓圈302和虛 線圓圈301之間的半徑差就是NPC的有效攻擊范圍。本發(fā)明所述步驟101中,監(jiān)測(cè)NPC的 近距交互狀態(tài)可以利用現(xiàn)有技術(shù)的NPC系統(tǒng)的方式來監(jiān)測(cè),本說明書不再贅述。
[0047]當(dāng)某一個(gè)NPC選中用戶角色作為近距交互的目標(biāo)后,例如圖3所示NPC311選中用 戶角色310為攻擊目標(biāo)后,執(zhí)行所述步驟102。在步驟102中,如果所述NPC311是與所述用 戶角色310發(fā)生所述近距交互的第一個(gè)NPC,例如如果該NPC311是第一個(gè)攻擊該用戶角色 310的NPC,則該NPC311選中用戶角色310為近距交互目標(biāo)前與該用戶角色310發(fā)生所述 近距交互的所有角色的總數(shù)N=0,因此所述模擬旋轉(zhuǎn)弧度C=NXa=0。那么在步驟103中,第 一個(gè)攻擊所述用戶角色310的NPC311不進(jìn)行所述模擬旋轉(zhuǎn),而是直接以該NPC311的當(dāng)前 坐標(biāo)作為目的坐標(biāo),判斷地圖上在該目的坐標(biāo)處是否有靜態(tài)阻擋,所述靜態(tài)阻擋就是角色 模型可以被游戲系統(tǒng)的地圖中的固定場(chǎng)景阻擋,例如所述目的坐標(biāo)處為諸如山、石頭、房屋 等靜態(tài)阻擋物體,則該目的坐標(biāo)出就有靜態(tài)阻擋,如果所述目的坐標(biāo)處沒有所述靜態(tài)阻擋物體,則該目的坐標(biāo)處沒有靜態(tài)阻擋。
[0048]如果所述目的坐標(biāo)處沒有靜態(tài)阻擋則命令所述NPC311移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色310進(jìn)行所述近距交互。此時(shí)由于NPC311是第一個(gè)攻擊用戶角色310的 NPC,當(dāng)前坐標(biāo)已經(jīng)是目的坐標(biāo),因此不必移動(dòng),就在當(dāng)前坐標(biāo)攻擊所述用戶角色310。
[0049]如果所述目的坐標(biāo)處有靜態(tài)阻擋則將當(dāng)前模擬旋轉(zhuǎn)弧度C (當(dāng)前C=O)遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,例如所述指定弧度為/4時(shí),則新的模擬旋轉(zhuǎn)弧度C= /4, 之后重新執(zhí)行步驟103。所述步驟103中,所述以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述 NPC從當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo)的具體處理過程包括以下步驟 131 至 133:
[0050]131、如圖3所示,以所述用戶角色310的當(dāng)前坐標(biāo)點(diǎn)為坐標(biāo)原點(diǎn),確定該用戶角色 310和所述NPC311的當(dāng)前坐標(biāo)點(diǎn)連線與地圖參考線(通常為水平線)之間的夾角弧度A ;
[0051]132、以所述弧度A為基準(zhǔn)向所述指定方向(例如可以指定為逆時(shí)針方向,當(dāng)然也可以指定為順時(shí)針方向)模擬旋轉(zhuǎn)所述C弧度后得到弧度B ;
[0052]133、計(jì)算所述目的坐標(biāo)的X坐標(biāo)和y坐標(biāo),其中:
[0053]X坐標(biāo)=用戶角色的X坐標(biāo)+ (NPC模型半徑rl+用戶角色模型半徑r2+NPC進(jìn)行所述近距交互的有效距離si) Xcos(B);
[0054]y坐標(biāo)=用戶角色的y坐標(biāo)+ (NPC模型半徑rl+用戶角色模型半徑r2+NPC進(jìn)行所述近距交互的有效距離si) Xsin(B);
[0055]所述NPC進(jìn)行所述近距交互的有效距離為:從NPC進(jìn)行所述近距交互的有效距離范圍內(nèi)選擇的一個(gè)值。例如對(duì)于攻擊交互,在一種優(yōu)選實(shí)施方式中可以進(jìn)行優(yōu)化選擇,如果某種NPC的最大有效攻擊距離小于200厘米,則從該最大有效攻擊距離的709^90%范圍之內(nèi)隨機(jī)選擇一個(gè)值作為所述Si。如果某種NPC的最大有效攻擊距離大于200厘米,則從該最大有效攻擊距離的359^45%范圍之內(nèi)隨機(jī)選擇一個(gè)值作為所述Si。
[0056]在計(jì)算出目的坐標(biāo)的X和y坐標(biāo)后,則命令所述NPC311移動(dòng)到該目的坐標(biāo)。由于在NPC311移動(dòng)的過程中,所述用戶角色310也可能會(huì)移動(dòng),因此在所述NPC311移動(dòng)到所述目的坐標(biāo)的過程中,進(jìn)一步包括:
[0057]判斷所述目的坐標(biāo)與所述用戶角色310的當(dāng)前坐標(biāo)之間的距離是否超過該 NPC311進(jìn)行所述近距交互的最大有效距離(例如該NPC的最大有效攻擊距離),如果未超過,則繼續(xù)向所述目的坐標(biāo)移動(dòng);否則調(diào)小該NPC進(jìn)行所述近距交互的有效距離Si,例如如果某種NPC的最大有效攻擊距離小于200厘米,則從該最大有效攻擊距離的19^8%范圍之內(nèi)隨機(jī)選擇一個(gè)值作為所述sI,如果某種NPC的最大有效攻擊距離大于200厘米,則從該最大有效攻擊距離的209^35%范圍之內(nèi)隨機(jī)選擇一個(gè)值作為所述Si ;在調(diào)小所述Si之后,重新計(jì)算所述目的坐標(biāo)的X坐標(biāo)和y坐標(biāo),并命令所述NPC向新的目的坐標(biāo)移動(dòng)。
[0058]在一種實(shí)施例中,所述步驟103中,當(dāng)所述目的坐標(biāo)處有靜態(tài)阻擋時(shí),還可進(jìn)一步判斷當(dāng)前的模擬旋轉(zhuǎn)弧度C是否為2 (即模擬旋轉(zhuǎn)是否達(dá)到整整一圈),如果是則取消NPC 311對(duì)用戶角色310進(jìn)行近距交互的關(guān)系(例如取消NPC311對(duì)用戶角色310的攻擊關(guān)系), 否則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加所述指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,重新執(zhí)行所述步驟103。
[0059]如果所述NPC311成功移動(dòng)到了目的坐標(biāo),并與所述用戶角色310進(jìn)行近距交互(例如NPC311開始攻擊用戶角色310),之后如果有新的NPC選中用戶角色310作為近距交互目標(biāo)(例如選中用戶角色310作為攻擊目標(biāo))之后,則對(duì)該NPC同樣執(zhí)行上述的步驟102 和步驟103,只不過所述與該用戶角色發(fā)生所述近距交互的所有角色的總數(shù)N不再是0,從而初始的模擬旋轉(zhuǎn)弧度C也不是O。
[0060]圖4為利用本發(fā)明所述的處理方法對(duì)所有與用戶角色發(fā)生近距交互的NPC進(jìn)行位置分配的一種示意圖。參見圖4,針對(duì)所有將所述用戶角色310作為近距交互目標(biāo)的NPC, 如圖4中的NPC311至NPC316,都要執(zhí)行所述步驟102和103,最終所有將所述用戶角色310 作為近距交互目標(biāo)的NPC不但處在與用戶角色310進(jìn)行所述近距交互(如攻擊用戶角色)的有效交互范圍內(nèi),即所述虛線圓圈302和虛線圓圈301之間,從而使得NPC模型和用戶角色模型之間不會(huì)重疊,而且NPC模型也相對(duì)均衡地分配在用戶角色310的周圍,使得NPC模型之間的重疊幾率也非常低,因此本發(fā)明可以給用戶提供比較好的PVE視覺體驗(yàn)。如果NPC 模型偏大(如所述NPC316)的情況下,則NPC模型之間會(huì)有部分重合,但是不影響總體的PVE 視覺體驗(yàn)。如本領(lǐng)域技術(shù)人員所知道的,所述NPC模型和用戶角色模型是指在網(wǎng)絡(luò)游戲中所述NPC和用戶角色分別對(duì)應(yīng)的2D形象或3D形象,在2D網(wǎng)絡(luò)游戲中通常為2D形象,在3D 網(wǎng)絡(luò)游戲中通常為3D形象。本發(fā)明可以適用于2D網(wǎng)絡(luò)游戲也可以適用于3D網(wǎng)絡(luò)游戲,但尤其適用于3D網(wǎng)絡(luò)游戲。
[0061]同時(shí),由于本發(fā)明處理簡(jiǎn)單,不需要像現(xiàn)有技術(shù)那樣在NPC角色之間進(jìn)行實(shí)時(shí)的復(fù)雜的動(dòng)態(tài)交互計(jì)算,因此降低了對(duì)網(wǎng)絡(luò)游戲系統(tǒng)的開銷。
[0062]由于某些NPC與用戶角色坐標(biāo)點(diǎn)連線與地圖參考線之間的夾角弧度A有可能很大,例如接近2 ,如果再逆時(shí)針旋轉(zhuǎn)所述模擬旋轉(zhuǎn)弧度C會(huì)大于2 ,因此在一種實(shí)施例中,如果所述基準(zhǔn)弧度a和所述遞加的指定弧度為:/m,則在步驟102中,在得到所述總數(shù) N之后,利用C=NX a確定模擬旋轉(zhuǎn)弧度C之前,進(jìn)一步包括:對(duì)N模M,所述M=2 /a,再將所述模值賦給N ;之后再利用C=NXa確定所述C。
[0063]本發(fā)明中,所述NPC由網(wǎng)絡(luò)游戲系統(tǒng)中的NPC系統(tǒng)驅(qū)動(dòng),為了進(jìn)一步降低對(duì)網(wǎng)絡(luò)游戲系統(tǒng)的開銷,尤其是降低NPC系統(tǒng)的開銷,在一種實(shí)施例中,本發(fā)明的方法進(jìn)一步包括: 監(jiān)測(cè)網(wǎng)絡(luò)游戲系統(tǒng)服務(wù)器的當(dāng)前負(fù)載狀況,根據(jù)監(jiān)測(cè)到的負(fù)載狀況動(dòng)態(tài)調(diào)整所述NPC系統(tǒng)對(duì)所述NPC的驅(qū)動(dòng)(Tick)時(shí)鐘間隔,其中所述網(wǎng)絡(luò)游戲系統(tǒng)服務(wù)器的當(dāng)前負(fù)載越大則對(duì)應(yīng)調(diào)整的NPC的驅(qū)動(dòng)時(shí)鐘間隔越長(zhǎng)。
[0064]例如如下表1為驅(qū)動(dòng)·時(shí)鐘間隔長(zhǎng)短的優(yōu)缺點(diǎn):
[0065]
【權(quán)利要求】
1.一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng)的處理方法,其特征在于,在非用戶控制角色NPC選中用戶角色作為近距交互目標(biāo)之后,包括:確定所述NPC選中所述用戶角色為近距交互目標(biāo)前,與該用戶角色發(fā)生所述近距交互的所有角色的總數(shù)N,確定模擬旋轉(zhuǎn)弧度C=NXa,其中所述a為指定的基準(zhǔn)弧度;執(zhí)行位置分配步驟,具體包括:以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在所述目的坐標(biāo)處是否有靜態(tài)阻擋,如果有則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,重新執(zhí)行本位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色進(jìn)行所述近距交互。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo),具體包括:以所述用戶角色的當(dāng)前坐標(biāo)點(diǎn)為坐標(biāo)原點(diǎn),確定該用戶角色和所述NPC的當(dāng)前坐標(biāo)點(diǎn)連線與地圖參考線之間的夾角弧度A ;以所述弧度A為基準(zhǔn)向所述指定方向模擬旋轉(zhuǎn)所述C弧度后得到弧度B ;計(jì)算所述目的坐標(biāo)的X坐標(biāo)和y坐標(biāo),其中:X坐標(biāo)=用戶角色的X坐標(biāo)+ (NPC模型半徑rl+用戶角色模型半徑r2+NPC進(jìn)行所述近距交互的有效距離si) Xcos(B);I坐標(biāo)=用戶角色的I坐標(biāo)+ (NPC模型半徑rl+用戶角色模型半徑r2+NPC進(jìn)行所述近距交互的有效距離si) Xsin(B);`NPC進(jìn)行所述近距交互的有效距離為:從NPC進(jìn)行所述近距交互的有效距離范圍內(nèi)選擇的一個(gè)值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述NPC移動(dòng)到所述目的坐標(biāo)的過程中,進(jìn)一步包括:判斷所述目的坐標(biāo)與所述用戶角色的當(dāng)前坐標(biāo)之間的距離是否超過該NPC進(jìn)行所述近距交互的最大有效距離,如果未超過,則該NPC繼續(xù)向所述目的坐標(biāo)移動(dòng);否則調(diào)小該 NPC進(jìn)行所述近距交互的有效距離Si,并重新計(jì)算所述目的坐標(biāo)的X坐標(biāo)和y坐標(biāo),并命令該NPC向新的目的坐標(biāo)移動(dòng)。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述基準(zhǔn)弧度a為:/m,其中m為正整數(shù);所述遞加的指定弧度為:n /m ;所述在確定所述N之后,確定模擬旋轉(zhuǎn)弧度C之前,進(jìn)一步包括:對(duì)N模M,所述M=2 /a,再將所述模值賦給N ;之后再利用C=NXa確定所述C。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,當(dāng)所述目的坐標(biāo)處有靜態(tài)阻擋時(shí),進(jìn)一步判斷當(dāng)前的模擬旋轉(zhuǎn)弧度C是否為2^1,如果是則取消所述NPC對(duì)所述用戶角色進(jìn)行近距交互的關(guān)系,否則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的模擬旋轉(zhuǎn)弧度C,重新執(zhí)行所述位置分配步驟。
6.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其特征在于,該方法進(jìn)一步包括:監(jiān)測(cè)網(wǎng)絡(luò)游戲系統(tǒng)服務(wù)器的當(dāng)前負(fù)載狀況,根據(jù)監(jiān)測(cè)到的負(fù)載狀況動(dòng)態(tài)調(diào)整對(duì)所述NPC的驅(qū)動(dòng)時(shí)鐘間隔,其中所述網(wǎng)絡(luò)游戲系統(tǒng)服務(wù)器的當(dāng)前負(fù)載越大則對(duì)應(yīng)調(diào)整的NPC的驅(qū)動(dòng)時(shí)鐘間隔越長(zhǎng)。
7.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其特征在于,該方法進(jìn)一步包括:對(duì)所述NPC視野范圍內(nèi)的角色對(duì)象進(jìn)行視野搜索,根據(jù)搜索結(jié)果維護(hù)視野列表中的角色對(duì)象個(gè)數(shù);根據(jù)該NPC視野列表中的角色對(duì)象個(gè)數(shù)動(dòng)態(tài)調(diào)整該NPC的觸發(fā)視野搜索的移動(dòng)距離和視野搜索范圍,其中:所述NPC視野列表中的角色對(duì)象個(gè)數(shù)越多,則對(duì)應(yīng)調(diào)整的該 NPC的觸發(fā)視野搜索的移動(dòng)距離越小、視野搜索范圍越小。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述NPC對(duì)視野范圍內(nèi)的角色對(duì)象進(jìn)行視野搜索,根據(jù)搜索結(jié)果維護(hù)視野列表中的角色對(duì)象個(gè)數(shù),根據(jù)該NPC視野列表中的角色對(duì)象個(gè)數(shù)動(dòng)態(tài)調(diào)整該NPC的觸發(fā)視野搜索的移動(dòng)距離和視野搜索范圍,具體包括:在游戲地圖上劃分第一級(jí)視野范圍區(qū)域和第二級(jí)視野范圍區(qū)域,其中第一級(jí)視野范圍區(qū)域?yàn)榈诙?jí)視野范圍區(qū)域的整數(shù)倍;NPC默認(rèn)在跨第一級(jí)視野范圍區(qū)域時(shí)對(duì)該第一級(jí)視野范圍區(qū)域內(nèi)的角色對(duì)象進(jìn)行一次視野搜索;在NPC每次進(jìn)行視野搜索之后根據(jù)搜索結(jié)果維護(hù)該NPC視野列表中的角色對(duì)象個(gè)數(shù), 并判斷該NPC視野列表中的角色對(duì)象的個(gè)數(shù)是否超過指定的閾值,如果未超過則后續(xù)在跨第一級(jí)視野范圍區(qū)域時(shí)對(duì)該第一級(jí)視野范圍區(qū)域內(nèi)的角色對(duì)象進(jìn)行一次視野搜索,否則后續(xù)在跨第二級(jí)視野范圍區(qū)域時(shí)對(duì)該第二級(jí)視野范圍區(qū)域內(nèi)的角色對(duì)象進(jìn)行一次視野搜索。
9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,所述對(duì)NPC視野范圍內(nèi)的角色對(duì)象進(jìn)行視野搜索,根據(jù)搜索結(jié)果維護(hù)視野列表中的角色對(duì)象個(gè)數(shù),具體包括:搜索出在所述NPC視野范圍內(nèi)的所有角色對(duì)象;確定所搜索出的各個(gè)角色對(duì)象的類型;根據(jù)所述角色對(duì)象的類型、以及預(yù)先設(shè)定的各角色對(duì)象類型的視野加入關(guān)系信息,判定是否將所述角色對(duì)象加入該NPC的視野列表;刪除在原視野列表中存在,但在新的視野范圍內(nèi)搜索不到的角色對(duì)象。
10.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其特征在于,該網(wǎng)絡(luò)游戲系統(tǒng)在計(jì)算地圖中任兩個(gè)坐標(biāo)點(diǎn)間的距離時(shí),包括:以所述兩個(gè)坐標(biāo)點(diǎn)的連線作為一直角三角形的斜邊,以該兩個(gè)坐標(biāo)點(diǎn)作為該直角三角形的頂點(diǎn)繪制直角三角形;確定所述直角三角形的兩個(gè)直角邊的長(zhǎng)度,其中A為長(zhǎng)直角邊的長(zhǎng)度,B為短直角邊的長(zhǎng)度;采用S=A+B/2計(jì)算所述兩個(gè)坐標(biāo)點(diǎn)間的距離。
11.一種無動(dòng)態(tài)阻擋網(wǎng)絡(luò)游戲系統(tǒng),其特征在于,包括:狀態(tài)監(jiān)測(cè)模塊,用于監(jiān)測(cè)NPC的近距交互狀態(tài),在NPC選中用戶角色作為近距交互目標(biāo)后觸發(fā)所述模擬旋轉(zhuǎn)弧度確定模塊和位置分配模塊;模擬旋轉(zhuǎn)弧度確定模塊,用于確定模擬旋轉(zhuǎn)弧度C=NX a,其中所述N為所述NPC選中所述用戶角色為近距交互目標(biāo)前,與該用戶角色已經(jīng)發(fā)生所述近距交互的所有角色的總數(shù), 所述a為指定的基準(zhǔn)弧度;位置分配模塊,用于以用戶角色的當(dāng)前坐標(biāo)點(diǎn)為圓心,計(jì)算所述NPC從當(dāng)前坐標(biāo)向指定方向模擬旋轉(zhuǎn)C弧度后的目的坐標(biāo);判斷地圖上在所述目的坐標(biāo)處是否有靜態(tài)阻擋,如果有則將當(dāng)前模擬旋轉(zhuǎn)弧度C遞加指定弧度后得到新的 模擬旋轉(zhuǎn)弧度C,重新執(zhí)行本位置分配步驟;否則命令所述NPC移動(dòng)到該目的坐標(biāo)處,并與目標(biāo)用戶角色進(jìn)行所述近距交互。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括:負(fù)載監(jiān)測(cè)調(diào)節(jié)模塊,用于監(jiān)測(cè)網(wǎng)絡(luò)游戲系統(tǒng)服務(wù)器的當(dāng)前負(fù)載狀況,根據(jù)監(jiān)測(cè)到的負(fù)載狀況動(dòng)態(tài)調(diào)整對(duì)所述NPC的驅(qū)動(dòng)時(shí)鐘間隔,其中所述網(wǎng)絡(luò)游戲系統(tǒng)服務(wù)器的當(dāng)前負(fù)載越大則對(duì)應(yīng)調(diào)整的NPC的驅(qū)動(dòng)時(shí)鐘間隔越長(zhǎng)。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括:視野搜索模塊,用于對(duì)所述NPC視野范圍內(nèi)的角色對(duì)象進(jìn)行視野搜索,根據(jù)搜索結(jié)果維護(hù)視野列表中的角色對(duì)象個(gè)數(shù);根據(jù)該NPC視野列表中的角色對(duì)象個(gè)數(shù)動(dòng)態(tài)調(diào)整該NPC 的觸發(fā)視野搜索的移動(dòng)距離和視野搜索范圍,其中:所述NPC視野列表中的角色對(duì)象個(gè)數(shù)越多,則對(duì)應(yīng)調(diào)整的該NPC的觸發(fā)視野搜索的 移動(dòng)距離越小、視野搜索范圍越小。
【文檔編號(hào)】G06F19/00GK103593546SQ201210293556
【公開日】2014年2月19日 申請(qǐng)日期:2012年8月17日 優(yōu)先權(quán)日:2012年8月17日
【發(fā)明者】劉林, 丁曉成 申請(qǐng)人:騰訊科技(深圳)有限公司