国产成人精品高清在线观看99,日韩一本之道一区中文字幕,国外亚洲成av人片在线观看,国产欧美日韩一区二区三区在线,国产精品美女久久久免费

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

時間:2015/11/02 10:12:14 編輯:Ocean

星球基地》是一個戰(zhàn)略游戲,這款游戲?qū)τ谕婕覀儊碚f有太多的人吐槽游戲的AI,游戲中的優(yōu)先級順序是個令玩家非常頭疼的問題,但是呢玩家們想要駕馭這款游戲,必須首先了解游戲的優(yōu)先級順序,下面我們就一起來了解下星球基地全角色執(zhí)行任務(wù)代碼優(yōu)先級分析吧。

首先,請允許我向大家隆重介紹下面這一段代碼,就是它葬送了無數(shù)大好局勢和無數(shù)賤民的生命!

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

它就是整個AI算法的核心:當你的角色狀態(tài)處于空閑時,自動進入相應(yīng)的任務(wù)優(yōu)先級列表的判定,簡單點來說就是一個觸發(fā)機制,并且一但這個機制被觸發(fā),這個角色就會進入相應(yīng)的任務(wù)狀態(tài),不會被打斷,不!會!被!打!斷!

首先,我將要向大家介紹的是一個物種:保安

有人肯定要問,為什么說是個物種?因為游戲角色的AI類型劃分是這樣的:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

搬運機器人

建筑機器人

挖礦機器人

保安

人類(其它殖民者)

入侵者

游客

所以說,這個故事告訴我們千萬不要把保安當做正常的人類來看。

以下便是保安這個物種的優(yōu)先級:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

所有的優(yōu)先級依次是:

拿武器后消滅入侵者

生存需求

去看有優(yōu)先級的監(jiān)控

去看監(jiān)控

去喝飲料

去放松(鍛煉)

回到室內(nèi)建筑

在室內(nèi)看風景

你木有看錯,對于所有的保安(其實包括人類),消滅入侵者比滿足生存需求的優(yōu)先級更高。滿足survivalrule這是一個子項,里面包含的是各種屬性低了就去補的觸發(fā)機制,具體結(jié)構(gòu)可以參考我在樓頂介紹的那個邏輯算法。

早上看見一位小伙伴的悲慘遭遇,保安到死都在看監(jiān)控沒去反擊入侵者。所以,現(xiàn)在你明白了么?

沒錯,我去打入侵者的優(yōu)先級是比看監(jiān)控(Go Operate)要高,但問題是我已經(jīng)在看監(jiān)控了呀,你在我看完監(jiān)控之前休想讓我進入這個空閑判定機制。

耿直的保安,卒。

接下來便是賤民們的優(yōu)先級列表,制作組總算是展現(xiàn)了點誠意,先不說合不合理,至少是非常用心的:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

首先說明,制作組把所有職業(yè)的任務(wù)混在了一起,請自行對應(yīng)相應(yīng)職業(yè)。賤民的任務(wù)優(yōu)先級從高到低分別是:

拿武器攻擊入侵者(這里指的不是保安,保安不算人類!)

攻擊完入侵者后扔掉武器

去修被隕石砸的室內(nèi)建筑(這個我看了下代碼,沒有室外也是醉)

生存需求(吃飯 ,睡覺 ,blablabla)

去維持緊急的食物需求,造食物(生物學家專屬技能)

去搬交易需要的貨物到飛船

去建造

去休閑(注意,這里限制了是當狀態(tài)非常不開心的時候)

去拿零件之后維修

去拿醫(yī)療包救人

去高優(yōu)先級的礦場挖礦

去制作各種東西

去拿建筑材料之后運送建筑材料(知道為什么要多造機器人了吧,工人如果有礦挖優(yōu)先級絕不搬這些 )

去找那些制作臺所需的資源然后存放到制作臺

去找喝的

去休閑(當狀態(tài)有點不開心的時候)

去挖礦(無優(yōu)先級,事實證明如果么有優(yōu)先級人類非常不想去挖礦)

去搬東西到倉庫

進到室內(nèi)

讓路(給其它優(yōu)先級高的角色)

在室內(nèi)閑逛接下來就是星際海盜們的世界觀了:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

排序從高到低:

攻擊殖民者(理所當然)

進入室內(nèi)

在室內(nèi)閑逛

沒了。

有人可能會說,怎么這么簡單?還有,你要去攻擊殖民者不就包含進入室內(nèi)了么,怎么下面還有個進入室內(nèi)?由于入侵者這個項比較少,我決定展開來解釋嵌套關(guān)系,來讓大家更好的理解這套AI邏輯的運行方法。

首先讓我們進入第一個優(yōu)先級的函數(shù):去攻擊殖民者,讓我們?nèi)タ匆幌滤窃鯓颖欢x的:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

第一個if的地方判定的是角色的身份,我就不再一一贅述statusflag12代表的內(nèi)容了。然后這個函數(shù)會去尋找離強盜們最近的站著的角色。

讓我們再來到findneareststanding函數(shù)被定義的地方:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

這里就很明了了,該函數(shù)會枚舉所有你的殖民者們,并且如果它們當前狀態(tài)不是死亡,或者被打倒的狀態(tài)時,函數(shù)會計算一個限制距離內(nèi)所有殖民者中離你最近的一個,并把結(jié)果返回上一級。

讓我們回到這里:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

現(xiàn)在,我們得到了findnearsetstanding函數(shù)傳回的離你最近并且可用的殖民者了,我們的下一個目標便是要接近她,這個目標則由goTarget實現(xiàn)。

我們來詳細看一看gotarget:

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

我們真正輸入的參數(shù)其實是當前處理的這個強盜和這個強盜將要選定目標的被害人,而這個函數(shù)的作用就是使強盜走向被害人,而其中就包含了goToBestAirlock(走向選定的最佳氣閘)。至于這個函數(shù)是如何定義的就不再解釋,太過復(fù)雜,也考慮到了其它正在執(zhí)行的任務(wù)對流量造成的影響。

《星球基地》角色執(zhí)行任務(wù)代碼優(yōu)先級分析

至此,強盜開始了自己入侵的過程,補充下前面setradius參數(shù)指的是當強盜離目標8個單位時,強盜會開始開火。

而我們看到,如果在findneareststanding(查找最近的目標)函數(shù)階段,所有的目標都在范圍之外,那么這個函數(shù)將會返回一個空值,下面一階段的if條件不會被滿足,然后整個大函數(shù)會返回一個false的值,這也就代表了在任務(wù)優(yōu)先級列表中,第一個優(yōu)先級的任務(wù)(攻擊殖民者)的條件不滿足,開始按順序進行優(yōu)先級列表中的下一個任務(wù)。

所以說了那么多,我想表達的就是,其實在攻擊殖民者這個任務(wù)里包括了許許多多邏輯AI,其中就包括進入氣閘這一項。至于第二個優(yōu)先級任務(wù)安排進入室內(nèi)的原因是,如果強盜周邊在規(guī)定范圍內(nèi)沒有符合要求的目標,那么強盜就會進入室內(nèi)。

在此之后,強盜滿足了處于室內(nèi)的狀態(tài),優(yōu)先級順位中第二位的進入室內(nèi)的條件返回也會變成false,這時候,強盜會執(zhí)行第三順位的任務(wù):在室內(nèi)隨機游蕩,直到在下一次判定的時候第一順位任務(wù)的條件被觸發(fā),那么強盜就會去攻擊那個被選中的倒霉蛋了。

相關(guān)攻略
相關(guān)游戲