栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

思维导图

文字版:

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

行为树对于AI程序员来说

易于编程实现和使用

快速搭建

易扩展

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

上层脚本

底层引擎C++

设计团队

对行为快速迭代

程序团队

专注算法特性

引擎对行为树的处理

代码示例下载

Game AI Pro

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716918.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号