栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号