0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大量游戲中使用的人工智能概念

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-08-20 08:44 ? 次閱讀

介紹

本文將介紹大量游戲中使用的人工智能概念,你將會了解解決AI問題有哪些可用的工具,它們是如何一起工作的,以及你將如何在所選語言或引擎中實(shí)施這些工具。

本文需要你對游戲有基本的理解,同時(shí)掌握一些數(shù)學(xué)概念,例如幾何、三角函數(shù)等等。其中舉出的代碼例子都是虛擬代碼,所以不用具備特別的編程語言水平。

什么是游戲AI

游戲AI主要解決的是游戲人物根據(jù)當(dāng)前條件應(yīng)該做出哪些動作。傳統(tǒng)AI環(huán)境中所指的智能體通常是游戲中的人,但現(xiàn)在也可以指一輛車、機(jī)器人或更抽象的,例如一群目標(biāo)對象、一個國家或人口。它們都需要觀察周圍的環(huán)境,并基于環(huán)境做出決定、執(zhí)行動作。通常這一過程是感知/思考/行動的循環(huán)。

感知(Sense):智能體檢測或被告知環(huán)境中有可能會影響其動作的物體(附近有危險(xiǎn)、要撿的物品、需要查看的地點(diǎn))

思考(Think):智能體要想出應(yīng)對方法(比如要選擇一個安全的時(shí)機(jī)撿東西,或者決定是先攻擊還是隱藏)

行動(Act):智能體將之前的決策付諸行動(例如開始向敵人或目標(biāo)物體移動)

環(huán)境變化,在新數(shù)據(jù)下重復(fù)這一循環(huán)……

在現(xiàn)實(shí)AI問題中,大部分公司重點(diǎn)關(guān)注的是“感知”這一環(huán)節(jié)。例如,自動駕駛汽車必須給前方道路拍照,并將其與雷達(dá)或LIDAR數(shù)據(jù)進(jìn)行對比,之后嘗試解讀它們看到了什么。這通常由機(jī)器學(xué)習(xí)方法來完成。

游戲卻不同,因?yàn)樗鼈儾恍枰獜?fù)雜的系統(tǒng)來提取信息,因?yàn)榇蟛糠中畔⒍荚?a href="http://srfitnesspt.com/analog/" target="_blank">模擬系統(tǒng)內(nèi)部。我們不需要運(yùn)行圖片識別算法來發(fā)現(xiàn)敵人的位置;游戲知道敵人在哪,可以直接將信息反饋給決策過程。所以游戲中的“感知”環(huán)節(jié)比較簡單,難的是后兩步。

游戲AI的發(fā)展限制

游戲中的AI通常會面臨以下幾種限制:

通常不會像機(jī)器學(xué)習(xí)算法那樣“預(yù)訓(xùn)練”;寫一個神經(jīng)網(wǎng)絡(luò)觀察上千名玩家并學(xué)習(xí)是不現(xiàn)實(shí)的,因?yàn)檫@種方法在游戲還未發(fā)布的時(shí)候根本無法進(jìn)行。

游戲應(yīng)該提供趣味性和挑戰(zhàn)性,而不是追求“最優(yōu)”。所以即使智能體的水平能超過人類,也不會是設(shè)計(jì)師追求的目的。

智能體還不能太“機(jī)械”,要讓對手真的認(rèn)為他的隊(duì)友是“人”而不是“機(jī)器”。AlphaGo雖然厲害,但與之交手的選手們都覺得它下棋的方法很不尋常,感覺像和外星人對戰(zhàn)。所以游戲AI也要調(diào)整得更“擬人化”一些。

要支持實(shí)時(shí)處理,算法不能長時(shí)間占用GPU就為了想出對策。10毫秒已經(jīng)過長了。

理想的系統(tǒng)是數(shù)據(jù)驅(qū)動而不是硬編碼,這樣即使不會編程的人也能做出調(diào)整。

有了這些原則,我們可以開始看看在感知、思考、行動循環(huán)中所使用的簡單AI方法了。

基本決策制定

讓我們以簡單的游戲《乓》為例,要保證乒乓球可以彈到球拍上,如果掉落就算輸了。AI的任務(wù)就是決定球拍的移動方向。

硬編碼條件語句

如果我們相用AI控制球拍,那么最直接最簡單的方法就是嘗試讓球拍一直位于乒乓球的下方。當(dāng)球接觸球拍后,球拍的位置就是合適的。

用虛擬代碼表示:

every frame/update while the game is running:

if the ball is to the left of the paddle:

move the paddle left

else if the ball is to the right of the paddle:

move the paddle right

這種方法太簡單了,但是在代碼中:

“感知”部分有兩個“if”語句。游戲知道球和球拍的位置,所以AI詢問游戲二者的位置,從而感知到球的運(yùn)動方向。

“思考”部分同樣在兩個“if”語句之中。它包含了兩個決策,最終會決定向左、向右或不移動球拍。

“行動”表現(xiàn)在代碼中就是向左或向右移動。但是在其他與戲中可能包括移動的速度。

我們將這種方法稱為“reactive”,因?yàn)橐?guī)則很簡單。

決策樹

乒乓球游戲也可以用決策樹模型進(jìn)行可視化:

第一眼看去,你可能覺得決策樹和if語句沒什么區(qū)別。但是這個系統(tǒng)中,每個決策都包括一個精確的條件和兩種可能的輸出,可以讓開發(fā)者不用硬編碼就能從代表決策樹的數(shù)據(jù)中搭建AI。用簡單的表格來描繪決策樹是這樣的:

如果樣本很多,決策樹真的非常強(qiáng)大,可以高效地進(jìn)行情境分辨。

腳本撰寫

設(shè)計(jì)AI的人員可以根據(jù)自己的想法安排決策樹,但是他們必須依靠編程人員提供的所需條件和動作。如果我們給設(shè)計(jì)人員更好的工具,可以讓他們創(chuàng)造自己的條件,那會怎樣呢?

編程者可以將條件(判斷球在球拍的左邊還是右邊)換成某項(xiàng)值,決策樹的數(shù)據(jù)看起來可能像這樣:

跟上面的表格相同,但是決策有它們各自的代碼。更進(jìn)一步,將這樣的表達(dá)方式(用腳本語言而不是數(shù)據(jù))帶入邏輯結(jié)論也是可能并且常見的。

對事件做出反應(yīng)

以上的乒乓游戲中,核心思想就是不斷運(yùn)行三步循環(huán),并根據(jù)上一步的環(huán)境狀態(tài)采取行動。但是在更復(fù)雜的游戲中,與評估各項(xiàng)條件相比,更多的是對情況做出反應(yīng),這在游戲場景的變換中是很常見的。

比如在一項(xiàng)射擊游戲中,敵人首先是靜止的,一旦他們發(fā)現(xiàn)了玩家,不同角色的敵人就會采取不同行動。沖鋒兵可能會向玩家攻擊,狙擊手會位于后方準(zhǔn)備射擊。這也是基本的應(yīng)對系統(tǒng),但是它需要更高級的決策過程。

高級決策制定

有時(shí),我們想根據(jù)智能體目前的狀態(tài)做出不同的決策,對決策樹或腳本來說,條件過多時(shí)就無法高效地運(yùn)行。有時(shí),我們要提前思考并估計(jì)環(huán)境會如何變化,所以就需要更復(fù)雜的剞劂方法。

有限狀態(tài)機(jī)(Finite state machine)

一個有限狀態(tài)機(jī)(FSM)指的是某個物體,例如AI智能體,目前處在某個狀態(tài)中,之后會轉(zhuǎn)移到另一個狀態(tài)中。由于狀態(tài)的總數(shù)是有限的,所以稱為“有限狀態(tài)機(jī)”?,F(xiàn)實(shí)中此類例子是紅綠燈。

在游戲中,讓衛(wèi)兵巡邏、攻擊或逃跑等動作可以用簡單的if語句表示。但是如果加上狀態(tài),例如游蕩、搜查、跑步尋求救援等動作,if條件句就會變得很復(fù)雜??紤]到所有狀態(tài),我們列出了各狀態(tài)之間需要的過渡狀態(tài)。

用可視化圖表示:

層次狀態(tài)機(jī)(Hierarchical state machine)

你也許注意到上表中有些過渡狀態(tài)是相同的游蕩狀態(tài)中的大部分過渡和巡邏中的狀態(tài)相同,但最好是互相區(qū)分開。游蕩和巡邏都是非戰(zhàn)斗狀態(tài)下的一部分,所以我們可以看做它的“子狀態(tài)”:

主要狀態(tài)

非戰(zhàn)斗狀態(tài)

可視化

行為樹(behavior trees)

在決策過程中,有個小問題,即過渡原則和當(dāng)前狀態(tài)緊密相關(guān)。在很多游戲中,這種方法沒為題,使用上述層次狀態(tài)機(jī)還能減少重復(fù)。但是有時(shí)你想有一種通用的規(guī)則,不需要考慮狀態(tài)。例如當(dāng)智能體的健康值減少到25%,你可能想趕快逃跑。當(dāng)設(shè)計(jì)師把這一數(shù)值降到10%時(shí),你可能會改變所有相關(guān)的過渡狀態(tài)。

對于這種情況,理想狀態(tài)下需要一個系統(tǒng),該系統(tǒng)決定哪些狀態(tài)可以在另一些狀態(tài)之外存在,以便能在一個地方正確轉(zhuǎn)換。這就是行為樹(behavior tree)。

部署行為樹的方法有很多,但是核心思想都相同:算法開始于一個“根節(jié)點(diǎn)”,樹中的各個節(jié)點(diǎn)表示決策或動作。例如前面提到的衛(wèi)兵層次狀態(tài)機(jī),用行為樹表示:

你可能會發(fā)現(xiàn),這個樹中從巡邏狀態(tài)返回到游蕩狀態(tài)沒有過度,這時(shí)就需要引入無條件的“重復(fù)”節(jié)點(diǎn):

行動和導(dǎo)航

我們有了乒乓球拍移動和衛(wèi)兵作戰(zhàn)的例子,但是我們要怎樣真正地在一段時(shí)間內(nèi)讓它們移動呢?如何設(shè)置速度、如何躲避障礙、設(shè)計(jì)線路等等?這一部分我們將詳細(xì)講解。

控制

從基礎(chǔ)層面來說,我們可以認(rèn)為每個智能體有自己的行動速度和方向,它們會在思考階段計(jì)算速度和方向,在行動階段執(zhí)行。如果我們知道智能體的目的地,就可以用等式表示:

desired_travel = destination_position – agent_position

但是,在更復(fù)雜的環(huán)境中,簡單的等式是處理不了的,也許速度過慢、智能體會在半路遇到障礙等。所以,有時(shí)需要考慮加入其他值,讓行走動作更復(fù)雜。

找路

在網(wǎng)格中,如果要走到目的地,要先看看周圍可以移動的網(wǎng)格。下圖是一個簡單的搜索動作案例,首先從起點(diǎn)開始搜索,知道找到目的地,再規(guī)劃路線:

但是,這種尋找方式好像太浪費(fèi)了,擴(kuò)展了很久才找到最佳路線。下面這種方法在找路時(shí),每次只選擇目標(biāo)坐標(biāo)方向的最佳方塊,從而能減少很多候選方塊:

學(xué)習(xí)與適應(yīng)

雖然文章開頭我們提到,游戲AI不常用到機(jī)器學(xué)習(xí),但是我們從中也可以有所借鑒,在設(shè)計(jì)類游戲或?qū)诡愑螒蛑幸苍S有用。例如在數(shù)據(jù)和概率方面,我們可以用樸素貝葉斯分類器來檢查大量輸入的數(shù)據(jù),并嘗試分類,讓智能體對當(dāng)前情況做出合適的反應(yīng)。在預(yù)測方面可以用到馬爾可夫模型等等。

知識表示(Knowledge representation)

我們已經(jīng)討論了做決策、計(jì)劃、預(yù)測的各種方法,但是如何才能更有效地掌握整個游戲世界呢?我們應(yīng)該如何收集并組織所有的信息?如何將數(shù)據(jù)轉(zhuǎn)化成信息或知識?各種游戲的方法各不相同,但是有幾種相同的辦法可以使用。

標(biāo)簽

將用于搜索的碎片化信息打標(biāo)簽,這是最常見的方法。在代碼中,標(biāo)簽常用字符串表示,但是如果你知道所有使用的標(biāo)簽,你就能將字符串轉(zhuǎn)換成唯一的數(shù)字,從而節(jié)省空間,加速搜索。

智能目標(biāo)

有時(shí),標(biāo)簽不足以涵蓋所有需要的有用信息,所以另一種存儲信息的方式就是告訴AI它們的備選項(xiàng),讓它們根據(jù)需要選擇。

回應(yīng)曲線

回應(yīng)曲線,簡單地說就是它是一張圖,輸入用x軸表示,虛擬的值,例如“最近的敵人距離”和輸出用Y軸表示,通常從0.0到1.0之間。該圖表示了輸入到輸出之間的映射關(guān)系。

黑板

黑板,顧名思義,記錄的是游戲中各個參與者做出的找路動作或決定,其他人也可以使用其中記錄的數(shù)據(jù)。

影像力圖

游戲AI經(jīng)常需要考慮向哪里移動等問題,這類問題通??梢钥醋鍪恰暗乩怼眴栴},需要了解環(huán)境的形式和敵人的位置。我們需要一種方法將地形考慮進(jìn)去,對環(huán)境有個大概了解,影像力圖就是為了解決這個問題做出的數(shù)據(jù)機(jī)構(gòu)。

結(jié)語

本文對游戲中使用的AI進(jìn)行了大致講解,它們的使用場景都很有用,其中的一些技術(shù)也許不常見,但是很有潛力。由于本文篇幅較長,我們并未對各項(xiàng)方法做詳細(xì)介紹。感興趣的同學(xué)可查閱原文。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1922

    瀏覽量

    34510
  • 人工智能
    +關(guān)注

    關(guān)注

    1789

    文章

    46397

    瀏覽量

    236614

原文標(biāo)題:新手指南 | 游戲AI所需技術(shù)詳解

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    人工智能是什么?

    海量的數(shù)據(jù)中通過不斷優(yōu)化的算法來組建適合的數(shù)據(jù)群組。單從這一點(diǎn)就可以看出,數(shù)據(jù)的大量積累也是需要經(jīng)過長時(shí)間才能做到的,這也是為什么人工智能領(lǐng)域只有大公司、企業(yè)以及科研機(jī)構(gòu)才能有時(shí)間、有金錢和精力去投入
    發(fā)表于 09-16 15:40

    人工智能技術(shù)—AI

      人工智能技術(shù)的概念從出來到現(xiàn)在已經(jīng)有很多年的歷史了,其實(shí)所謂的人工智能技術(shù)本身就是一種模擬人類大腦的思考方式的一種技術(shù),它的英文簡稱是AI技術(shù),在西方國家,人工智能技術(shù)被認(rèn)為是計(jì)算
    發(fā)表于 10-21 12:03

    人工智能的前世今生 引爆人工智能大時(shí)代

    `昨天在論壇看了一個帖子一個故意不通過圖靈測試的人工智能,在這之前我也一直對人工智能這一塊很感興趣,只是工作領(lǐng)域不涉及到這一塊,并且一直覺得人工智能還離我們很遙遠(yuǎn),看了昨天的文章,突然覺得說不定哪天
    發(fā)表于 03-03 11:05

    人類與人工智能機(jī)器人合作的前景

    的人之所以不會被機(jī)器人取代,因?yàn)樗麄兛偸亲约簞?chuàng)造工作?! 〉诙N是用心提供服務(wù)的人。這類人永遠(yuǎn)不會被 人工智能行業(yè)云 所取代,因?yàn)闄C(jī)器人效率雖然很高,但是毫無溫度。沒有感情永遠(yuǎn)是機(jī)器的軟肋,不能
    發(fā)表于 04-16 17:42

    3種適用于人工智能開發(fā)的編程語言

    了3種比較適用于人工智能開發(fā)的編程語言,希望能夠?qū)δ阌兴鶐椭ythonPython由于簡單易用,是人工智能領(lǐng)域中使用最廣泛的編程語言之一,它可以無縫地與數(shù)據(jù)結(jié)構(gòu)和其他常用的AI算法一起
    發(fā)表于 09-12 10:45

    “洗牌”當(dāng)前 人工智能企業(yè)如何延續(xù)熱度?

    在少數(shù)的企業(yè)身上,強(qiáng)者恒強(qiáng)、弱者淘汰的局面已經(jīng)形成。此外,截然不同的是,上至***機(jī)構(gòu)下至平民百姓,對當(dāng)下的人工智能項(xiàng)目不再盲目追捧,而是提出異議和擔(dān)憂。9月20日,知乎用戶質(zhì)疑科大訊飛翻譯技術(shù)“造假
    發(fā)表于 11-07 11:49

    解讀人工智能的未來

    `已歷經(jīng)60多年的人工智能在物聯(lián)網(wǎng)以及大數(shù)據(jù)的推動下,實(shí)現(xiàn)飛躍式的發(fā)展,并且迎來了第三個黃金周期。必優(yōu)傳感今天和大家解讀一下關(guān)于人工智能的未來。自從有了人工智能,引發(fā)了人類的各種“未來論”。有人說
    發(fā)表于 11-14 10:43

    人工智能:超越炒作

    視為“強(qiáng)AI”。雖然專家們對是否能夠?qū)崿F(xiàn)強(qiáng)大的人工智能的問題存在分歧,但并不能阻止他們嘗試。自2013年以來,人工智能的外部投資增長了兩倍這項(xiàng)技術(shù)具有破壞性潛力的一個可靠指標(biāo)是投資方面。根據(jù)麥肯錫
    發(fā)表于 05-29 10:46

    什么是基于云計(jì)算的人工智能服務(wù)?

    如今,采用人工智能的企業(yè)遇到了一個主要障礙,那就是在內(nèi)部開發(fā)人工智能產(chǎn)品成本高昂,因此有了外包人工智能產(chǎn)品的需求。而對于從中小企業(yè)到預(yù)算受限的大型企業(yè)來說,通過云計(jì)算來采用人工智能的成
    發(fā)表于 09-11 11:51

    人工智能的應(yīng)用領(lǐng)域有哪些?

    表明,到2030年,人工智能和機(jī)器人可能會減少全球多達(dá)30%的人類勞動,到2030年自動化將取代4-8億個工作。1、機(jī)械加工機(jī)器人從事的零件鑄造、激光切割以及水射流切割等工作;2、機(jī)器人涂裝、點(diǎn)膠
    發(fā)表于 10-23 11:07

    路徑規(guī)劃用到的人工智能技術(shù)

    路徑規(guī)劃用到的人工智能技術(shù)二 人工智能編程語言/數(shù)據(jù)結(jié)構(gòu)與算法三 人工智能基礎(chǔ)原理四 智能信息獲?。ê喎Q爬蟲) 與數(shù)據(jù)分析1、發(fā)起請求3、解析內(nèi)容4、保存數(shù)據(jù)二、Requests庫介紹
    發(fā)表于 07-20 06:53

    人工智能芯片是人工智能發(fā)展的

    人工智能芯片是人工智能發(fā)展的 | 特倫斯謝諾夫斯基責(zé)編 | 屠敏本文內(nèi)容經(jīng)授權(quán)摘自《深度學(xué)習(xí) 智能時(shí)代的核心驅(qū)動力量》從AlphaGo的人機(jī)對戰(zhàn),到無人駕駛汽車的上路,再到AI合成主播
    發(fā)表于 07-27 07:02

    人工智能基本概念機(jī)器學(xué)習(xí)算法

    目錄人工智能基本概念機(jī)器學(xué)習(xí)算法1. 決策樹2. KNN3. KMEANS4. SVM5. 線性回歸深度學(xué)習(xí)算法1. BP2. GANs3. CNN4. LSTM應(yīng)用人工智能基本概念數(shù)
    發(fā)表于 09-06 08:21

    什么是人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和自然語言處理?

    人工智能,在目前的關(guān)鍵時(shí)刻,是關(guān)于神經(jīng)網(wǎng)絡(luò)的。目前,人工智能使用與典型計(jì)算機(jī)相同的 CMOS 硬件。目前的人工智能專注于開發(fā)注入類人智能的算法功能。該學(xué)科的重點(diǎn)是通過
    發(fā)表于 03-22 11:19

    人工智能游戲

    游戲人工智能人工智能游戲中的應(yīng)用和實(shí)踐。通過分析游戲場景變化、玩家輸入獲得環(huán)境態(tài)勢的理解,進(jìn)而控制
    的頭像 發(fā)表于 01-30 15:59 ?683次閱讀