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/cn.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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP