青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

游戲引擎基礎(十)(人工智能和導航)

10部分: 人工智能和導航(路徑發現)


人工智能(AI
  我們上面已經用了其他九個章節介紹了游戲引擎,現在讓我們深入到非常有趣和重要的人工智能主題。人工智能如今正在變成被談論得最多的僅次于游戲引擎渲染能力的游戲開發領域之一,確實如此。直到大約兩年半以前,游戲似乎主要是在考慮你能夠渲染多少個多邊形,眼睛是多么的漂亮,和勞拉的胸部是多么的有彈性...既然我們現在已經能夠渲染出非常真實的乳房,中心就開始轉移到我們實際上用那些多邊形做什么了(即玩游戲)。因為它給你提供實際玩游戲的刺激作用和參與游戲世界中正在進行的事情,所以人工智能在這個領域非常關鍵。

  人工智能包括了全部的東西,從在Tetris中決定哪一塊新磚頭掉落(這很大程度上知識一個隨即數產生器), 一直到創造基于小組的策略游戲,這些游戲和你交互,并且實際上在你玩的時候向你學習。人工智能包含了許多規則,如果你(作為一個游戲開發者)沒有花費足夠多的時間讓它正確地工作,它會反過來在你屁股上咬一口。所以讓我們談論一些哪些規則?這樣你能更好地理解人工智能系統會確實是多么的復雜。為了避免法律上的糾紛,我們將使用一個假設的游戲而不是一個真實的游戲作為例子。

  假設我們的游戲中有壞份子生活在3D世界中,干著他們的事情,而且如果你打攪了他們的正常次序他們就會反抗你(玩家)。你必須決定的第一件事情就是他們正在從事的到底是什么事情呢?他們正在守衛什么東西嗎?在巡查?在計劃一個聚會?在購買食品雜貨?在整理床鋪?建立行為的基線是游戲開發者的工作之一。一旦有了這個,你就總有NPC(非玩家角色)或計算機控制的能夠恢復去做的事情,玩家與他們的交互就應當能被完成。

  一旦我們知道一個NPC角色需要做什么比如它在守衛一扇門,并且在這個區域小巡邏,NPC也必須有世界意識。游戲設計者需要決定NPC的人工智能將如何看見世界,和它的知識范圍。你將會僅僅說計算機知道正在進行的每件事情嗎?這通常被認為是一件糟糕的事情,因為非常明顯計算機能夠看見和聽見你不能看見和聽見的事情,這被當成是在作弊。不是一種有趣的經歷?;蛘吣銓⒛M他的視野,這樣他只能夠對他能看見的事物作出反應嗎?當有墻壁出現時這里就有問題了,因為你開始進入那些我在第九部分提到的追蹤例程,看看NPC是否試圖對被墻壁擋住的人作出反應。這是一個很明顯的人工智能問題,但是當涉及到門和窗戶時,這個甚至變得更加復雜了。

  當你開始為AI刺激例程增加聽覺意識時,這依然變得更加復雜了。但是,這個意識是那些關鍵的小事情之一,這些使得假想的游戲世界似乎更加真實,或者能夠去除懷疑的懸念。如果你碰到過這樣的事情,請舉手:你在槍戰中跟一個NPC交戰,免除了一個NPC,你繞著角落行走并遇到了另外一個NPC依然保持他的缺省行為模式,沒有意識到剛剛發生的事情?,F在,槍是嘈雜的事物,槍戰可能已經明顯地提醒了一個傾聽NPC有些事情正在進行。避免這種事情的技巧在于找到一個有效的方式來決定聲源(即你武器的發射)的距離是否足夠接近到NPC能夠聽見。

  接下來就是決策例程。當我們的巡邏NPC角色能夠聽到但不能看見某物時,你試圖實現什么樣的行為呢?他去尋找它嗎?不理睬它?你如何決定什么是重要的聲音他應該去或者不去調查?如同你看見的一樣,這會很快變得非常的復雜。有很多方法來建造處理這些事情的代碼,但通常這樣是一個好主意,建立一個不是對特定的NPC而是對所有的NPC都起作用的系統,該系統基于你能夠在游戲引擎以外的文本文件中建立的屬性。這樣就不需要程序員為一個給定的角色而改變AI,并且如果你對游戲代碼做了改動,它將立即自動地應用到所有的角色,這在大多數情況下是一件好事情。

  其他的世界意識問題會冒出來,比如這樣的情形,兩個守衛彼此緊挨著站立,你用狙擊武器干掉了一個,而另外一個站在哪兒完全不知已經發生的事情。再者,遵守真實世界行為的細節是一款好游戲和一款偉大游戲的之間的區別。

  讓我們說你已經把所有的刺激-響應部分準備好了你已經掃描了世界,決定NPC應當對正在進行的一些事情作出反應他聽到了玩家角色發出了聲響并且你(游戲開發者)決定了他應當對這個做些什么他將去調查?,F在更加復雜的事情來了。他如何離開現在的位置,到達他認為發出聲音的地方,而不會想通常的數字傻瓜一樣跑到墻壁里面,碰到家具呢?繼續往下看


有關正確的路徑 --- 世界導航
  快速,準確的世界導航( 也叫做路徑-發現) 近來已經成為游戲開發者的圣杯。 讓它看起來非常信服是一件非常困難的事情。你需要有局部世界的地理知識墻壁的位置,臺階,懸崖和建筑物等的邊緣。你也需要世界中的對象的知識比如家具,汽車,尤其是其他人的位置。真正最后的因素是問題所在,一會兒我們將回到這一點上。

  世界導航通常被分為兩個領域,世界導航和局部導航。二者實際上只是范圍上的區別,但大多數的程序員分別對待它們,因為這樣處理起來容易一些。世界導航例程處理理解房間,門和一般的地理學,并計算出讓玩家或者角色從世界中的A點到達B點的一條路徑。它將讓你從A點到達B,這是一句很容易說的話,不是嗎?說起來容易,但做起來很困難。理解世界是一個非常復雜問題,我已經看到過許多嘗試過的解決辦法。QuakeIII的機器人遵照建造的預先處理過的地圖,一般的說法,使用原來地圖的地面。預處理器檢測地面元素,由地圖建造者作上標記,并自己建造一個只使用地面的世界簡化地圖。機器人并不關心墻壁,因為他們從不接近它們,就像他們遵照地面的地圖一樣,設計上已經把避免墻壁構造在里面了。

  其他方法在地圖本身里面建造一些小的結點,AI可以追隨它們。這些結點通常被建造在彼此的視線里面,有從一個結點到其他所有結點的連接,角色AI能夠直接看見,所以你就確保了從一個結點移動到另外一個結點時AI不會試圖穿越墻壁。如果有門或者降落物,你能夠事先用這些結點對路徑的信息編碼,于是NPC能夠采用適當的行為等候電梯,打開一扇門,或者從一點跳到另外一點。這實際上是HereticII使用的系統,也是Raven在他們其他的大多數游戲中使用的系統。

  關于這個主題,3D RealmsJess Crable,現在為Duke Nukem Forever工作,如是說:

  "導航在許多方面是個巨大的挑戰,主要是當游戲中有大量正在發生的事情和一些非計劃性的東西,比如障礙。為了避免和(或)真實地對非計劃性的障礙物導航(例如像另外的AI),AI需要很好地知道正在它周圍發生的事情。比較而言另外一個巨大的挑戰就是真實感。如果AI正在表現玩家在實際生活中看到的一些東西,比如說一個人,或者一條狗, 那么讓它看上去真實可信就更加困難。"

  然后就是局部導航。我們可能有一條路徑讓我們的 NPC 從他在世界中的位置,移動到他認為聽到聲音的地方,但你不能盲目地按照這個執行并期望得到看起來不錯的結果。這種性質的路徑傾向于非常特定于一個給定的目的。當你沿著走廊從一個房間跑到另外一個房間時,它很好,但如果你試圖指導他穿越一個巨大的房間時,路徑結點方法容易最終得到一些看起來很奇怪的發現路徑。這些路徑也不是動態的。因為他們被預先建造,他們不容易考慮到世界的任何動態變化。桌子可能有被移動過了,椅子被破壞了,墻壁被摧殘,當然,人們會移動。這就是局部導航不同于世界導航的地方。它必須考慮局部世界并導航NPC在里面穿越。它必須知道周圍的環境,存在哪些可以選擇的路徑,并決定選擇哪一條。

  在局部導航中最大的問題是其他的NPC。給定一個發現路徑的具體例程,如果你在相同的一般區域中有不止一個NPC,他們都試圖到達世界的同一地點,結果是他們都非常容易有相同的路徑。然后他們試圖沿著這個路徑行進,結果彼此遇到一起,然后花費他們所有的時間試圖將彼此分開,并且一旦成功地分開了,他們再次試圖到達目標,然后我們又再次看到同樣的事情發生。這一切看起來都是非常的愚蠢,這不是大多數人想要的效果。所以需要一些路徑發現中的變化來避免這種情形,需要一些妥善處理避免的代碼。有大量能夠幫助解決這種情形的算法。


人工智能和角色動畫問題
  當然,當角色自己在世界中行走時你必須完全地決定你想要角色播放什么動畫。聽起來無足輕重?不是的。關于這個主題,Raven Chris Reed—Soldier of FortuneII使用名為LICHAI系統的現在的負責人如是說:

  "此刻我能告訴你,我們在平滑移動上正有著最大的困難。在一個多丘陵的長滿草的叢林中試圖讓五個角色在彼此附近行走是一個非常困難的問題。讓底層系統完美是重要的,因為除非角色在較低層次上(避免墻壁,適當的動畫)看起來真實,他們不能夠有效地表達任何較高層次決定的智能。由于這個單獨的原因,動畫和底層的移動是最重要的和最難實現的。它確實需要完美。"

  因此我們已經讓我們的角色從A點到達了B點,他自己穿越世界,在途中避免障礙物,正確播放動畫,現在到達了這里。他看見了你。接下來做什么呢?很明顯更多的是作出決策。他將向你射擊。太棒了。你回應射擊。現在干什么?當他試著逃走的時候,現在你再次經歷全部同樣的事情。

  為了讓這些情形看起來令人信服,你看見了這里必須要處理的大量問題。如果你建立你的AI使用沒有動畫的行為讓NPC執行,這能被混合。一些Soldier of Fortune中的AI就是這樣的例子。他們受到了指責,因為壞家伙沒有以適當的方式對刺激作出反應。當他們明顯應該這樣做的時候,敵方NPC不掃射,或者不逃跑。部分問題是他們沒有掃射敵人NPC的動畫,或者讓他們往回跑,因為空間的問題。因此世界上所有最偉大的AI代碼都不能夠解決這個問題。這是所有要考慮的重要事情。

  想知道隱藏的難點嗎?看看我前面所有的描述,然后試著將它應用到一組NPC上,這些NPC彼此必須說話,設定目標,彼此溝通,但不妨礙彼此的方式。一旦你這么做了,試試那些代碼,作為玩家的隊友做上面所描述的這些,然而不要在槍戰中妨礙他?,F在這是復雜的。然后這成為樂趣。這是最困難的部分。Raven Chris Reed關于AI‘感覺的一些評論:

  "我認為反饋是AI的一個極大的問題。如果角色對于他周圍環境的變化不產生反應,游戲的真實感就被完全打破了。這有許多明顯的例子(聽見槍炮聲,看見同伴被擊中...),以及一些更加微妙的事情(當兩個人通過門廳時看著彼此并點頭致意)。玩家是樂意接受一些生硬和可預測性的,但是這些事物容易把游戲帶到現實生活。"

  并且Jess Crable 贊同:

  "平衡是非常重要的對玩家將會有多大的樂趣至關重要,但還有其他的問題要平衡。游戲玩家時常說他們想在游戲中看見更加真實的人工智能。然而,太多的真實感開始把樂趣帶走。在這兩者之間必須要有一個好的平衡。變化和隨機同樣也很重要行為的變化,和保持在可信范圍內的一定程度的不可預測性。"


游戲規則與自然發生的游戲
  在我們關于AI的所有描述中,我們采用的是FPS的方式。有不止一種的AI。我們已經描述的是處理3D世界一組規則。AI遠遠不止這些。時常最好的AI實際上非常的簡單。它就是一組規則,玩家必須響應和處理的響應(或開始)動作的規則。

  這里應當處理一個被稱為自然發生的游戲的專業術語。 自然發生的游戲本質上創造游戲將遵守的規則,那將會造成游戲程序員不能預見的情形。

  舉例來說,象棋能被認為是自然發生的游戲。有一組規則,但游戲能夠陷入各種程序員不能夠以個別方式處理的情形。你不能為每一種可能的棋局情形編碼規則。很清楚,游戲玩家每次不會總是面臨相同的游戲情景。一定程度上,進行中的游戲情形會根據他的行動而發生變化。Black and White是這種情形的一個完美的例子,和The Sims一樣游戲有它自己的規則,但你如何運用和調和他們是你自己的事情。實際上,你在玩游戲的過程中創造著游戲,而不是照著游戲設計者/程序員已經為你定義的路線進行。

  有可能把基于規則的,自然發生的游戲方式和FPS環境混合在一起。Half Life中的一些海軍陸戰隊士兵的行為就是這樣做的壓制火力和側翼攻擊從設定的規則中動態完成。它看起來是動態的,而且一定程度上它是這樣。然而,在FPS世界中僅僅有一組規則時常是不夠的。幾何和其他AI時常能夠打敗簡單的規則,這讓保持正確并依然有趣變得更加困難。所以對那些可憐的AI程序員有一些同情心吧。他們的工作不容易。


  好吧,下面還有一個章節,僅僅還剩下一個章節了。在最后的章節里,我們將討論頭頂顯示,菜單系統,游戲定制和配置,游戲引擎版權與建造,最后是游戲“mods”。

posted on 2007-12-04 13:29 夢在天涯 閱讀(4280) 評論(0)  編輯 收藏 引用 所屬分類: Game/OpenGL

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812973
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美国产日韩视频| 激情文学一区| 亚洲六月丁香色婷婷综合久久| 久久一区二区精品| 久久久久久久激情视频| 亚洲激情一区二区| 亚洲久久在线| 国产精品午夜久久| 久久一区二区三区av| 欧美成人午夜免费视在线看片| 亚洲人成人99网站| 亚洲桃花岛网站| 国产欧美日本在线| 免费观看成人www动漫视频| 欧美激情一区二区三区在线| 在线亚洲免费视频| 欧美一区二区三区在线| 亚洲片在线观看| 亚洲欧美日韩精品久久久久| 亚洲国产另类久久精品| 亚洲一区二区成人在线观看| 永久免费精品影视网站| 夜夜狂射影院欧美极品| 国产精品每日更新| 久久天天狠狠| 欧美日韩国产综合新一区| 久久精品国产精品亚洲精品| 狼狼综合久久久久综合网| 亚洲淫性视频| 欧美www在线| 久久成人免费视频| 欧美日韩高清在线播放| 美女露胸一区二区三区| 国产精品青草久久久久福利99| 亚洲电影观看| 国产精品试看| 亚洲精品乱码久久久久久| 红桃av永久久久| 亚洲一区三区电影在线观看| 日韩亚洲一区二区| 毛片精品免费在线观看| 久久伊人亚洲| 国产欧美一区视频| 亚洲性线免费观看视频成熟| 亚洲毛片视频| 免费亚洲电影在线观看| 久久亚洲一区二区三区四区| 国产精品一区二区在线观看网站 | 亚洲欧美日本国产有色| 亚洲激情不卡| 久久免费国产| 老司机精品视频一区二区三区| 国产精品素人视频| 亚洲欧洲日本在线| 久久性天堂网| 国产一区亚洲一区| 亚洲欧洲av一区二区| 性欧美暴力猛交另类hd| 国产精品欧美风情| 亚洲一区二区三区免费在线观看| 亚洲天堂av电影| 欧美性片在线观看| 一区二区三区高清视频在线观看| 亚洲视频在线观看| 国产精品www.| 亚洲网站在线观看| 小嫩嫩精品导航| 国产日韩欧美高清| 久久国产精品亚洲va麻豆| 麻豆9191精品国产| 亚洲欧洲日韩综合二区| 欧美精品日韩| 一区二区三区四区五区精品视频| 亚洲欧美日本在线| 国产久一道中文一区| 香蕉视频成人在线观看| 久久躁日日躁aaaaxxxx| 1204国产成人精品视频| 欧美激情亚洲视频| 亚洲香蕉伊综合在人在线视看| 性高湖久久久久久久久| 伊人成人在线| 欧美精品大片| 亚洲主播在线观看| 久久五月激情| 99www免费人成精品| 国产精品电影在线观看| 久久精品中文| 日韩视频永久免费| 久久成人精品一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲经典视频在线观看| 亚洲欧美国产毛片在线| 一区二区三区在线免费观看| 欧美高清视频一区| 亚洲免费在线电影| 亚洲电影毛片| 久久se精品一区二区| 亚洲国产精品一区二区www| 欧美日韩一区二区三区在线视频| 欧美夜福利tv在线| 亚洲激情在线视频| 久久精品久久99精品久久| 亚洲精品在线三区| 国产区日韩欧美| 欧美激情黄色片| 欧美在线黄色| 在线一区视频| 亚洲第一天堂av| 久久婷婷久久一区二区三区| 亚洲无限av看| 日韩网站在线观看| 精品91视频| 国产日韩精品久久| 欧美日韩一区精品| 一色屋精品视频在线看| 久久婷婷亚洲| 欧美激情一区三区| 久久久精品国产免费观看同学 | 国产午夜久久久久| 欧美视频在线观看视频极品| 久久精品二区三区| 一本色道久久综合狠狠躁篇怎么玩| 蘑菇福利视频一区播放| 欧美一区二区在线看| 亚洲女人小视频在线观看| 亚洲精品字幕| 亚洲精品欧洲| 亚洲人成毛片在线播放| 亚洲国产一区在线| 欧美成人自拍| 欧美电影在线| 欧美韩日亚洲| 欧美国产日韩亚洲一区| 欧美xart系列高清| 欧美成人在线网站| 男女精品视频| 欧美成人精品在线视频| 免费观看日韩av| 欧美激情精品久久久久久黑人 | 欧美成人在线网站| 欧美成人国产va精品日本一级| 久热精品视频在线免费观看| 久久久国际精品| 久久综合婷婷| 欧美成人午夜激情| 欧美日韩伦理在线| 国产精品爱久久久久久久| 国产精品男gay被猛男狂揉视频| 国产精品电影观看| 欧美区日韩区| 一区二区毛片| 亚洲国产美女| 欧美激情a∨在线视频播放| 99视频在线观看一区三区| 久久久国产精品一区| 亚洲国产欧美国产综合一区| 国产精品电影网站| 老司机aⅴ在线精品导航| 亚洲视频你懂的| 亚洲欧洲久久| 久久久久九九视频| 亚洲性xxxx| av不卡在线看| 亚洲欧洲免费视频| 韩国亚洲精品| 国产精品一区二区三区四区五区| 欧美激情亚洲自拍| 久久九九热免费视频| 亚洲欧美日韩视频一区| 亚洲看片网站| 一区二区三区日韩精品| 国产精品国产三级国产专区53 | 韩国成人理伦片免费播放| 在线观看亚洲专区| 一本久道久久综合婷婷鲸鱼| 亚洲欧美日韩综合| 免费欧美电影| 国产精品99久久久久久久女警| 久久精品理论片| 欧美三级电影一区| 亚洲第一区色| 欧美一区二区三区的| 最新日韩精品| 欧美在线免费观看| 欧美日韩视频在线观看一区二区三区| 国产婷婷成人久久av免费高清| 亚洲另类自拍| 美女久久一区| 午夜精品视频| 国产精品成人免费| 亚洲精品视频在线观看免费| 久久久久久高潮国产精品视| 夜夜嗨av一区二区三区中文字幕 | 国内精品99| 先锋影音国产一区| 亚洲精品视频啊美女在线直播| 久久久噜噜噜久噜久久| 国产日韩1区| 亚洲免费综合|