游戲中的人工智能(27張)課件_第1頁
游戲中的人工智能(27張)課件_第2頁
游戲中的人工智能(27張)課件_第3頁
游戲中的人工智能(27張)課件_第4頁
游戲中的人工智能(27張)課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、小組成員:xx游戲中的人工智能群聚什么是群聚呢?群聚,就是多個非玩家角色一起行動,而不是個別行動。比如說:你看到的是一群大雁,它們的飛行是有一定的規(guī)律,而且你完全可以看出來它們會排成一字或者人字,不會是亂糟糟的飛行。那么,我們在游戲中,諸如巡邏小隊之類的移動又是什么樣的呢?1987年,Craig Reynolds發(fā)表了一篇名為Flocks,Herds and Schools: A Distributed Behavial Model的論文,在這篇論文中,他提出了基本的群聚算法模型,甚至可以這樣說,后續(xù)的一系列群聚算法都有這篇論文的身影。那么我們來看看Craig Reynolds提到的boids

2、類鳥群的模擬群體。在這種類鳥群里面, 是沒有領(lǐng)導(dǎo)核心,它們都是跟著群體在走,而這個群體似乎是自己有自己的想法。Reynolds基本群聚算法核心 群體行為的核心是基本的群聚算法。“單位”(unit)指代組成群體的個別實體。凝聚:每個單位都往其臨近單位的平均位置行動。對齊:每個單位行動時,都要把自己對齊在其臨近單位的平均方向上。分隔:每個單位行動時,要避免撞上其臨近單位。Reynolds基本群聚算法是沒有領(lǐng)導(dǎo)核心的;就某種意義而言,它們都跟著整個群體移動。每個單位都必須有行進的能力;每個單位都必須知道其局部周圍的情況,即鄰近單位位置、方向以及群體中與自身最靠近的單位之間的距離。在仿真物理環(huán)境中可以

3、對仿真中的單位施加轉(zhuǎn)向力使其改變方向;在磚塊環(huán)境中可以采用視線方法讓單位改變方向或朝特定點移動。為了分析我們這個群聚系統(tǒng),我們需要理解一些基本的概念:1,單位的視野,我們以r為單位的視野半徑,以為視野角度,落在這個圓弧內(nèi)的所有物體都是可見的。2,避開規(guī)則(Avoidance rule),單位不會被彼此撞上。3,凝聚規(guī)則,單位離得太遠就應(yīng)該靠近一點,這個規(guī)則和避開規(guī)則合在一起,從而形成了群聚。磚塊環(huán)境中的移動模式非確定性方法(加入隨機因素): 1、初始化路徑數(shù)組,移動數(shù)組 2、用Bresenham線段算法計算不同的移動模式 3、將模式標(biāo)準化 4、設(shè)定前進速率,按照設(shè)定好的移動模式移動,當(dāng)?shù)竭_線段

4、的端點時檢查移動數(shù)組,以確定移動方向。到目前為止,我們討論的群聚規(guī)給大家留下了深刻印象。然而,像這樣的群聚行為如果在游戲中,這些單位以群體形態(tài)移動式,還能避免撞上游戲世界里的物體,那就更實用了。實際上加入避開障礙物的行為其實相當(dāng)簡單,我們所要做的就是提供某種機制給那些單位使用,讓他們看到前方,再施加適當(dāng)?shù)霓D(zhuǎn)向力,使其避開路徑中的障礙物。首先,我們運算向量a,這只是該單位和障礙物位置間的差值,接著,取a和v的內(nèi)積,將a投射到v上,由此可得向量p,把向量p減去向量a,可得向量b,現(xiàn)在要測試v是否和圓的某處相交,得測試兩種情況。1.p的數(shù)值必須小于v的數(shù)值。2.b的數(shù)值必須小于該障礙物的半徑r。如果

5、兩者都是如此,則需要校正轉(zhuǎn)向力,否則,該單位可繼續(xù)沿當(dāng)前方向前進。追隨領(lǐng)頭者對基本群聚算法的修改不必只限于避開障礙物。因為來自于各種規(guī)則的轉(zhuǎn)向力都在同一變量中累加,然后一次施加,以控制該單位的方向,所以,我們還可以在考慮過的規(guī)則之上在疊加其他許多有效的規(guī)則。其中一條有趣的外加規(guī)則,就是跟隨領(lǐng)頭者規(guī)則。如前所述,我們討論的群聚規(guī)則是沒有領(lǐng)頭者的,然而,如果我們把基本群聚算法和某些領(lǐng)頭者AI結(jié)合起來,就可以在游戲中使用群聚功能時,開啟許多新的可能效果。如果我們在其中加入領(lǐng)頭者,就能讓群體的移動更有目的性,或者看起來比較有智能。我們來看看一個實際例子:另一種群聚方法簡化集群技術(shù)Reynolds的群聚

6、算法已經(jīng)被很好地證明了,而且在生成若干組智能體的逼真動作效果非常好。但是,該算法在計算上的開銷大,尤其是在有大量智能體或者有復(fù)雜場景需要探測的時候。因此,他們有時候不適合實時的應(yīng)用程序,比如電視游戲。所以我們有必要對集群技術(shù)進一步的進行簡化。群聚算法在模擬少量或中等數(shù)量的生物的自然行為時是完美的,尤其當(dāng)這些生物的運動(而不是生物和生物之間的影響、以及生物和場景之間的互動)是主要的關(guān)注焦點的游戲中(例如任天堂的Pikmin)。但是,隨著生物個數(shù)的增加,傳統(tǒng)的群聚算法開銷越來越大。在群聚中每個智能體必須檢查其他所有智能體以確定是否因距離太近而產(chǎn)生影響,在這種情況下,如果存在n個智能體的場景,需要計

7、算1/2(n)次獨立的距離計算(給出中間的結(jié)果儲存在交互的數(shù)組里)。那么分離規(guī)則,隊列規(guī)則和聚合規(guī)則必須對每個智能體計算它附近的每個智能體。另一方面,因為影響是相互的,所以保存中間結(jié)果可以使計算量減半。那么如何對集群技術(shù)進行簡化呢?以下將對如何對集群技術(shù)進行簡化給出兩點方法:1.從群體初始化方面入手。2.從群體運動方面入手。參考資料:人工智能游戲編程真言-清華大學(xué)出版社游戲開發(fā)中的人工智能-東南大學(xué)出版社游戲設(shè)計概論清華大學(xué)出版社參考網(wǎng)站:/view/df809645be1e650e52ea998d.html/nightelve/article/details/8982647初始化初始化智能體

8、最簡單的方法就是把它們從幕后搬出來。讓集群智能體從天花板上落到玩家頭上,讓它們從墻上漩渦式地鉆出來,或者大群智能體生物從深谷裂口中瀑布般地涌出來(最好是在玩家占領(lǐng)的地盤上)都是最大限度利用集群生物出場的方法。集群生物也可以用“爆炸”的方式進入場景的某個區(qū)域,當(dāng)某個容器被破壞(如籠子)或者被打開(如棺材)。返回運動對每一個活動的智能體保存其當(dāng)前的位置,根據(jù)其速度和運動方向更新x,z坐標(biāo),并且根據(jù)重力增加下落速度時修改其y坐標(biāo)。計算智能體的位置和目標(biāo)對象的位置之間的差異,給出x,y和z坐標(biāo)的增量。再算出從目標(biāo)對象到智能體的相對夾角(angle)(atan(dz,dx)-agent-yrot)。如果

9、智能體是逃離目標(biāo)對象(因為它的定時器timer大于某個特定值),angle取負值。如果玩家在距離智能體某個范圍之內(nèi)(用適當(dāng)?shù)木嚯x檢查,或者用簡單的盒式?jīng)_突檢測來節(jié)省時間),就認為玩家受到傷害。如果智能體不是下落的,那么它的操縱方式和運動方向根據(jù)它在內(nèi)層區(qū)域或外層區(qū)域分別按如下進行修正:外層區(qū)域:如果未到速度的最大值就增加智能體速度。每個智能體的最大速度應(yīng)該不同。如果智能體的運動方向大致是正確的,給這個智能體的y-rotation一個小小的擾動否則就馬上改變y-rotation,指向正確方向。內(nèi)層區(qū)域:按照智能體的速度改變它的y-rotation,并且按照它的angle改變它的速度。這些改變背后

10、方程組的本質(zhì)確定了集群生物在目標(biāo)對象周圍運動的形式。返回Bresenham直線算法Bresenham直線算法是用來描繪由兩點所決定的直線的算法,它會算出一條線段在 n 維光柵上最接近的點。這個算法只會用到較為快速的整數(shù)加法、減法和位元移位,常用于繪制電腦畫面中的直線。是計算機圖形學(xué)中最先發(fā)展出來的算法。返回凝聚凝聚意指我們想讓所有單位都待在同一群體中,我們不要每個單位和群體分開,各走走的路。為了滿足這項規(guī)則,每個單位都應(yīng)該朝其鄰近單位之平均位置前進。鄰近單位的平均位置很容易計算,只要找出鄰近單位后,其平均位置就是其各個位置的向量總和,再除以總鄰近單位數(shù)。Pave+=unitsj.vPositi

11、on; 這一行將所有鄰近單位的位置向量相加。Pave和vPosition是Vectort類的變量, 此overloaded operator(重載運算符)會替我們做向量加法。DoUnitAI()找出鄰近單位并收集信息后,就可以使用群聚規(guī)則了。此段程序第一件事是檢查鄰近單位數(shù)量是否大于0.如果是,我們就能繼續(xù)計算鄰近單位的平均位置。做法是以所有鄰近單位位置的向量總和Pave除以鄰近單位數(shù)量N。最后一行就是實際計算滿足凝聚規(guī)則的轉(zhuǎn)向力。凝聚基本上,累加在FS.X的轉(zhuǎn)向力是當(dāng)前單位的方向,以及其鄰近單位平均位置向量間的角度的線性函數(shù),也就是說,如果角度大,則轉(zhuǎn)向力也會相對較大;如果角度小,則轉(zhuǎn)向力也

12、會相對較小。這正是我們想要的。如果當(dāng)前單位的方向和鄰近單位的平均位置的方向相距很遠,我們會想讓他做大幅度的轉(zhuǎn)彎。如果其方向和鄰近單位平均位置的方向不太遠,我們只想對其方向做小范圍的修正。返回對齊對齊意指我們想讓群聚中的所有單位都大致朝相同方向前進。為了滿足這條規(guī)則,每個單位都應(yīng)該在行進時,試著以等同其鄰近單位平均方向的方向來前進。中間以粗線表示單位是沿著和其相連的粗箭頭方向進行的。另外和其相連的虛線箭頭則代表其鄰近單位的平均方向。因此,就此而言,以粗線表示的單位必須朝右側(cè)行進。我們可以利用每個單位的速度向量求出其方向。把每個單位的速度向量,換算成單位向量,就可以得出其方位向量。上面收集鄰近單位

13、方向數(shù)據(jù)的過程,那一行Vave+=Unitsj.vVelocity;會把每個鄰近單位的速度向量累加在Vave中,其做法類似于Pave累加位置過程。這段代碼計算了每個單位的對齊轉(zhuǎn)向力。代碼幾乎和上面聚集差聚集規(guī)則一樣。此處不再處理鄰近單位的平均位置,而是把Vave 除以鄰近單位數(shù)量N,先求出當(dāng)前單位鄰近單位的平均方向。所得結(jié)果儲存在u中,并換算成單位向量,則為平均向量。返回就此例而言,轉(zhuǎn)向力是當(dāng)前單位方向,及其鄰近單位平均方向間角度的線性函數(shù)。同意的,只要當(dāng)前單位的方向,和其鄰近單位的平均方向很接近,則只需稍微作調(diào)整。分隔分隔意指我們想讓每個單位彼此間保持最小距離,即使根據(jù)凝聚和對齊規(guī)則,他們會

14、試著靠近一點。我們不想讓那些單位撞在一起,或者更糟的是,在某個巧合地點重合在一起。因此,我們要采用分隔手段,讓每個單位和其視野內(nèi)的鄰近單位保持某一預(yù)定的最小分隔距離處理分隔的程序和處理凝聚及對齊的只有一點不同,因為就分隔而言,求算適當(dāng)?shù)霓D(zhuǎn)向力校正值時,我們必須逐一檢視每個鄰近單位,而不是使用所有鄰近單位的某個平均值。返回1、不是井里沒有水,而是你挖的不夠深。不是成功來得慢,而是你努力的不夠多。2、孤單一人的時間使自己變得優(yōu)秀,給來的人一個驚喜,也給自己一個好的交代。3、命運給你一個比別人低的起點是想告訴你,讓你用你的一生去奮斗出一個絕地反擊的故事,所以有什么理由不努力!4、心中沒有過分的貪求,

15、自然苦就少。口里不說多余的話,自然禍就少。腹內(nèi)的食物能減少,自然病就少。思緒中沒有過分欲,自然憂就少。大悲是無淚的,同樣大悟無言。緣來盡量要惜,緣盡就放。人生本來就空,對人家笑笑,對自己笑笑,笑著看天下,看日出日落,花謝花開,豈不自在,哪里來的塵埃!5、心情就像衣服,臟了就拿去洗洗,曬曬,陽光自然就會蔓延開來。陽光那么好,何必自尋煩惱,過好每一個當(dāng)下,一萬個美麗的未來抵不過一個溫暖的現(xiàn)在。6、無論你正遭遇著什么,你都要從落魄中站起來重振旗鼓,要繼續(xù)保持熱忱,要繼續(xù)保持微笑,就像從未受傷過一樣。7、生命的美麗,永遠展現(xiàn)在她的進取之中;就像大樹的美麗,是展現(xiàn)在它負勢向上高聳入云的蓬勃生機中;像雄鷹

16、的美麗,是展現(xiàn)在它搏風(fēng)擊雨如蒼天之魂的翱翔中;像江河的美麗,是展現(xiàn)在它波濤洶涌一瀉千里的奔流中。8、有些事,不可避免地發(fā)生,陰晴圓缺皆有規(guī)律,我們只能坦然地接受;有些事,只要你愿意努力,矢志不渝地付出,就能慢慢改變它的軌跡。9、與其埋怨世界,不如改變自己。管好自己的心,做好自己的事,比什么都強。人生無完美,曲折亦風(fēng)景。別把失去看得過重,放棄是另一種擁有;不要經(jīng)常艷羨他人,人做到了,心悟到了,相信屬于你的風(fēng)景就在下一個拐彎處。10、有些事想開了,你就會明白,在世上,你就是你,你痛痛你自己,你累累你自己,就算有人同情你,那又怎樣,最后收拾殘局的還是要靠你自己。11、人生的某些障礙,你是逃不掉的。與其費盡周折繞過去,不如勇敢地攀登,或許這會鑄就你人生的高點。12、有些壓力總是得自己扛過去,說出來就成了充滿負能量的抱怨。尋求安慰也無濟于事,還徒增了別人的煩惱。13、認識到我們的所見所聞都是假象,認識到此生都是虛幻,我們才能真正認識到佛法的真相。錢多了會壓死你,你承受得了嗎?帶,帶不走,放,放不下。時時刻刻發(fā)悲心,饒益眾生為他人。14、夢想總是跑在我的前面。努力追尋它們,為了那一瞬間的同步,這就是動人的生命奇跡。15、懶惰不會讓你一下子跌倒,但會在不知不覺中減少你的收獲;勤奮也不會讓你一夜成功,但會在不知不覺中積累你

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論