heart 板


LINE

最近在學習虛幻引擎Unreal engine 5人工智能模塊,需要使用Btree blackboard,請問為什 麼要blackboard?能給我一個比喻增進了解嗎? 使用 Unreal Engine 5 的 AI 模塊時,`Blackboard`(黑板)是與 `Behavior Tree`(行 為樹)協同工作的關鍵組件。它之所以重要,是因為它提供了一種集中且靈活的方式來儲存 和管理 AI 代理(Agent)的資料。 ### 為什麼需要 Blackboard? 想像一下,一個 AI 角色(例如遊戲中的敵人或友方 NPC)需要做出各種決策。這些決策可 能基於: * **當前狀態:** 它受傷了嗎?它看到玩家了嗎? * **目標:** 它要去哪裡?它要攻擊誰? * **環境資訊:** 附近有沒有掩體?有沒有道具可以撿? 如果這些資訊分散在行為樹的各個節點中,就會變得非常難以管理和協調。例如,一個行為 樹節點負責「尋找玩家」,另一個節點負責「攻擊玩家」,它們都需要知道「玩家的位置」 。如果沒有一個共享的地方來儲存這個資訊,每個節點都需要自己去獲取,這會導致: 1. **重複的邏輯:** 每個節點都有一段代碼來獲取相同的資訊。 2. **難以修改和維護:** 如果玩家位置的獲取方式改變了,你需要修改所有相關節點。 3. **行為樹邏輯與資料耦合:** 行為樹的節點應該專注於**做什麼**,而不是**知道什 麼**。 `Blackboard` 就像一個共享的記憶體區域,讓行為樹的各個節點可以讀取和寫入資訊,而 不需要直接互相溝通。這使得行為樹的邏輯可以保持乾淨和專注。 ### 比喻:餐廳的服務生和廚師 讓我給你一個比喻來增進了解: 想像你經營一家非常繁忙的餐廳,有: * **服務生(Behavior Tree):** 他們負責處理顧客的點餐、上菜、結帳等等。他們有很 多不同的任務,而且會根據情況做出不同的決定。 * **廚師(AI 的不同行為邏輯,例如「尋路」、「攻擊」):** 他們負責準備菜餚。 * **`Blackboard`(點菜單/訂單牆):** 這是一塊巨大的、所有人都看得到的白板,上面 寫著: * 桌號:5,顧客點了牛排(`目標:攻擊玩家`) * 桌號:3,顧客說不吃辣(`狀態:玩家受傷`) * 桌號:7,顧客要求加一瓶可樂(`環境資訊:發現道具`) * 下一道菜是「紅酒燉牛肉」(`目標:走向某個位置`) **沒有 `Blackboard` 的情況(傳統硬編碼):** 如果沒有這塊點菜單,服務生每次接到點餐,都必須直接跑到廚房,對著廚師喊:「3 號桌 要一份意麵!」然後,當意麵做好後,廚師又必須直接找到那個服務生說:4 「3 號桌的意 麵好了!」 這會導致: * **混亂:** 大量的服務生和廚師之間直接對話,非常吵雜。 * **效率低下:** 服務生需要不斷跑到廚房,廚師也需要記住每個服務生負責哪張桌子。 * **難以擴展:** 如果增加了新的菜品或服務生,溝通會變得更加複雜。 **有了 `Blackboard` 的情況:** 現在,服務生只需要將顧客的點餐寫在 `Blackboard` 上(例如:「3 號桌,意麵」)。廚 師會不斷地查看 `Blackboard`,一旦看到有新的訂單,就開始製作。菜餚做好後,廚師也 會在 `Blackboard` 上標記「3 號桌意麵已完成」。服務生看到標記後,就去取菜並上桌。 **對應到 AI 系統:** * **服務生(Behavior Tree):** 它會不斷地檢查 `Blackboard` 上的資訊,根據這些資 訊決定接下來要執行哪個行為節點(例如,看到 `玩家位置` 資訊,就執行 `移動到玩家` 節點;看到 `玩家生命值低`,就執行 `尋找藥水` 節點)。 * **廚師(AI 的不同行為邏輯):** 不同的行為邏輯會把他們需要分享的資訊寫到 `Blac kboard` 上。例如,「感知系統」發現了玩家,就會把「玩家位置」寫到 `Blackboard` 上 。 * **`Blackboard`:** 儲存了 AI 代理需要了解的各種資訊,例如: * `玩家位置`(目標) * `敵人生命值`(狀態) * `是否被發現`(狀態) * `最近的掩體位置`(環境資訊) * `尋路目標點`(目標) **總結來說,`Blackboard` 在 AI 系統中扮演的角色是:** 1. **集中儲存:** 提供一個單一的、共享的資料儲存位置。 2. **解耦:** 將行為樹的邏輯(做什麼)與 AI 的狀態和目標資料(知道什麼)分開, 使得行為樹更簡潔、可讀性更高。 3. **靈活性:** 不同的行為樹節點可以方便地讀取和寫入共享的資訊,即使它們位於行 為樹的不同分支中。 4. **可擴展性:** 增加新的 AI 行為或資訊類型時,只需要修改 `Blackboard` 的結構 ,而無需修改行為樹的許多節點。 所以,`Blackboard` 就像一個 AI 角色的大腦,負責儲存它需要了解的一切,而行為樹則 像大腦中處理決策的邏輯單元,它會根據大腦中的資訊來做出行動。這讓 AI 的行為設計變 得更加模組化和易於管理。 你這個類比非常棒,而且捕捉到了 `Blackboard` 的一個核心特性,但也有一些細微的差別 。 ### `Blackboard` 與消息佇列的相似之處 你提到「消息佇列」中,消費者從中間獲取生產者的消息,並且將生產者類比為黑板(或廚 師透過菜單牆溝通),這個理解是**部分正確且很有洞察力**的。 相似之處在於: * **解耦(Decoupling):** 兩者都實現了生產者和消費者之間的解耦。生產者(例如,A I 的感知系統發現了玩家)不需要直接知道誰會使用這個資訊,它只需將資訊寫入 `Blackb oard`。消費者(行為樹的某個節點)也不需要知道是誰生成了這個資訊,它只需要從 `Bla ckboard` 讀取。 * **集中式資訊儲存:** `Blackboard` 就像一個消息佇列或資料庫,提供一個中心點來儲 存和訪問數據。 ### `Blackboard` 與消息佇列的差異 然而,`Blackboard` 和傳統的「消息佇列」模式之間存在一些關鍵的差異,這也是為什麼 它被稱為「黑板」而不是「消息佇列」: 1. **持久性與狀態:** * **消息佇列:** 消息通常是**暫時的**,一旦被消費者處理,通常就會從佇列中移 除。它更側重於「事件流」或「任務分發」。 * **`Blackboard`:** 儲存的是 AI 的**當前狀態和目標**,這些資訊通常是**持久 的**,直到被明確修改或刪除。它更像是一個共享的「記憶體」或「資料庫」,反映了 AI 當下的「心智狀態」。廚師在菜單牆上寫下「紅酒燉牛肉」並不是一個即時消息,而是「這 道菜需要製作」的**狀態**,直到它被完成。 2. **拉取模型與推送模型:** * **消息佇列:** 雖然有時可以是拉取,但許多消息佇列也支援「推送」模型,即消 息到達時通知消費者。 * **`Blackboard`:** 主要是一個**拉取模型**。行為樹的節點會**主動去查詢** `B lackboard` 上的資訊,而不是被動地等待消息被推送到它們。例如,行為樹的「攻擊節點 」會主動去 `Blackboard` 上查詢「玩家位置」這個鍵,而不是等待「玩家位置」這個消息 被推送過來。 3. **語義差異:** * **消息佇列:** 更側重於「事件」和「命令」。例如:「玩家被發現了!」或「開 始攻擊!」。 * **`Blackboard`:** 更側重於「事實」和「狀態」。例如:「玩家當前位於 (X, Y, Z)」、「AI 的生命值是 50」、「下一個路徑點是 A」。 --- ### 總結 所以,你的比喻非常貼切地解釋了**解耦**和**集中式資訊共享**的核心概念。 `Blackboard` 更像是一個**共享的「資料庫」或「事實儲存庫」**,它包含著 AI 代理「 知道什麼」的所有當前資訊。行為樹則根據這些「事實」來決定「做什麼」。 廚師在菜單牆上寫下的「紅酒燉牛肉」這個資訊,的確類似於 `Blackboard` 上的一個「鍵 值對」,它代表了一個「待辦事項」或「目標狀態」,而不是一個會立即消失的「事件」。 因此,你可以這樣理解: * **消息佇列**更像是餐廳裡傳遞的「口頭消息」或「小紙條」,一旦傳達,信息就完成其 使命。 * **`Blackboard`**更像是餐廳牆上那張**持續更新的「訂單總覽板」**,上面記錄了所有 桌子的當前狀態、待處理任務和已完成的項目,所有人都隨時可以去查看。 這樣想,是不是能更清楚地理解兩者之間的細微差別了呢? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.82.133.253 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/heart/M.1748054494.A.6DD.html







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP