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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

介紹

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

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

什么是游戲AI

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

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

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

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

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

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

游戲卻不同,因為它們不需要復雜的系統(tǒng)來提取信息,因為大部分信息都在模擬系統(tǒng)內(nèi)部。我們不需要運行圖片識別算法來發(fā)現(xiàn)敵人的位置;游戲知道敵人在哪,可以直接將信息反饋給決策過程。所以游戲中的“感知”環(huán)節(jié)比較簡單,難的是后兩步。

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

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

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

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

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

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

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

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

基本決策制定

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

硬編碼條件語句

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

用虛擬代碼表示:

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詢問游戲二者的位置,從而感知到球的運動方向。

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

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

我們將這種方法稱為“reactive”,因為規(guī)則很簡單。

決策樹

乒乓球游戲也可以用決策樹模型進行可視化:

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

如果樣本很多,決策樹真的非常強大,可以高效地進行情境分辨。

腳本撰寫

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

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

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

對事件做出反應

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

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

高級決策制定

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

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

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

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

用可視化圖表示:

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

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

主要狀態(tài)

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

可視化

行為樹(behavior trees)

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

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

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

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

行動和導航

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

控制

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

desired_travel = destination_position – agent_position

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

找路

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

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

學習與適應

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

知識表示(Knowledge representation)

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

標簽

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

智能目標

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

回應曲線

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

黑板

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

影像力圖

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

結(jié)語

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

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

    關注

    10

    文章

    1930

    瀏覽量

    34542
  • 人工智能
    +關注

    關注

    1791

    文章

    46671

    瀏覽量

    237142

原文標題:新手指南 | 游戲AI所需技術詳解

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

收藏 人收藏

    評論

    相關推薦

    人工智能是什么?

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

    人工智能技術—AI

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

    人工智能的前世今生 引爆人工智能大時代

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

    人類與人工智能機器人合作的前景

    的人之所以不會被機器人取代,因為他們總是自己創(chuàng)造工作?! 〉诙N是用心提供服務的人。這類人永遠不會被 人工智能行業(yè)云 所取代,因為機器人效率雖然很高,但是毫無溫度。沒有感情永遠是機器的軟肋,不能
    發(fā)表于 04-16 17:42

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

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

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

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

    解讀人工智能的未來

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

    人工智能:超越炒作

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

    什么是基于云計算的人工智能服務?

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

    人工智能的應用領域有哪些?

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

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

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

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

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

    人工智能基本概念機器學習算法

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

    什么是人工智能、機器學習、深度學習和自然語言處理?

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

    人工智能游戲

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