《游戏人工智能》学习笔记3——7 用脚本写现实世界的行为树

本文探讨了行为树在游戏AI编程中的应用,特别是在《阿玛拉王国:惩罚》中的实践。通过使用Lua脚本语言,设计团队可以快速迭代AI行为,而程序团队则专注于算法特性的开发。文章还讨论了脚本语言在性能和职责划分方面的考量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思维导图

文字版:

7 用脚本写现实世界的行为树

7.1 概述

  • 行为树对于AI程序员来说

    • 易于编程实现和使用

    • 快速搭建

    • 易扩展

  • 《阿玛拉王国:惩罚》 Kingdoms of Amalur: Reckoning

    • 上层脚本

    • 底层引擎C++

    • 设计团队

      • 对行为快速迭代

    • 程序团队

      • 专注算法特性

      • 引擎对行为树的处理

    • 代码示例下载

7.2 架构

  • 行为树中每个节点都是一个行为(behaviour)

    • 预设条件(precondition)

    • 动作(action)

  • 行为树伪代码,递归调用

    • Behavior

      • 行为

    • BehaviorMgr

      • 记录所有加载的Behavior实例

    • BehaviorTree

7.3 用脚本定义行为

  • 原因

    • 快速迭代开发

    • 团队开发

      • 设计人员脚本快速上手

      • 程序员仅需要编写脚本与C++引擎的通信接口,而不用盯在游戏AI行为上

  • Lua

    • table

      • precondition

      • behavior

7.4 代码示例

    • LuaWrapper

      • 管理所有与Lua运行时的交互

    • NTreeNode

      • 通用的树类

7.5 与游戏引擎集成

  • 通常引擎需要支持重新加载Lua虚拟机的功能?

7.6 脚本的隐患

  • 性能

    • Lua

      • 带垃圾回收(GC,Garbage Collected)

      • 虚拟机内部的所有数值变量number都是用浮点数表示的

    • 需要保证游戏帧率稳定

      • 所有的Lua内存分配由引擎中实现的块内存分配器接管

      • 主动在确定的时间调用GC,预防Lua的垃圾收集器在游戏运行时不可控GC

      • 修改Lua源码,用传统整形取代浮点数,且脚本内避免负责的数学运算

  • 职责

    • 设计师

      • 编写AI行为脚本

    • 工程师

      • 代码审查 code review

      • 定期组织团队进行代码审查

7.7 进阶

  • 理想情况下,我们应该用数据驱动的形式定义行为树,然后再游戏运行时加载数据,实例化行为树。这样我们就可以开发外部工具来编写行为树,以及维护行为树间的引用关系。

XMind - Trial Version

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值