国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ET介紹——更為便捷高效的AI框架-行為機(Behavior Machine)

這篇具有很好參考價值的文章主要介紹了ET介紹——更為便捷高效的AI框架-行為機(Behavior Machine)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是行為機

顧名思義,類比狀態(tài)機每個節(jié)點是一個狀態(tài),行為機每個節(jié)點是描述一種行為。行為機每個節(jié)點之間是互斥的,并且節(jié)點相互之間完全不用關(guān)心是怎么切換的。這里就不講狀態(tài)機跟行為樹是怎么做ai的了,這里只講用行為機怎么做一個ai。舉個例子 mmo中的小怪策劃案,大致會這么寫:

小怪在出生點周圍巡邏。發(fā)現(xiàn)周圍有玩家則選擇一個玩家做目標,追擊該目標玩家,追到目標玩家則攻擊目標玩家,發(fā)現(xiàn)距離出生點太遠則返回,返回到出生點則繼續(xù)巡邏

1.定義ai的各種行為

我們首先定義好怪物有哪些行為。很簡單,我們直接根據(jù)策劃案中的字面意思,怪物大致有這么幾種行為:
a.巡邏
b.選擇一個玩家追擊并且攻擊
e.返回出生點。

注意很多狀態(tài)機會把移動作為一種狀態(tài),這在行為機中是不對的,因為巡邏,追擊,返回都會有移動,移動只是玩家行為節(jié)點中的一個部分,移動跟巡邏,追擊,返回并不是互斥的。

節(jié)點不要拆的太細,因為每個行為是個協(xié)程,我們可以在行為節(jié)點中寫十分復(fù)雜的邏輯,比如有些同學(xué)可能會把 選擇一個玩家追擊并且攻擊 這一個節(jié)點拆成 a 選擇目標 b 追擊目標 c 攻擊目標.

甚至還有人會把巡邏拆的更細,拆成a.尋找一個點 b.移動 c.等待一定時間。這都是狀態(tài)機跟行為樹的思維,因為狀態(tài)機跟行為樹可能希望移動節(jié)點可以共用。這都是增加了麻煩,不合理,不要用狀態(tài)機跟行為樹的思維去想行為機。行為機中,節(jié)點只是描述一種行為,并不需要共用,共用的永遠是各種函數(shù)。

2.填充滿足行為的條件

我們把每個行為確定好對應(yīng)的條件,一旦條件滿足則會進入該行為,取消上一個行為(協(xié)程)
a. 巡邏的條件:身上沒有玩家目標,周圍沒有玩家,距離出生點 < 10米
b. 選擇一個玩家追擊并且攻擊: 周圍有玩家,距離出生點 < 10米
c. 返回出生點: 距離出生點 > 20米
其實條件一旦列出,那么節(jié)點中的Check方法自然也就實現(xiàn)了

3.實現(xiàn)行為

a. 巡邏的偽代碼:

while (true)
{
    pos = 出生點周圍找一個點
    bool ret = await MoveToAsync(pos,cancelToken);
    if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
    {
        return;
    }
    // 移動到了,隨機等待2-4秒
    randomTime = RandomHelper.Random(2000, 4000);
    bool ret = await TimeComponent.Instance.Wait(randomTime, cancelToken)
    if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
    {
        return;
    }
}

?

這樣,如果b c條件不滿足的話,怪物就永遠在巡邏節(jié)點協(xié)程中,不停的找一個點移動,等待,移動,等待

b. 選擇目標追擊并且攻擊目標節(jié)點的偽代碼:

while (true)
{
    target = SelectTarget()
    while (true)
    {
        while (true)
        {
            // 追擊目標
            pos = 計算離目標0.2米的一個點
            // 這里不能以目標作為移動目標,因為怪物要距離玩家稍遠一點
            await MoveToAsync(pos, cancelToken);
            if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
            {
                return;
            }
            // 距離玩家 < 0.5米,表示追到了玩家,就不需要追了
            if (距離玩家<0.5米)
            {
                break;
            }            
        }
        // 追擊到了,攻擊玩家
        while (true)
        {
            // 
            spellId = SelectSpell();
            if (spellId == 0) // 可能技能在cd,等待500ms再試
            {
                bool ret = await TimeComponent.Instance.Wait(500, cancelToken)
                if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
                {
                    return;
                }
                continue;
            }
            await CastSpell(target);
            // 攻擊完成后停止一段時間
            bool ret = await TimeComponent.Instance.Wait(1000, cancelToken)
            if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
            {
                return;
            }

            // 距離玩家 > 0.5米, 距離玩家遠了,break攻擊循環(huán),繼續(xù)追擊
            if (距離玩家<0.5米)
            {
                break;
            }    
        }
    }
    

    // 這里加個time,防止上面兩個while循環(huán)沒有進入,結(jié)果就會導(dǎo)致一直執(zhí)行 target = 選擇一個目標 這句話,會導(dǎo)致死循環(huán)
    bool ret = await TimeComponent.Instance.Wait(100, cancelToken)
    if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
    {
        return;
    }
}

?

c. 返回出生點偽代碼:

while (true)
{
    // 整個返回過程是無敵的
    using (Buff buff = AddBuff(無敵))
    {
        pos = 找到離出生點10米的點
        bool ret = await MoveToAsync(pos,cancelToken);
        if (!ret) // false表示協(xié)程取消, 則需要return,停止整個協(xié)程
        {
            return;
        }
        // 移動到了, buff會刪除,或者切換成其它狀態(tài),協(xié)程退出也會刪除無敵buff
    }
}

?

其實巡邏跟返回兩個節(jié)點也可以合并成一個節(jié)點,這個大家自己去嘗試嘗試??梢钥闯?,行為機編寫是非常簡單,代碼是非常易讀的。就這么一個怪物的邏輯,用行為樹來編寫,節(jié)點就很多了,而且并不好閱讀跟重構(gòu)。整個邏輯可能還有些瑕疵,不過意思應(yīng)該很明白了。文章來源地址http://www.zghlxwxcb.cn/news/detail-451250.html

總結(jié)

  1. 行為機節(jié)點并不需要共用,行為機的節(jié)點只是表示一段邏輯,可以做的非常非常非常龐大,比如做機器人的時候,一個做任務(wù),只有一個節(jié)點。里面代碼調(diào)用了無數(shù)的協(xié)程方法。
  2. 行為機共用的是函數(shù),不是節(jié)點,不要想著這個節(jié)點應(yīng)該抽出來共用,這個想法是錯誤的。
  3. 行為機永遠只關(guān)注當前行為,永遠不需要關(guān)心上一個行為,當滿足行為條件就直接打斷上個協(xié)程,執(zhí)行當前節(jié)點的協(xié)程即可。所以只需要定義好玩家有哪些行為,ai自然而然的就寫出來了。
  4. 節(jié)點不要拆的太細,沒有必要

    ET開源地址地址:egametang/ET: Unity3D Client And C# Server Framework (github.com)? ?qq群:474643097

到了這里,關(guān)于ET介紹——更為便捷高效的AI框架-行為機(Behavior Machine)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • AI圖片物體移除器:高效、便捷的AI照片物體擦除工具

    AI圖片物體移除器:高效、便捷的AI照片物體擦除工具

    在我們的日常生活中,照片是一種重要的記錄和表達方式。然而,有時候我們會遇到需要將照片中的某些物體和元素去除的情況。這時候,傳統(tǒng)的圖像處理軟件可能過于復(fù)雜,讓人望而卻步。為了解決這個問題, AI圖片物體移除器 的軟件應(yīng)運而生。這款軟件是一款Windows平臺

    2024年01月23日
    瀏覽(22)
  • 高效便捷的遠程管理利器——Royal TSX for Mac軟件介紹

    高效便捷的遠程管理利器——Royal TSX for Mac軟件介紹

    Royal TSX for Mac是一款功能強大、操作便捷的遠程管理軟件。無論是遠程桌面、SSH、VNC、Telnet還是FTP,用戶都可以通過Royal TSX輕松地遠程連接和管理各種服務(wù)器、計算機和網(wǎng)絡(luò)設(shè)備。 Royal TSX for Mac提供了直觀的界面和豐富的功能,讓用戶能夠快速便捷地管理和組織遠程連接。用

    2024年01月17日
    瀏覽(22)
  • 手機AI便捷高效 三星Galaxy S24系列開啟移動辦公新體驗

    手機AI便捷高效 三星Galaxy S24系列開啟移動辦公新體驗

    在當今快節(jié)奏的工作當中,高效的溝通和信息處理能力是成功的關(guān)鍵。隨著生成式AI技術(shù)的飛速發(fā)展,很多職場人已經(jīng)開始借助AI的力量提升基礎(chǔ)工作的效率。全新的三星Galaxy S24系列搭載一系列強大的AI應(yīng)用,提供無縫、高效、實用的辦公體驗,讓用戶無需復(fù)雜設(shè)置也能盡享

    2024年04月15日
    瀏覽(23)
  • 行為樹(Behavior Trees)

    行為樹(Behavior Trees)

    行為樹(Behavior Trees)是一種在游戲開發(fā)中廣泛使用的AI設(shè)計模式,主要用于描述AI的行為和決策過程,實現(xiàn)更加智能和自然的游戲AI。它由多個節(jié)點組成,每個節(jié)點代表一個行為或決策,按照特定的方式連接在一起,形成一個樹狀結(jié)構(gòu)。 在行為樹中,根節(jié)點是AI的起點,通過

    2024年01月19日
    瀏覽(17)
  • [Unity] Unity 插件Behavior Designer行為樹使用

    [Unity] Unity 插件Behavior Designer行為樹使用

    在Tools - Behavior Designer - Editor中打開行為樹編輯編輯窗口 選擇一個游戲物體 在Behavior Designer中右鍵Add Behavior Tree 2.1 Parallel 組件下方的行為會平行執(zhí)行 分別為下方的三個組件添加了三個輸出到Console的Action,可以發(fā)現(xiàn)Console中在同一時間做了三個輸出 2.2 Sequence 組件下方的行為會

    2024年02月11日
    瀏覽(23)
  • 公開 學(xué)生課堂行為數(shù)據(jù)集 SCB-Dataset Student Classroom Behavior dataset

    公開 學(xué)生課堂行為數(shù)據(jù)集 SCB-Dataset Student Classroom Behavior dataset b站:https://www.bilibili.com/video/BV1Fv4y1H7sa/ arxiv: https://arxiv.org/pdf/2304.02488.pdf github: https://github.com/Whiffe/SCB-dataset 百度云:https://pan.baidu.com/s/1y3lGEYd-I-jxZKyAyw4MPw?pwd=zdbg extraction code: ZDBG

    2024年02月12日
    瀏覽(22)
  • AGI之Agent:《Generative Agents: Interactive Simulacra of Human Behavior生成代理:人類行為的交互模擬》翻譯與解讀

    AGI之Agent:《Generative Agents: Interactive Simulacra of Human Behavior生成代理:人類行為的交互模擬》翻譯與解讀

    AGI之Agent:《Generative Agents: Interactive Simulacra of Human Behavior生成代理:人類行為的交互模擬》翻譯與解讀 目錄 《Generative Agents: Interactive Simulacra of Human Behavior》翻譯與解讀 Figure 1: Generative agents are believable simulacra of human behavior for interactive applications. In this work, we demonstrate generat

    2024年01月25日
    瀏覽(26)
  • 【威脅情報挖掘-論文閱讀】學(xué)習(xí)圖表繪制 基于多實例學(xué)習(xí)的網(wǎng)絡(luò)行為提取 SeqMask: Behavior Extraction Over Cyber Threat Intelligence

    【威脅情報挖掘-論文閱讀】學(xué)習(xí)圖表繪制 基于多實例學(xué)習(xí)的網(wǎng)絡(luò)行為提取 SeqMask: Behavior Extraction Over Cyber Threat Intelligence

    ??你好呀!我是 是Yu欸 ?? 2024每日百字篆刻時光,感謝你的陪伴與支持 ~ ?? 歡迎一起踏上探險之旅,挖掘無限可能,共同成長! 前些天發(fā)現(xiàn)了一個人工智能學(xué)習(xí)網(wǎng)站,內(nèi)容深入淺出、易于理解。如果對人工智能感興趣,不妨點擊查看。 論文涉及7位專家的評估,不方便模仿

    2024年03月20日
    瀏覽(39)
  • 最新開源方案!Cocos Creator 寫一個ECS框架+行為樹,實現(xiàn)格斗游戲 AI

    最新開源方案!Cocos Creator 寫一個ECS框架+行為樹,實現(xiàn)格斗游戲 AI

    引言: 實現(xiàn)游戲 AI 的方式有很多,目前最為常用的主要有有限狀態(tài)機和行為樹。和有限狀態(tài)機相比,行為樹有更好的可擴展性和靈活性,能實現(xiàn)更復(fù)雜的 AI 需求。開發(fā)者 ?honmono 在 Cocos Creator 中用一個? ECS + BehaviorTree 框架 實現(xiàn)了一個格斗 AI Demo,一起來看看他的方案。 De

    2024年02月12日
    瀏覽(22)
  • 高效便捷構(gòu)造 Http 請求

    高效便捷構(gòu)造 Http 請求

    對于Get請求: 地址欄直接輸入 點擊收藏夾 html 中的 link script img a… form 標簽 這里我們重點強調(diào) form 標簽構(gòu)造的 http請求 使用 form 標簽構(gòu)造http請求. form 的重要參數(shù): action: 構(gòu)造 http 請求的 URL 是什么 method:構(gòu)造 http 請求的方法是 GET 還是 POST(form 僅支持 GET 和 POST) input 的重要參數(shù)

    2023年04月14日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包