Behavior Tree

本周四,SAGITEAM 的肥宅同学精心准备,做了一次内部分享,关于 行为树

SAGITEAM 制作的部分小游戏使用了 行为树 作为游戏 AI 的实现基础。行为树解放了程序员的一部分工作力,让策划同学能更加全面和直接地控制游戏中的行为。在开始使用行为树之前,SAGITEAM 已经将 FairyGUI 加入美术岗位的工作流中,让美术同学跳过程序员直接实现 GUI,成功避免了程序员提刀追砍产品经理,美术同学在一旁助威的杯具。

Show Me Your Knife

本文并不是一篇讨论行为树的技术文章,而是在此次分享结束后我站在 团队管理、个人成长以及工作效率 角度的一些关联思考。为了方便阅读,下面摘录一些 PPT 内容。很欣慰这次肥宅同学的文案中”既然“没有什么错别字!

肥宅的讲稿摘录

行为树可以做什么

  1. AI(AI的行为逻辑)
  2. 通过胜率控制本场难度
  3. 较为复杂的抽奖逻辑
  4. 游戏外的更多领域

行为树和状态机的比较

优点

  1. 行为逻辑和状态数据分离,任何节点写好以后可以反复利用
  2. 重用性高,可用通过重组不同的节点来实现不同的行为树
  3. 呈线性的方式扩展,易于扩展
  4. 可配置,把工作交给程序之外的人
  5. 能够胜任”AI” “掉宝”等等场景

缺点

  1. 每一帧都从 Root 开始,有可能会访问到所以的节点,相对 State Machine 消耗更多的 CPU
  2. 任何一个简单的操作都必须要使用节点

如何构建行为树

  1. 思考需求,分解动作,包括需要的参数
  2. 和程序沟通核对,调整具体需求
  3. 程序完成后,核实节点是否有效并且满足需求

问题思考

  1. 美术可以利用行为树做什么
  2. 策划如何更好和程序沟通
  3. 面对有些行为树不太好实现的功能需要如何解决

关于行为树的讨论

肥宅的分享结束后,大家的讨论格外激烈(如果不是我拦着,估计肥宅的分享就讲不完了)。下面我列出这些讨论过的问题以及大家讨论出的解决方案。

第一,有些功能用行为树很难实现

肥宅同学认为一些行为很难用行为树来实现。但阿森(程序员)认为这些行为不能实现的原因是对行为树的思维方式不了解导致。此处策划和程序各自表明了自己的观点,但我认为双方都没有站在对方角度想问题。

我认为策划理解程序思维是非常有必要的。行为树的使用涉及到很多程序术语,在对情况程序运行方式不了解的前提下,策划会陷入一个思维模式的陷阱中无法自拔。此时程序员要主动去对策划进行教学,帮助策划勇敢地走出第一步。在这一步中程序员会消耗较多的精力,甚至需要帮助策划去思考。但这个消耗是值得的。

策划也需要在这个阶段中努力学习程序术语,积极与程序沟通以理解程序的思维方式和逻辑。这个过程可能很痛苦,但这个痛苦依然是值得承受的。

第二,什么时候应该选择行为树,什么时候应该选择状态机?

Nef 同学提到了 AI 实现的三重境界:

  1. If/Else 硬编码;
  2. 使用状态机,基于事件编程;
  3. 使用行为树。

这三重境界越来越高级,对使用者的要求也越来越高。SAGITEAM 的作品”天才射手“中使用了状态机,现在的新作中开始使用行为树,说明我们对自己的要求更高了。

有限状态机

木易同学认为策划同学应在游戏设计之初就确定选择。并非所有的游戏都适合使用行为树。一些比较简单的 AI 可能更适合使用状态机或者硬编码。如果策划能够在项目开启之初就想好方案,就能避免返工,让产品开发更快捷。

这就需要策划更深入地思考项目,做出更加精确的规划。这是对策划要求的进一步提升。

第三,行为树的优势

对于这一点,湃总讲得很清晰。他认为行为树可以提高协作效率。就像我们使用 FairyGUI 提升美术和开发之间的协作效率一样,行为树也能将对 AI 行为的改变限制到策划岗位,所有的调整都不需要程序员参与。这样既保证了策划同学对于行为思考和实现的一致性,又解放了程序员的生产力。

彼得原理

上面的讨论大部分是程序员在向策划发出质问,或者对策划岗位提出更高的要求。在 SAGITEAM,我一贯主张并持续推进下面几点:

  1. 策划需要熟悉美术、程序和运营
  2. 程序员必须会 PS 切图
  3. 美术需要了解程序的思维方式

只有这样,我们才能尽量晚地接触到 《彼得原理》 所提到的 上升悖论 限制:

在层级组织里,如果我们积极进取、不断晋升,那么我们迟早会升到一个超出我们能力的位置,陷入工作不胜任的困境之中,成为组织的障碍和负资产。

彼得原理在 1969 年提出,它与 1955 年提出的 帕金森定律 和 1948 年出现的 墨菲定律 一起被称为西方管理学上的三大发现。彼得博士甚至提出,如果人类无节制地追求进步和发展,人类本身也迟早会进入生存不胜任的状态。

我并不担心人类的生存不胜任。我更关心 SAGITEAM 成员的成长。彼得原理所提到悖论有一个很重要的前提,就是 ”在层级组织里“。现代互联网创业公司的扁平化结构,削弱了层级观念对整个组织的影响。坚持小团队规模,强联系和职能侵入的工作方式,也能在一定程度上缓解不胜任困境。然而,这些方案都只能做到“缓解”,如果希望团队和成员进一步成长,除了给大家提供学习目标和方向之外,还必须想办法从底层激发团队成员的热情,让成员推着团队走。

组织行为学

这次关于“行为树”的培训,就是一个自我激发的例子。行为树的使用是在产品设计的过程中,由策划推荐给程序员,再从程序员反推至策划的。它不是一个自上而下的产物,而是一个自下而上的过程。在木易同学意识到行为树的重要性时,我们制定了一个全员分享计划,让所有人都参与到行为树的学习中来。这次分享又造成了更深入和积极的讨论,进一步影响着 SAGITEAM 全体成员的思维模式。

我觉得这个过程是 组织行为学 的一个极好范例:

组织行为学(英语:Human Behavior in Organization),是通过研究一定组织体系内人的心理和行为表现及其规律,从而提高预测、引导和控制人的行为的能力,以实现组织既定目标的一种社会科学。

组织行为学是研究在组织中以及组织与环境相互作用,人们从事工作的心理活动和行为反应规律性的科学。它采用系统分析的方法,综合运用心理学、社会学、人类学、生理学、生物学、经济学和政治学等知识,研究一定组织中人的心理和行为的规律性,从而提高各级领导者和管理者对人的行为预测和引导能力,以便更有效地实现组织预定的目标1

组织行为学的目的只有一个,就是改变工业化时代建立起来的那套边界清晰,分工明确,职责固定的管理方式。把它变得更灵活、更能激发创新、更适应当下快速变化的商业环境。

现代管理的目的不是约束个体,而是要激活个体2。生态就像一片肆意生长的草原,它不是控制出来的,而是失控的结果3。管理的目的是把企业还原到最小的颗粒度:人,然后通过激发个体的活力让团队保持活力。

缺乏创新、目标僵化、缺乏工作参与度,归根到底就是缺乏探索欲。探索系统是人类大脑的一个生理结构,是进化赋予人类族群的整理算法。它激发人类主动离开舒适区,去寻找新的可能性。一旦产生对外探索的欲望,它就会刺激身体,释放出积极的生理信号,让你感觉到接下来进行的工作充满了强烈的使命感和意义。

长久地停留在舒适区,会让探索系统失灵。对探索者行为的约束(例如限制创新方式),对探索者错误的惩罚都会导致探索行为止步不前。我们需要建立更自由的创新方式,创建安全区,保护探索者的激情和梦想。

要升级我们的探索系统,当然需要对探索者提出更高的要求。

SAGITEAM 值得这样做。

SAGITEAM 也正在这样做。

SAGITEAM

所以,不要害怕我对你要求太高。

曾嵘的微信

欢迎加微信吐槽

公众号:曾嵘胡扯的地方

公众号:曾嵘胡扯的地方

全文完