• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    采用改進(jìn)HPA*算法的大型游戲地圖路徑規(guī)劃

    2023-10-11 02:25:14李藝貴邱國鵬
    三明學(xué)院學(xué)報(bào) 2023年3期
    關(guān)鍵詞:層級關(guān)鍵區(qū)塊

    李藝貴,郭 銳,邱國鵬,2

    (1.三明學(xué)院 藝術(shù)與設(shè)計(jì)學(xué)院,福建 三明 365004;2.克拉斯諾達(dá)爾文化學(xué)院,俄羅斯 克拉斯諾達(dá)爾 350072)

    在計(jì)算機(jī)游戲設(shè)計(jì)中,游戲角色自動(dòng)尋路到指定地點(diǎn)并生成最短可達(dá)路徑是最基礎(chǔ)和常用的技術(shù),如圖1。對于小地圖的游戲來說,使用一些基本的尋路算法就可以很好地解決尋路問題。然而,當(dāng)游戲場景地圖龐大,尋路的兩點(diǎn)距離很長且中間有很多障礙物時(shí),傳統(tǒng)的尋路算法就會遇到性能瓶頸,出現(xiàn)角色等待時(shí)間過長、走錯(cuò)路、游戲畫面卡頓等問題。因此,在游戲角色長距離尋路時(shí),需要改進(jìn)算法,以求解兼顧計(jì)算效率和響應(yīng)速度的最短路徑,減小節(jié)點(diǎn)計(jì)算量,提高運(yùn)算速度。針對這些問題,本文提出基于HPA*的改進(jìn)算法,以提高游戲角色自動(dòng)尋路的速度,從而更好地滿足游戲設(shè)計(jì)的需求。

    1 相關(guān)研究

    針對最短路徑求解問題,Dijkstra、Floyd、A*[1]等算法相繼被提出并被廣泛應(yīng)用。然而,Dijkstra和Floyd算法的時(shí)間和空間復(fù)雜度很高,其中Dijkstra算法的時(shí)間和空間復(fù)雜度均為O(N2),Floyd算法的時(shí)間復(fù)雜度為O(N3),空間復(fù)雜度為O(N2)。在游戲中,這種復(fù)雜度的算法很少被使用。相比之下,A*算法是一種啟發(fā)式最短路徑規(guī)劃方法,時(shí)間平均復(fù)雜度為O(NlgN)。A*算法常被用于小地圖尋路規(guī)劃,但在大規(guī)模地圖的長距離尋路時(shí),它會消耗大量計(jì)算量,導(dǎo)致CPU被尋路阻塞的情況出現(xiàn)。因此,在設(shè)計(jì)大場景游戲地圖時(shí),有必要提供兼顧搜索速度和效率的改進(jìn)算法,以提高游戲角色自動(dòng)尋路的效率和性能。

    Hotle等[2-3]提出了一種基于層次化的A*算法,稱為HPA(hierarchical path-finding)算法,用于解決大規(guī)模地圖上的路徑規(guī)劃問題。相對于傳統(tǒng)的A*算法,HPA*算法將地圖劃分為多個(gè)區(qū)塊,并通過關(guān)鍵節(jié)點(diǎn)將這些區(qū)塊連接起來,形成抽象地圖。在區(qū)塊中,A*算法能夠有效地尋找最短路徑。如果起點(diǎn)和終點(diǎn)在同一區(qū)塊中,直接使用A*算法尋找最短路徑即可。而當(dāng)起點(diǎn)和終點(diǎn)位于不同的區(qū)塊時(shí),需要在連接這些區(qū)塊的關(guān)鍵節(jié)點(diǎn)中尋找最短路徑。這一過程可以在抽象地圖上使用A*算法進(jìn)行,從而減少了搜索空間,提高了搜索速度。

    當(dāng)前,HPA*算法的研究主要集中在工業(yè)機(jī)器人路徑規(guī)劃方面,以減少運(yùn)動(dòng)響應(yīng)延遲、降低規(guī)劃時(shí)間和內(nèi)存負(fù)載(Lee等[4]、仲朝亮等[5]、Zuo等[6]和李梓遠(yuǎn)等[7])。然而,在游戲地圖中,對于HPA*算法的研究較少,尤其在場景復(fù)雜的大型游戲地圖中。Marc等[8-9]通過將游戲地圖分為多個(gè)抽象層次,逐層搜索后得到完整路徑,實(shí)驗(yàn)驗(yàn)證了游戲地圖的層次抽象表達(dá)可以有效減少路徑規(guī)劃計(jì)算負(fù)荷量。但是,隨著地圖場景變大和復(fù)雜度增加,基本的HPA*分層搜索算法,會導(dǎo)致搜索節(jié)點(diǎn)劇增,影響搜索效率。因此,李艷等[10-11]提出了基于HPA*的分層動(dòng)態(tài)路徑搜索HPLPA*算法。該算法將游戲地圖分層抽象,并在動(dòng)態(tài)環(huán)境中及時(shí)更新,采用 LPA*算法代替A*算法,實(shí)時(shí)尋找抽象路徑再細(xì)化,從而得到最終的路徑規(guī)劃結(jié)果,雖然該算法在一定程度上提高了在大型地圖上的搜索性能,但由于沒有考慮到大型地圖的復(fù)雜性,只適用于含有少量障礙物的空曠地圖。當(dāng)?shù)貓D中存在大量障礙物時(shí),HPA*算法的搜索節(jié)點(diǎn)數(shù)量會劇增,導(dǎo)致預(yù)處理時(shí)間和存儲空間的開銷增加,進(jìn)而影響搜索效率。目前的HPA*改進(jìn)算法的研究主要集中在場景簡單的空曠地圖上,忽略了地圖復(fù)雜性,此外,改進(jìn)算法沒有考慮緩存區(qū)塊間的尋路路徑,都是實(shí)時(shí)的計(jì)算抽象路徑并細(xì)化,如果尋路距離很長,中間有很多障礙物時(shí),實(shí)時(shí)路徑計(jì)算就會遇到性能瓶頸。因此,我們需要進(jìn)一步研究改進(jìn)HPA*算法,結(jié)合緩存技術(shù),減少實(shí)時(shí)計(jì)算量,以適應(yīng)復(fù)雜的大型游戲地圖,提高算法的搜索效率和性能。

    本文針對HPA*算法在搜索大規(guī)模地圖時(shí)可能存在的問題,提出了一種HPA*改進(jìn)算法。該算法基于層級地圖,將原始地圖進(jìn)行抽象映射,從而形成抽象地圖層,并通過在不同層級之間進(jìn)行路徑搜索來緩存關(guān)鍵節(jié)點(diǎn)間的最短路徑和構(gòu)建層級映射矩陣。通過這種方式,可以減少搜索節(jié)點(diǎn)的數(shù)量,提高算法的搜索效率和速度。此外,還設(shè)置了節(jié)點(diǎn)權(quán)重值,以引導(dǎo)尋路方向和規(guī)避closeList循環(huán)遍歷,從而進(jìn)一步提高尋路效率和速度。為了驗(yàn)證該算法的性能,我們在不同尺寸的游戲網(wǎng)格地圖上進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,相比于傳統(tǒng)的A*和HPA*算法,本文提出的算法能夠在搜索效率和速度上都取得很大的提高。

    2 HPA*算法

    2004年,Botea等學(xué)者提出了一種基于A*的多層路徑搜索算法,稱為HPA*算法。該算法通過對地圖進(jìn)行分層,將大地圖轉(zhuǎn)換成多個(gè)小地圖,形成抽象地圖,從而減少搜索空間。HPA*算法的搜索過程包含兩個(gè)主要部分,離線預(yù)處理和實(shí)時(shí)尋路。在離線預(yù)處理階段,算法通過將地圖分層,將大地圖轉(zhuǎn)換為多個(gè)小地圖,形成抽象地圖,并在抽象地圖上尋找關(guān)鍵節(jié)點(diǎn)。在實(shí)時(shí)尋路階段,算法根據(jù)起點(diǎn)和終點(diǎn)所在的區(qū)塊,以及這些區(qū)塊之間的關(guān)鍵節(jié)點(diǎn),對抽象地圖進(jìn)行A*搜索,從而找到最短路徑。通過在不同層級之間進(jìn)行路徑搜索,HPA*算法能夠有效地減少搜索空間,提高搜索效率。

    2.1 離線預(yù)處理

    2.1.1 預(yù)處理地圖

    選取一副游戲地圖進(jìn)行均勻分區(qū),如圖2。地圖被分為30×30的網(wǎng)格單元,每個(gè)網(wǎng)格單元可以稱為節(jié)點(diǎn)。圖3為圖2的分區(qū)結(jié)果,按照每個(gè)區(qū)塊10×10大小,把地圖均勻分成9個(gè)子區(qū)塊。白色節(jié)點(diǎn)代表可行走區(qū)域,藍(lán)色節(jié)點(diǎn)為不可行走區(qū)域。

    圖2 實(shí)際游戲地圖

    圖3 游戲網(wǎng)格地圖

    2.1.2 尋找關(guān)鍵節(jié)點(diǎn)

    在相鄰區(qū)塊的公共邊上選擇左右兩側(cè)單元格作為關(guān)鍵節(jié)點(diǎn)。關(guān)鍵節(jié)點(diǎn)的選擇規(guī)則為:對于任意相鄰的兩個(gè)區(qū)塊如Zi和Zj,選取公共邊上連續(xù)無障礙物區(qū)域作為相鄰區(qū)塊的互通區(qū)域,選擇互通區(qū)域中間左右兩側(cè)單元格作為關(guān)鍵節(jié)點(diǎn)。如圖4所示,區(qū)塊Z0與Z1的公共邊上黃色網(wǎng)格為互通區(qū)域,綠色網(wǎng)格為關(guān)鍵節(jié)點(diǎn)。

    圖4 關(guān)鍵節(jié)點(diǎn)示意圖

    2.1.3 形成抽象地圖

    在區(qū)塊內(nèi)使用A*算法將圖4的關(guān)鍵節(jié)點(diǎn)依次進(jìn)行連接形成intra邊,連接屬于同一個(gè)互通區(qū)域的關(guān)鍵節(jié)點(diǎn)形成inter邊,最終形成抽象地圖,如圖5。

    圖5 抽象地圖

    2.2 實(shí)時(shí)尋路

    2.2.1 抽象尋路

    根據(jù)游戲角色的起點(diǎn)和目標(biāo)位置信息,找到其所在的區(qū)塊,在抽象圖上使用局部A*方法進(jìn)行抽象尋路,得到起點(diǎn)與終點(diǎn)之間的一條抽象路徑,所得抽象路徑如圖6所示。

    圖6 抽象路徑

    2.2.2 細(xì)化路徑

    對抽象路徑上相應(yīng)的關(guān)鍵節(jié)點(diǎn)使用A*算法尋找節(jié)點(diǎn)間的實(shí)際路徑,將抽象路徑細(xì)化為低層級的實(shí)際路徑。HPA*算法采用抽象分層思想加速尋路,解決了大規(guī)模地圖的尋路問題。它的執(zhí)行步驟簡單易懂,易于實(shí)現(xiàn)。通過多層抽象,可以根據(jù)地圖規(guī)模進(jìn)一步縮小搜索空間,從高層到低層逐一細(xì)化得到實(shí)際路徑[12]。相比A*算法,HPA*算法的尋路速度顯著加快。 然而,當(dāng)?shù)貓D中存在大量障礙物或者地圖比較復(fù)雜時(shí),在抽象圖上使用局部A*方法進(jìn)行抽象尋路時(shí),會出現(xiàn)過多的搜索節(jié)點(diǎn),從而影響搜索效率。為了解決這個(gè)問題,本文通過調(diào)整關(guān)鍵節(jié)點(diǎn)選取規(guī)則、構(gòu)建層級映射矩陣和緩存路徑等方式改進(jìn)HPA*算法。

    3 HPA*改進(jìn)算法

    在空間記憶系統(tǒng)研究中,廣泛提出了區(qū)域化多層嵌套的組織方式。該方式認(rèn)為,空間對象可以被劃分為多個(gè)區(qū)塊,并且這些區(qū)塊可以組合成更高級別的空間對象。這種組合形成了區(qū)塊間的包含關(guān)系,這種關(guān)系可以被表示為樹形結(jié)構(gòu)。同時(shí),不同區(qū)塊對象之間也可以存在連通關(guān)系[13]。改進(jìn)算法的核心思想是在離線狀態(tài)下,將游戲地圖分為多個(gè)區(qū)塊,并將每個(gè)區(qū)塊抽象為一個(gè)節(jié)點(diǎn)形成高層級抽象地圖。高層級地圖是低層級地圖的抽象版本,其中低層級地圖中的區(qū)塊可以映射為高層級地圖中的節(jié)點(diǎn),形成類似圖7所示的結(jié)構(gòu)。由該圖可見,該模型主要分為兩層:原始地圖表示層和抽象地圖表示層,抽象地圖層是由原始地圖的關(guān)鍵節(jié)點(diǎn)映射而成。

    圖7 區(qū)塊化多層表示

    該算法首先在抽象地圖中進(jìn)行抽象尋路,形成抽象尋路序列,再在底層地圖進(jìn)行尋路細(xì)化。傳統(tǒng)HPA*算法需要實(shí)時(shí)計(jì)算關(guān)鍵節(jié)點(diǎn)間的最短路徑,這往往會浪費(fèi)過多的計(jì)算性能。為了解決這個(gè)問題,改進(jìn)算法通過構(gòu)建層級映射矩陣,體現(xiàn)層級地圖間的映射關(guān)系,加快尋路細(xì)化過程。在此過程中,首先需要繪制抽象地圖,進(jìn)而計(jì)算區(qū)塊間最短尋路路徑。通過最短路徑的關(guān)鍵節(jié)點(diǎn)對,構(gòu)建層級映射矩陣M。最后,創(chuàng)建哈希表緩存最短路徑,用于將抽象路徑轉(zhuǎn)換為低層級地圖細(xì)化路徑。在映射矩陣中,每個(gè)元素M(i,j)表示從區(qū)塊i到區(qū)塊j的最短路徑中所經(jīng)過的第一個(gè)區(qū)塊。

    在實(shí)時(shí)尋路過程中,改進(jìn)算法首先判斷起點(diǎn)和目標(biāo)點(diǎn)是否在同一個(gè)區(qū)塊,再在映射矩陣M中進(jìn)行抽象尋路,得到從起點(diǎn)區(qū)塊到終點(diǎn)區(qū)塊的抽象路徑,最后進(jìn)行路徑細(xì)化。抽象地圖的節(jié)點(diǎn)數(shù)量比低層級地圖中的節(jié)點(diǎn)數(shù)量要少得多,在抽象地圖中進(jìn)行路徑搜索的復(fù)雜度更低,可以顯著縮短搜索時(shí)間。最后通過設(shè)置節(jié)點(diǎn)權(quán)重值和判斷節(jié)點(diǎn)是否被取,規(guī)避Closelist循環(huán)遍歷,引導(dǎo)尋路方向,提高尋路效率和速度。改進(jìn)算法的流程圖如圖8,實(shí)現(xiàn)步驟分為離線預(yù)處理和實(shí)時(shí)路徑搜索兩個(gè)部分。

    圖8 HPA*改進(jìn)算法的流程圖

    3.1 離線預(yù)處理

    3.1.1 預(yù)處理地圖

    每個(gè)區(qū)塊都被分配了一個(gè)唯一的編號,用于區(qū)分不同的區(qū)塊。如圖3所示,地圖被分為30×30的網(wǎng)格單元,每個(gè)區(qū)塊大小為10×10,將地圖均勻分成9個(gè)子區(qū)塊。從第一行左上角的第一個(gè)區(qū)塊開始,按照從左向右,從右向左,從左向右的順序,依次給9個(gè)區(qū)塊分配編號:0、1、2、一直到8。這樣的編號方式可以方便地對區(qū)塊進(jìn)行標(biāo)識和索引,便于后續(xù)算法的實(shí)現(xiàn)和優(yōu)化。

    區(qū)塊數(shù)據(jù)結(jié)構(gòu)為:Zone { int zoneId; GridNode[] topAbsNode; GridNode[] downAbsNode; GridNode[] leftAbsNode; GridNode[] rightAbsNode }。zoneId為區(qū)塊編號,topAbsNode、downAbsNode、leftAbsNode、rightAbsNode分別為區(qū)塊頂部、下部、左邊、右邊公共邊上關(guān)鍵節(jié)點(diǎn)集合。

    網(wǎng)格單元節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)為:GridNode { Vector2 position; int zoneId; int nodeFindIndex; int weight; enum nodeType{walk; notWalk }; GridNode nodeFather; floatf; floatg; floath}。Position為網(wǎng)格節(jié)點(diǎn)坐標(biāo),zoneId、nodeFindIndex、weight分別為節(jié)點(diǎn)所在區(qū)塊編號、游戲?qū)ぢ反螖?shù)、網(wǎng)格權(quán)重值,nodeType為節(jié)點(diǎn)類型,nodeFather為父節(jié)點(diǎn),f、g、h分別為期望值、實(shí)際代價(jià)值、估計(jì)代價(jià)值。

    3.1.2 選擇關(guān)鍵節(jié)點(diǎn)

    首先在相鄰區(qū)塊的公共邊上定義互通區(qū)域,互通區(qū)域的選擇規(guī)則為:任意相鄰區(qū)塊Zi和Zj,選擇公共邊上連續(xù)無障礙物區(qū)域作為互通區(qū)域,互通區(qū)域兩側(cè)節(jié)點(diǎn)分別組成Ti和Tj,則互通點(diǎn)集E是互通區(qū)域節(jié)點(diǎn)的集合,symm(t)為對稱關(guān)系,t為互通點(diǎn),滿足下列條件:

    E?Ti∪Tj;

    (1)

    ?t∈Ti∪Tj:t∈ E ? symm(t) ∈E;

    (2)

    t.nodeType!=notWalk。

    (3)

    在互通區(qū)域Zi側(cè),選擇中間網(wǎng)格單元作為關(guān)鍵節(jié)點(diǎn),并按照順時(shí)針方向在每個(gè)區(qū)塊內(nèi)為關(guān)鍵節(jié)點(diǎn)設(shè)置唯一的編號,其中,關(guān)鍵節(jié)點(diǎn)a必須符合以下條件:

    i>j? a∈Ti:a∈Tj,

    (4)

    a=E[E.length/4]。

    (5)

    如圖9所示,區(qū)塊Z0與Z1 的公共邊上黃色網(wǎng)格為互通區(qū)域,Z0上綠色網(wǎng)格為關(guān)鍵節(jié)點(diǎn),Z0與Z5公共邊上黃色網(wǎng)格為互通區(qū)域,Z0上綠色網(wǎng)格為關(guān)鍵節(jié)點(diǎn)。在Z0區(qū)塊中按照順時(shí)針方向依次給關(guān)鍵節(jié)點(diǎn)設(shè)置編號:0、1。

    圖9 關(guān)鍵節(jié)點(diǎn)示意圖

    3.1.3 繪制抽象地圖

    抽象地圖是指在每個(gè)區(qū)塊內(nèi),使用A*算法將公共邊上的關(guān)鍵節(jié)點(diǎn)相互連接,進(jìn)行連通測試,從而形成intra邊,記錄下每條邊的權(quán)重值,權(quán)重值表示兩個(gè)關(guān)鍵節(jié)點(diǎn)之間的最短距離,并將每條intra邊的最短路徑保存在數(shù)據(jù)文件中。如圖10,連通圖9的關(guān)鍵節(jié)點(diǎn),形成抽象地圖,每條intra邊的權(quán)值是節(jié)點(diǎn)間最短路徑。

    圖10 抽象地圖

    3.1.4 構(gòu)建區(qū)塊間映射矩陣

    為了構(gòu)建區(qū)塊間的映射矩陣,首先需要計(jì)算區(qū)塊間的最短路徑。為此,在抽象地圖上使用A*算法進(jìn)行抽象尋路,以搜索出區(qū)塊間最短尋路路徑,即起始點(diǎn)區(qū)塊關(guān)鍵節(jié)點(diǎn)到其他區(qū)塊關(guān)鍵節(jié)點(diǎn)的最短路徑。如公式6,在A*算法的啟發(fā)式函數(shù)中,n表示當(dāng)前搜索的關(guān)鍵節(jié)點(diǎn),f(n)表示n的期望值,g(n)表示從起始關(guān)鍵節(jié)點(diǎn)到n的實(shí)際代價(jià),h(n)表示從n到目標(biāo)關(guān)鍵節(jié)點(diǎn)的估計(jì)代價(jià)。在改進(jìn)的算法中,g(n)和h(n)的值可以直接獲取intra邊權(quán)重,從而減少節(jié)點(diǎn)搜索計(jì)算。

    f(n)=g(n)+h(n)

    (6)

    區(qū)塊間的最短路徑可以表示為一條關(guān)鍵節(jié)點(diǎn)的序列,其中每個(gè)關(guān)鍵節(jié)點(diǎn)可以代表一個(gè)區(qū)塊。為了實(shí)現(xiàn)不同區(qū)塊之間的連接和查找,需要構(gòu)建一個(gè)大小為N×N的層級映射矩陣M,存儲了每個(gè)區(qū)塊到其他區(qū)塊的最短抽象路徑。矩陣中的每個(gè)元素M(i,j)表示從區(qū)塊i到區(qū)塊j的最短路徑中所經(jīng)過的第一個(gè)區(qū)塊,如果起始點(diǎn)區(qū)塊和目標(biāo)點(diǎn)區(qū)塊在同一個(gè)區(qū)塊,那么M(i,j)=-1。N是區(qū)塊的個(gè)數(shù),行代表初始起始區(qū)塊,列代表終點(diǎn)區(qū)塊。通過直接訪問起始區(qū)塊id和終點(diǎn)區(qū)塊id,可以在矩陣中查找最優(yōu)路徑。這個(gè)映射矩陣是通過將從一個(gè)區(qū)塊到另一個(gè)區(qū)塊的路徑“記錄”為指向路徑上下一個(gè)節(jié)點(diǎn)的一系列指針的方式來實(shí)現(xiàn)的。例如,在圖10中,假設(shè)起始點(diǎn)在區(qū)塊0,目標(biāo)點(diǎn)在區(qū)塊8。通過抽象尋路,我們可以確定起點(diǎn)需要經(jīng)過關(guān)鍵節(jié)點(diǎn) 0、3、7 、6才能形成最短路徑到達(dá)區(qū)塊 8,其中節(jié)點(diǎn)3、7、6分別代表區(qū)塊1 、區(qū)塊4和區(qū)塊3。因此,區(qū)塊0到區(qū)塊8的中間轉(zhuǎn)移區(qū)塊為區(qū)塊1、4、3。我們將區(qū)塊1的編號填入M(0,8) 中,然后區(qū)塊1經(jīng)過區(qū)塊4可以到達(dá)區(qū)塊8,將區(qū)塊4的編號填入M(1,8) 中,區(qū)塊4經(jīng)過區(qū)塊3可以達(dá)到區(qū)塊8,將區(qū)塊3填入M(3,8)中,依此類推,即可填滿層級映射矩陣M。

    (7)

    3.1.5 緩存區(qū)塊間最短路徑

    緩存搜索結(jié)果是減少尋路算法中搜索節(jié)點(diǎn)數(shù)量的一種常見技術(shù)。通過避免再次搜索已經(jīng)探索過的節(jié)點(diǎn),算法可以顯著減少尋路所需的搜索次數(shù)。這種技術(shù)可以被廣泛應(yīng)用于各種尋路算法中,以提高算法的效率和性能[14]。改進(jìn)算法按照前后順序依次連接區(qū)塊間尋路序列中的每個(gè)關(guān)鍵節(jié)點(diǎn),得出一條抽線路徑。例如,對于區(qū)塊0到區(qū)塊8,其尋路序列為(0,3,7,6),形成<0,3>,<3,7>,<7,6> ,三個(gè)關(guān)鍵節(jié)點(diǎn)對。然后,根據(jù)所保存的intra邊最短尋路數(shù)據(jù)文件,對關(guān)鍵節(jié)點(diǎn)對的抽象路徑進(jìn)行細(xì)化,形成節(jié)點(diǎn)對的底層細(xì)化路徑。為了提高算法的性能,我們使用哈希表緩存節(jié)點(diǎn)對路徑上的所有節(jié)點(diǎn)。哈希表的鍵值可以根據(jù)節(jié)點(diǎn)對所在的區(qū)塊ID計(jì)算所得,這樣可以快速地查找起始關(guān)鍵節(jié)點(diǎn)對的細(xì)化路徑。這種方法可以避免重復(fù)計(jì)算已經(jīng)搜索過的路徑,從而提高算法的效率。

    哈希表定義如下:

    Dictionary> cacheTable = new Dictionary>()

    哈希鍵值定義如下:

    Cache[Start.zoneId.GetHashCode() ^ end.zoneId.GetHashCode() &0x7FFFFFFF]

    3.2 實(shí)時(shí)路徑搜索

    在游戲啟動(dòng)時(shí),將層級映射矩陣M和哈希表cacheTable加載到內(nèi)存中。當(dāng)游戲角色需要尋路時(shí),需要先判斷其起點(diǎn)和目標(biāo)點(diǎn)是否在同一個(gè)區(qū)塊。如果在同一個(gè)區(qū)塊,A*算法會直接在此區(qū)塊內(nèi)進(jìn)行路徑搜索。如果不在同一個(gè)區(qū)塊,需要查詢層級映射矩陣M,以獲取從起始區(qū)塊到目標(biāo)區(qū)塊的抽象尋路序列。接著,按照序列中節(jié)點(diǎn)的順序,連接關(guān)鍵節(jié)點(diǎn)對,并根據(jù)這些節(jié)點(diǎn)對查詢哈希表cacheTable,找到細(xì)化的關(guān)鍵節(jié)點(diǎn)對尋路路徑。最后,將這些細(xì)化路徑拼接在一起,形成區(qū)塊間尋路路徑。

    根據(jù)抽象尋路序列,找出第一個(gè)序列元素,此元素是起點(diǎn)所在區(qū)塊通向目標(biāo)區(qū)塊的起點(diǎn)關(guān)鍵節(jié)點(diǎn),利用A*算法找出從起點(diǎn)到此關(guān)鍵節(jié)點(diǎn)的最短路徑,這是起點(diǎn)區(qū)塊內(nèi)的起點(diǎn)局部尋路。然后,根據(jù)尋路序列找到最后一個(gè)序列元素,該元素是通向目標(biāo)區(qū)塊的終點(diǎn)關(guān)鍵節(jié)點(diǎn),利用A*算法找出從終點(diǎn)到該關(guān)鍵節(jié)點(diǎn)的最短路徑,這是目標(biāo)區(qū)塊內(nèi)的終點(diǎn)局部尋路。最終,將起點(diǎn)局部尋路路徑、區(qū)塊間尋路路徑、終點(diǎn)局部尋路路徑拼接在一起,形成完整的長距離導(dǎo)航路徑。在實(shí)時(shí)A*搜索中,可以通過權(quán)重引導(dǎo)尋路方向和規(guī)避closeList列表的循環(huán)遍歷來提高尋路效率和速度。

    (1)權(quán)重引導(dǎo)尋路方向

    為了加快局部區(qū)塊尋路速度,可以給關(guān)鍵節(jié)點(diǎn)周圍的節(jié)點(diǎn)設(shè)置權(quán)重值,通過權(quán)重引導(dǎo)尋路方向。具體地,在A*算法中,期望值f(n)不僅可以幫助算法更快地找到目標(biāo)節(jié)點(diǎn),還能起到引導(dǎo)算法的作用。根據(jù)公式6,每次提取相鄰可行節(jié)點(diǎn)時(shí),都要實(shí)時(shí)計(jì)算期望值,并根據(jù)該值優(yōu)先級從高到低的順序在openList隊(duì)列中進(jìn)行擴(kuò)展搜索,選擇期望值最小的節(jié)點(diǎn)作為下一個(gè)要擴(kuò)展的節(jié)點(diǎn)。

    期望值對于尋路的方向判斷很重要,通向目的地的方向越準(zhǔn)確,尋路的效率就會越高,尋找路徑的速度也就越快。從這個(gè)角度上來看,期望值問題就變成了如何幫助期望值更加準(zhǔn)確的判斷通向目的地的方向[15]。在節(jié)點(diǎn)中加入權(quán)重值來改變期望值從而引導(dǎo)算法快速找到關(guān)鍵節(jié)點(diǎn)是一種很好的方式。

    如圖9,黃色網(wǎng)格是為關(guān)鍵節(jié)點(diǎn)標(biāo)記的引導(dǎo)路徑。如果普通節(jié)點(diǎn)權(quán)重值為100的話,黃色節(jié)點(diǎn)權(quán)重值為10。在實(shí)時(shí)A*算法中,計(jì)算節(jié)點(diǎn)期望值時(shí),需要加上節(jié)點(diǎn)的權(quán)重值,期望值公式如下。

    f(n)=g(n)+h(n) +E(n)。

    (8)

    式(8)中,n為當(dāng)前搜索節(jié)點(diǎn),g(n)為起點(diǎn)到n的實(shí)際代價(jià),h(n)為當(dāng)n到目標(biāo)點(diǎn)的啟發(fā)式估計(jì)代價(jià),E(n)為n的權(quán)重。根據(jù)公式8,計(jì)算期望值時(shí),黃色引導(dǎo)節(jié)點(diǎn)比其它節(jié)點(diǎn)獲得更小的值,這也意味著引導(dǎo)節(jié)點(diǎn)在OpenList隊(duì)列中更靠前,更容易搜索到目標(biāo)節(jié)點(diǎn)。如圖11,當(dāng)A*算法從起點(diǎn)S到目標(biāo)點(diǎn)D時(shí),搜索到黃色節(jié)點(diǎn)時(shí),就會很容易沿著黃色節(jié)點(diǎn)一直延伸到關(guān)鍵節(jié)點(diǎn)n0和n4,從而減少了openList中節(jié)點(diǎn)搜索,加快了搜索速度。

    圖11 網(wǎng)格權(quán)重圖

    (2)規(guī)避openList隊(duì)列循環(huán)遍歷

    在每次尋路中,當(dāng)一個(gè)節(jié)點(diǎn)被加入到openList列表時(shí),需要檢查該節(jié)點(diǎn)是否已經(jīng)在closeList列表中。如果在closeList中,就不需要添加到openList列表中。然而,隨著closeList列表中搜索節(jié)點(diǎn)的增加,會導(dǎo)致CPU計(jì)算量的增加,從而影響性能。為了避免這種情況,可以定義一個(gè)全局靜態(tài)整型變量pathFindTimes,用于記錄尋路次數(shù)。此外,每個(gè)節(jié)點(diǎn)還需要定義一個(gè)nodeFindIndex。每次尋路時(shí),將pathFindTimes的值加1。例如,在游戲開啟時(shí),pathFindTimes和nodeFindIndex的初始值相同。當(dāng)玩家第一次尋路時(shí),pathFindTimes的值會加1。在將一個(gè)節(jié)點(diǎn)加入到closeList之后,該節(jié)點(diǎn)的nodeFindIndex也會加1。當(dāng)玩家第二次尋路時(shí),在將節(jié)點(diǎn)添加到開啟列表之前,需要檢查該節(jié)點(diǎn)的nodeFindIndex 是否等于pathFindTimes的值。如果相等,表示該節(jié)點(diǎn)已經(jīng)在開啟列表中,不需要再次添加。通過這種優(yōu)化方法,可以規(guī)避closeList的遍歷循環(huán),提高尋路的效率。該優(yōu)化可歸納如下。

    path Find Times+=1;

    closeList.Add(node);

    node.nodeFindIndex+=1;

    While path Find Times!=node.node FindIndex

    {open List.Add(node);}

    4 實(shí)驗(yàn)結(jié)果及分析

    本文采用C#在Unity游戲引擎上實(shí)現(xiàn)A*、HPA*和HPA*改進(jìn)算法,在不同尺寸游戲網(wǎng)格地圖中進(jìn)行了三組數(shù)值仿真實(shí)驗(yàn)。地圖大小分為3種,分別為64×64、512×512和1024×1024。藍(lán)色節(jié)點(diǎn)障礙物按照每幅地圖10%的比例隨機(jī)生成,如圖12所示。在64×64的地圖上隨機(jī)選取50對起始點(diǎn)和目標(biāo)點(diǎn),并且路徑長度都大于30;在512×512的地圖上隨機(jī)選取50對起始點(diǎn)和目標(biāo)點(diǎn),并且路徑長度都大于250;在1024×1024的地圖上隨機(jī)選取50對起始點(diǎn)和目標(biāo)點(diǎn),并且路徑長度都大于500。

    (a)A*

    表1~2給出了3種算法在不同尺寸游戲地圖上的尋路時(shí)間,在64×64的地圖上,3種算法的平均尋路時(shí)間相差不大,都在12 ms左右。這是因?yàn)?4×64的地圖規(guī)模較小,搜索空間有限,3種算法的效率差異不是很明顯。但是在512×512的中等規(guī)模地圖上,三種算法的平均時(shí)間差異非常明顯。其中,A*算法的平均時(shí)間達(dá)到了53 ms以上,而傳統(tǒng)HPA*算法和HPA*改進(jìn)算法的平均時(shí)間分別為17.13和9.43 ms。在1024×1024的大型規(guī)模地圖上,A*算法的平均時(shí)間達(dá)到了170.12 ms,HPA*算法和HPA*改進(jìn)算法的平均時(shí)間分別為31.76和11.62 ms。這是因?yàn)樵诖笠?guī)模地圖上,搜索空間非常龐大,傳統(tǒng)的啟發(fā)式搜索算法對搜索空間的控制比較弱,而HPA*算法可以將地圖劃分成更小的區(qū)塊,從而大大減小搜索空間,提高搜索效率。改進(jìn)算法在此基礎(chǔ)上采用了一系列的優(yōu)化,如緩存關(guān)鍵節(jié)點(diǎn)對最短路徑、構(gòu)建層級間映射矩陣、優(yōu)化A*實(shí)時(shí)查詢等進(jìn)一步提高了搜索效率和速度。

    如表2,在平均路徑長度方面,HPA*和改進(jìn)算法的表現(xiàn)差異不大,但是A*算法的平均路徑長度更短,這是因?yàn)锳*算法是一種完整的路徑搜索算法,它會在搜索過程中保證找到的路徑是最優(yōu)的。而HPA*算法和HPA*改進(jìn)算法是一種分層搜索算法,它們通過對地圖進(jìn)行分層處理,將搜索空間縮小到一定程度,來提高搜索效率。但由于HPA*只在相鄰區(qū)域邊界選取少量關(guān)鍵點(diǎn)形成抽象圖,所以它得到的路徑是接近最優(yōu)的,而不是最優(yōu)路徑,如圖13所示。

    表2 路徑搜索節(jié)點(diǎn)實(shí)驗(yàn)結(jié)果 單位:ms

    (a)HPA*路徑

    在搜索節(jié)點(diǎn)數(shù)量上,改進(jìn)算法遠(yuǎn)低于A*和HPA*算法。A*算法是一種全局搜索算法,需要搜索整個(gè)地圖才能找到最優(yōu)解。在搜索過程中,A*算法會考慮周圍所有的節(jié)點(diǎn),并計(jì)算與目標(biāo)節(jié)點(diǎn)的距離,導(dǎo)致節(jié)點(diǎn)數(shù)量非常龐大,搜索效率較低。而HPA*算法通過分層的方式,將搜索空間限制在局部范圍內(nèi),大大減少了搜索節(jié)點(diǎn)數(shù)量,提高了搜索效率。相比HPA*算法,改進(jìn)算法通過合并關(guān)鍵節(jié)點(diǎn)、緩存搜索結(jié)果避免重復(fù)搜索等優(yōu)化策略,從而減少搜索節(jié)點(diǎn),可以更快地找到目標(biāo)位置。

    5 結(jié)論

    本文針對HPA*算法在運(yùn)行時(shí)容易出現(xiàn)搜索節(jié)點(diǎn)過多的問題,提出了一種改進(jìn)的HPA*算法。該算法的核心思想是將游戲地圖分解為兩個(gè)層級地圖,并通過不同層級之間的路徑搜索來緩存關(guān)鍵節(jié)點(diǎn)對路徑和構(gòu)建層級映射矩陣。此外,還引入了節(jié)點(diǎn)權(quán)重值以引導(dǎo)尋路方向和規(guī)避closeList循環(huán)遍歷等方式來優(yōu)化HPA*算法。實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法在尋路時(shí)間和效率上相較于其他兩種算法具有一定優(yōu)勢,且其綜合性能相對穩(wěn)定。未來的研究可以進(jìn)一步提高改進(jìn)算法的尋路精度,以使其更好地應(yīng)用于大規(guī)模游戲場景地圖設(shè)計(jì)中。

    猜你喜歡
    層級關(guān)鍵區(qū)塊
    高考考好是關(guān)鍵
    軍工企業(yè)不同層級知識管理研究實(shí)踐
    區(qū)塊鏈:一個(gè)改變未來的幽靈
    科學(xué)(2020年5期)2020-11-26 08:19:12
    基于軍事力量層級劃分的軍力對比評估
    區(qū)塊鏈:主要角色和衍生應(yīng)用
    科學(xué)(2020年6期)2020-02-06 08:59:56
    區(qū)塊鏈+媒體業(yè)的N種可能
    傳媒評論(2018年4期)2018-06-27 08:20:12
    讀懂區(qū)塊鏈
    任務(wù)期內(nèi)多層級不完全修復(fù)件的可用度評估
    獲勝關(guān)鍵
    NBA特刊(2014年7期)2014-04-29 00:44:03
    生意無大小,關(guān)鍵是怎么做?
    中國商人(2013年1期)2013-12-04 08:52:52
    日本精品一区二区三区蜜桃| www.色视频.com| 熟女电影av网| 亚洲av.av天堂| 琪琪午夜伦伦电影理论片6080| 国产精品三级大全| 亚洲五月天丁香| 免费在线观看成人毛片| 少妇的逼水好多| 免费在线观看影片大全网站| 亚洲av美国av| 精品免费久久久久久久清纯| 欧美3d第一页| 在线观看舔阴道视频| 一个人看的www免费观看视频| 无遮挡黄片免费观看| 亚州av有码| 久久天躁狠狠躁夜夜2o2o| 精品日产1卡2卡| 午夜日韩欧美国产| 婷婷精品国产亚洲av在线| 久久久久久久久久黄片| 毛片女人毛片| 脱女人内裤的视频| 每晚都被弄得嗷嗷叫到高潮| 十八禁网站免费在线| 美女cb高潮喷水在线观看| 内地一区二区视频在线| 在线观看免费视频日本深夜| 99久久精品热视频| 十八禁人妻一区二区| 亚洲国产精品久久男人天堂| 白带黄色成豆腐渣| 搡女人真爽免费视频火全软件 | 女同久久另类99精品国产91| 国产精品免费一区二区三区在线| 午夜福利视频1000在线观看| 亚洲第一电影网av| 久久精品91蜜桃| 国产精品久久久久久精品电影| 69人妻影院| 午夜老司机福利剧场| 国产老妇女一区| 亚洲电影在线观看av| 国产野战对白在线观看| 国产精品一及| 午夜亚洲福利在线播放| 青草久久国产| 97超级碰碰碰精品色视频在线观看| 最新在线观看一区二区三区| 亚洲av不卡在线观看| 亚洲avbb在线观看| 国产中年淑女户外野战色| 97超级碰碰碰精品色视频在线观看| 观看美女的网站| 欧美成人性av电影在线观看| 久久久久国内视频| 精品一区二区三区视频在线| 99热这里只有是精品在线观看 | 免费在线观看影片大全网站| 18禁黄网站禁片免费观看直播| 精品人妻视频免费看| 亚洲成av人片在线播放无| 色综合亚洲欧美另类图片| 国产一级毛片七仙女欲春2| 在线天堂最新版资源| 国产午夜福利久久久久久| 午夜免费成人在线视频| 97超视频在线观看视频| 在线观看美女被高潮喷水网站 | 1024手机看黄色片| 在线免费观看不下载黄p国产 | 狂野欧美白嫩少妇大欣赏| bbb黄色大片| 99热这里只有是精品在线观看 | 热99在线观看视频| 高清日韩中文字幕在线| 露出奶头的视频| 99久久无色码亚洲精品果冻| 禁无遮挡网站| 午夜激情欧美在线| 高清在线国产一区| 99久久精品一区二区三区| 国产精品乱码一区二三区的特点| 深夜a级毛片| 日本a在线网址| 色av中文字幕| 国产黄片美女视频| 国产一区二区在线av高清观看| 18禁黄网站禁片午夜丰满| 午夜视频国产福利| 97人妻精品一区二区三区麻豆| 男女之事视频高清在线观看| 精品久久久久久久久久久久久| 一级黄色大片毛片| 精品午夜福利在线看| 好男人在线观看高清免费视频| 怎么达到女性高潮| 国产精品久久久久久亚洲av鲁大| 我要搜黄色片| 日本三级黄在线观看| 99久久九九国产精品国产免费| 午夜a级毛片| 狠狠狠狠99中文字幕| 亚洲av不卡在线观看| 亚洲欧美日韩东京热| 日本黄色视频三级网站网址| 免费高清视频大片| 一区二区三区免费毛片| 亚洲不卡免费看| 三级男女做爰猛烈吃奶摸视频| 99热只有精品国产| 桃色一区二区三区在线观看| 国产精品1区2区在线观看.| 国产精品免费一区二区三区在线| x7x7x7水蜜桃| 天天一区二区日本电影三级| 国产精品,欧美在线| 亚洲成av人片免费观看| 国产精品不卡视频一区二区 | 久久草成人影院| 人妻制服诱惑在线中文字幕| 黄色女人牲交| 精品人妻熟女av久视频| 日韩精品中文字幕看吧| 一二三四社区在线视频社区8| 国产成人av教育| 好看av亚洲va欧美ⅴa在| avwww免费| 亚洲欧美清纯卡通| 色综合婷婷激情| 亚洲精品一区av在线观看| 日韩欧美免费精品| 中文在线观看免费www的网站| 亚洲中文字幕一区二区三区有码在线看| 欧美精品国产亚洲| 蜜桃亚洲精品一区二区三区| 日本成人三级电影网站| 一个人免费在线观看的高清视频| 色av中文字幕| 日韩免费av在线播放| 深爱激情五月婷婷| 乱码一卡2卡4卡精品| 欧美一区二区精品小视频在线| 免费看美女性在线毛片视频| av黄色大香蕉| 欧美又色又爽又黄视频| 性色avwww在线观看| 啦啦啦观看免费观看视频高清| 国产三级中文精品| 嫩草影院入口| 真人做人爱边吃奶动态| 丁香欧美五月| 午夜免费激情av| 啦啦啦韩国在线观看视频| 午夜影院日韩av| 免费人成视频x8x8入口观看| 国产av麻豆久久久久久久| 亚洲国产精品999在线| 一边摸一边抽搐一进一小说| 亚洲国产日韩欧美精品在线观看| 在线观看一区二区三区| 99精品久久久久人妻精品| 久久久久免费精品人妻一区二区| 亚洲,欧美精品.| 欧美日韩福利视频一区二区| 亚洲av五月六月丁香网| 久久久久久久午夜电影| 久久精品国产亚洲av天美| 欧美日韩黄片免| 99国产综合亚洲精品| 中文字幕免费在线视频6| 999久久久精品免费观看国产| 90打野战视频偷拍视频| 丰满人妻熟妇乱又伦精品不卡| 两个人的视频大全免费| 丝袜美腿在线中文| 看片在线看免费视频| 日韩中字成人| 在线免费观看不下载黄p国产 | 日本 av在线| 成年人黄色毛片网站| 色5月婷婷丁香| 在线观看一区二区三区| 51国产日韩欧美| 一本综合久久免费| 欧美黑人欧美精品刺激| 亚洲人成网站在线播| 精品不卡国产一区二区三区| 噜噜噜噜噜久久久久久91| 中文字幕免费在线视频6| 我的老师免费观看完整版| 深爱激情五月婷婷| 欧美潮喷喷水| 黄色女人牲交| 国产单亲对白刺激| 91午夜精品亚洲一区二区三区 | 免费观看人在逋| 亚洲久久久久久中文字幕| 日本黄大片高清| 在线观看美女被高潮喷水网站 | 国产久久久一区二区三区| 免费观看的影片在线观看| 日韩av在线大香蕉| 中文字幕精品亚洲无线码一区| 啦啦啦韩国在线观看视频| 欧美日韩黄片免| 国产精品一区二区三区四区久久| 十八禁人妻一区二区| 久久人妻av系列| 国语自产精品视频在线第100页| 少妇被粗大猛烈的视频| 日日干狠狠操夜夜爽| 老司机福利观看| 国内精品一区二区在线观看| 日韩成人在线观看一区二区三区| 日日干狠狠操夜夜爽| 日本三级黄在线观看| 九九在线视频观看精品| 国产精品免费一区二区三区在线| 一级av片app| 国产午夜福利久久久久久| 性色av乱码一区二区三区2| 又爽又黄a免费视频| 日韩欧美国产一区二区入口| 99在线视频只有这里精品首页| 国内精品一区二区在线观看| 听说在线观看完整版免费高清| 一卡2卡三卡四卡精品乱码亚洲| 又黄又爽又免费观看的视频| 天天一区二区日本电影三级| 女人被狂操c到高潮| 亚洲国产精品合色在线| 无遮挡黄片免费观看| 琪琪午夜伦伦电影理论片6080| 欧美色视频一区免费| 欧美又色又爽又黄视频| 91九色精品人成在线观看| 国产真实伦视频高清在线观看 | 不卡一级毛片| 国产欧美日韩精品亚洲av| 给我免费播放毛片高清在线观看| 精品久久久久久久久久免费视频| 精品一区二区三区视频在线观看免费| 久久中文看片网| 真人一进一出gif抽搐免费| 免费在线观看日本一区| 91久久精品电影网| 露出奶头的视频| 亚洲一区高清亚洲精品| 欧美日韩瑟瑟在线播放| 少妇丰满av| 一区二区三区免费毛片| 亚洲国产精品合色在线| 免费观看人在逋| 啦啦啦韩国在线观看视频| 九九久久精品国产亚洲av麻豆| 久久99热6这里只有精品| 三级国产精品欧美在线观看| 嫁个100分男人电影在线观看| 好看av亚洲va欧美ⅴa在| 一二三四社区在线视频社区8| 免费黄网站久久成人精品 | 午夜福利成人在线免费观看| 国产av在哪里看| 久久性视频一级片| 波野结衣二区三区在线| 啪啪无遮挡十八禁网站| 内射极品少妇av片p| 国产av不卡久久| 99久久成人亚洲精品观看| 国产三级在线视频| 亚洲最大成人手机在线| 日本黄色视频三级网站网址| 午夜老司机福利剧场| 日本熟妇午夜| 欧美一区二区亚洲| 欧美高清成人免费视频www| 亚洲av免费在线观看| 精品午夜福利视频在线观看一区| 日韩免费av在线播放| 桃红色精品国产亚洲av| .国产精品久久| 极品教师在线免费播放| 亚洲午夜理论影院| 露出奶头的视频| 人妻丰满熟妇av一区二区三区| 黄色女人牲交| 别揉我奶头 嗯啊视频| 国产午夜精品久久久久久一区二区三区 | 啦啦啦观看免费观看视频高清| 久久亚洲精品不卡| 99热这里只有精品一区| 男女下面进入的视频免费午夜| 午夜激情欧美在线| 久久精品人妻少妇| 能在线免费观看的黄片| 悠悠久久av| 男人的好看免费观看在线视频| 欧美日韩瑟瑟在线播放| 一区二区三区四区激情视频 | 两个人视频免费观看高清| 小蜜桃在线观看免费完整版高清| 琪琪午夜伦伦电影理论片6080| 精品久久久久久久久久免费视频| 国产免费av片在线观看野外av| 首页视频小说图片口味搜索| 2021天堂中文幕一二区在线观| 99精品久久久久人妻精品| 午夜两性在线视频| 一本久久中文字幕| 中文亚洲av片在线观看爽| 天天躁日日操中文字幕| 亚洲国产精品合色在线| 女人十人毛片免费观看3o分钟| 在线播放无遮挡| 变态另类丝袜制服| 啦啦啦韩国在线观看视频| 99热只有精品国产| av在线老鸭窝| 亚洲自偷自拍三级| 高潮久久久久久久久久久不卡| 国产一区二区在线观看日韩| 婷婷丁香在线五月| 波野结衣二区三区在线| 国模一区二区三区四区视频| 激情在线观看视频在线高清| 一区二区三区四区激情视频 | 高清毛片免费观看视频网站| 国内精品一区二区在线观看| 免费人成视频x8x8入口观看| 免费无遮挡裸体视频| 国产伦人伦偷精品视频| 日本熟妇午夜| 69av精品久久久久久| 午夜日韩欧美国产| 亚洲性夜色夜夜综合| 成人一区二区视频在线观看| 欧美午夜高清在线| 丰满人妻熟妇乱又伦精品不卡| 最新中文字幕久久久久| 中文字幕免费在线视频6| 成人三级黄色视频| 成人亚洲精品av一区二区| 午夜影院日韩av| 日本撒尿小便嘘嘘汇集6| 国产爱豆传媒在线观看| 精品人妻熟女av久视频| 国内精品美女久久久久久| 国产亚洲av嫩草精品影院| 在线a可以看的网站| 色播亚洲综合网| 日韩精品中文字幕看吧| 欧美黑人巨大hd| 日韩精品中文字幕看吧| 性插视频无遮挡在线免费观看| 免费无遮挡裸体视频| 69av精品久久久久久| 国内精品一区二区在线观看| 毛片一级片免费看久久久久 | 我的老师免费观看完整版| 男人和女人高潮做爰伦理| 国产午夜福利久久久久久| 国产亚洲av嫩草精品影院| 午夜两性在线视频| 真人一进一出gif抽搐免费| 亚洲中文字幕一区二区三区有码在线看| 久久午夜福利片| 国产黄片美女视频| 十八禁人妻一区二区| 在线a可以看的网站| 在线观看午夜福利视频| 永久网站在线| 国产精品美女特级片免费视频播放器| 久久热精品热| 国产视频内射| 亚洲乱码一区二区免费版| 首页视频小说图片口味搜索| 97人妻精品一区二区三区麻豆| 免费看日本二区| 久久欧美精品欧美久久欧美| 成年免费大片在线观看| 97人妻精品一区二区三区麻豆| 国产v大片淫在线免费观看| av国产免费在线观看| 国产精品伦人一区二区| 午夜福利欧美成人| 别揉我奶头 嗯啊视频| 国产免费av片在线观看野外av| 尤物成人国产欧美一区二区三区| 男女床上黄色一级片免费看| 脱女人内裤的视频| a级毛片免费高清观看在线播放| 99精品在免费线老司机午夜| 亚洲狠狠婷婷综合久久图片| 成人永久免费在线观看视频| 国产精品久久久久久人妻精品电影| 国产白丝娇喘喷水9色精品| 夜夜爽天天搞| 精品不卡国产一区二区三区| 久久久色成人| 国产精品久久久久久亚洲av鲁大| 亚洲精品456在线播放app | 搡老妇女老女人老熟妇| 国产黄片美女视频| 免费观看的影片在线观看| 亚洲电影在线观看av| 一本一本综合久久| 亚洲av成人不卡在线观看播放网| 色视频www国产| 一级a爱片免费观看的视频| 99久国产av精品| 一区福利在线观看| 亚洲天堂国产精品一区在线| 少妇的逼好多水| 天堂av国产一区二区熟女人妻| 亚洲av电影在线进入| 韩国av一区二区三区四区| 天美传媒精品一区二区| 三级男女做爰猛烈吃奶摸视频| 国产精华一区二区三区| 国产精品综合久久久久久久免费| x7x7x7水蜜桃| 国产一区二区在线观看日韩| 老女人水多毛片| 亚洲av成人av| 韩国av一区二区三区四区| 国产精品女同一区二区软件 | 在线观看一区二区三区| 真实男女啪啪啪动态图| 精品久久久久久久久av| 9191精品国产免费久久| 99国产精品一区二区蜜桃av| 国产老妇女一区| 真人一进一出gif抽搐免费| 久久精品人妻少妇| 国产精品久久久久久久久免 | 老司机午夜福利在线观看视频| 一区福利在线观看| 成人美女网站在线观看视频| 久久久久久大精品| 内射极品少妇av片p| 欧美黑人巨大hd| 亚洲 欧美 日韩 在线 免费| 日韩 亚洲 欧美在线| av中文乱码字幕在线| 久久精品国产99精品国产亚洲性色| 变态另类成人亚洲欧美熟女| 亚洲内射少妇av| 国内久久婷婷六月综合欲色啪| 丰满人妻一区二区三区视频av| 看免费av毛片| 俄罗斯特黄特色一大片| 99久久九九国产精品国产免费| 亚洲五月天丁香| 国内精品美女久久久久久| 中文字幕精品亚洲无线码一区| 成人三级黄色视频| 国产又黄又爽又无遮挡在线| 琪琪午夜伦伦电影理论片6080| 国产免费男女视频| a在线观看视频网站| 国产免费一级a男人的天堂| 51国产日韩欧美| 丁香欧美五月| 日韩欧美国产在线观看| 国产黄a三级三级三级人| 国产伦一二天堂av在线观看| 国产精品久久视频播放| 每晚都被弄得嗷嗷叫到高潮| 99热这里只有是精品在线观看 | 啦啦啦韩国在线观看视频| 18禁在线播放成人免费| 黄色日韩在线| 久久久国产成人免费| 亚洲真实伦在线观看| 内地一区二区视频在线| 99在线人妻在线中文字幕| 国产精品亚洲美女久久久| 最近最新免费中文字幕在线| 国产免费一级a男人的天堂| 成年免费大片在线观看| 久久久成人免费电影| 日日夜夜操网爽| 欧美性感艳星| 亚洲精品一卡2卡三卡4卡5卡| 成年人黄色毛片网站| 日本五十路高清| 久久伊人香网站| 少妇的逼好多水| 内射极品少妇av片p| a在线观看视频网站| 亚洲精品亚洲一区二区| 色av中文字幕| 精品午夜福利在线看| 国产午夜精品论理片| 成人无遮挡网站| 99久久久亚洲精品蜜臀av| 桃色一区二区三区在线观看| www.色视频.com| 99久久精品一区二区三区| 国产高清有码在线观看视频| 亚洲国产高清在线一区二区三| 老司机午夜十八禁免费视频| 精品一区二区免费观看| 人人妻人人看人人澡| 亚洲欧美日韩卡通动漫| 12—13女人毛片做爰片一| 日本黄色片子视频| 欧美午夜高清在线| netflix在线观看网站| 日韩av在线大香蕉| 一进一出抽搐gif免费好疼| 国产精品伦人一区二区| 五月玫瑰六月丁香| 久久精品国产亚洲av涩爱 | 国产av在哪里看| 亚洲第一电影网av| 久久久久久久午夜电影| h日本视频在线播放| 午夜精品久久久久久毛片777| 美女免费视频网站| 亚洲在线观看片| 一级毛片久久久久久久久女| 99视频精品全部免费 在线| 美女 人体艺术 gogo| 男女做爰动态图高潮gif福利片| 国产av麻豆久久久久久久| 亚洲欧美日韩卡通动漫| ponron亚洲| 特大巨黑吊av在线直播| 十八禁网站免费在线| 免费看光身美女| 好男人在线观看高清免费视频| 搡老岳熟女国产| 国产在线精品亚洲第一网站| 搡老妇女老女人老熟妇| 人妻夜夜爽99麻豆av| 婷婷丁香在线五月| 国产成人福利小说| h日本视频在线播放| 狂野欧美白嫩少妇大欣赏| 热99在线观看视频| 午夜日韩欧美国产| 99riav亚洲国产免费| 国产精品一区二区三区四区久久| 亚洲最大成人中文| 日韩有码中文字幕| 3wmmmm亚洲av在线观看| 国产精品电影一区二区三区| 一个人观看的视频www高清免费观看| 亚洲中文字幕一区二区三区有码在线看| 欧美xxxx性猛交bbbb| 国内揄拍国产精品人妻在线| 看黄色毛片网站| 国产精品久久视频播放| 亚洲av成人不卡在线观看播放网| 久久伊人香网站| a级毛片a级免费在线| 欧美区成人在线视频| 夜夜夜夜夜久久久久| 国产成年人精品一区二区| 亚洲最大成人中文| 日韩有码中文字幕| 精品一区二区免费观看| 亚洲成av人片在线播放无| 嫩草影院入口| 国产精品久久久久久亚洲av鲁大| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 久久国产精品人妻蜜桃| 国产伦人伦偷精品视频| 欧美一区二区精品小视频在线| 亚洲精品乱码久久久v下载方式| 亚洲内射少妇av| 激情在线观看视频在线高清| 国产中年淑女户外野战色| 一进一出好大好爽视频| 熟妇人妻久久中文字幕3abv| 国产真实乱freesex| 国内揄拍国产精品人妻在线| 9191精品国产免费久久| 欧美成狂野欧美在线观看| 一级a爱片免费观看的视频| av专区在线播放| 亚洲精品久久国产高清桃花| 精品人妻视频免费看| av专区在线播放| 一边摸一边抽搐一进一小说| 深夜a级毛片| 日日摸夜夜添夜夜添小说| 日韩欧美精品免费久久 | 国产综合懂色| 日本免费a在线| 我的老师免费观看完整版| 亚洲精品乱码久久久v下载方式| 黄色视频,在线免费观看| 亚洲一区二区三区色噜噜| 内地一区二区视频在线| 深爱激情五月婷婷| 麻豆久久精品国产亚洲av| 中文字幕免费在线视频6| 我要看日韩黄色一级片| 国内精品美女久久久久久| 久久精品国产亚洲av天美| 我要搜黄色片| 两个人的视频大全免费| 国产av一区在线观看免费| 搡老妇女老女人老熟妇| 嫩草影视91久久| 亚洲天堂国产精品一区在线| 两个人视频免费观看高清| 久久欧美精品欧美久久欧美| 淫妇啪啪啪对白视频| 亚洲精品影视一区二区三区av| 精品人妻1区二区|