90 lines
11 KiB
JSON
90 lines
11 KiB
JSON
{
|
||
"1": "LimboAI 文档",
|
||
"2": "<b>LimboAI</b> 是一个面向 <b>Godot Engine 4</b> 的开源 C++ 模块,将<b>行为树</b>与<b>状态机</b>结合在一起,用于打造你游戏的 AI。它自带行为树编辑器、内置文档、可视化调试器等!虽然它是用 C++ 实现的,但完全支持用 GDScript 来<l1>创建你自己的任务</l1>和状态。完整功能列表见 <l2>LimboAI GitHub</l> 页面。",
|
||
"3": "<b>行为树</b>是一种强大的层次结构,用于建模和控制游戏中智能体(例如角色、敌人、实体)的行为。它旨在让你更轻松地为游戏创建复杂且高度模块化的行为。想进一步了解行为树,请参阅<l1>行为树简介</l>。",
|
||
"4": "<b>分层状态机</b>是一种有限状态机,允许任意状态拥有自己的子状态机。这样你就可以把一个庞大的状态机拆解为多个较小的状态机,从而应对 AI 在状态与状态转换上的复杂度。",
|
||
"5": "获取 LimboAI",
|
||
"6": "LimboAI 既可以作为 C++ 模块使用,也可以作为 GDExtension 共享库使用。两者之间存在一些差异。简而言之,GDExtension 版本使用起来更方便,但功能上略有受限。模块版本提供更好的编辑器体验,性能也稍好一些,但需要使用包含导出模板的自定义引擎构建。无论你选择哪种方式,你的项目都能同时兼容两者,随时可以互相切换。",
|
||
"7": "选择你想使用的版本。如果拿不定主意,就从 GDExtension 版本开始。你随时可以改变决定 —— 两个版本完全兼容。",
|
||
"8": "获取 GDExtension 版本",
|
||
"9": "官方 <l1>LimboAI GitHub</l> 页面以及资源库(Asset Library)中都提供了预编译版本。",
|
||
"10": "GDExtension 是使用 LimboAI 插件最便捷的方式,但它有一些限制:",
|
||
"11": "不提供文档提示(tooltip)。",
|
||
"12": "由于依赖 Godot API 中不存在的引擎类,扩展版本中无法使用便捷的 <l1>BBParam</l> 属性编辑器。",
|
||
"13": "<b>🛈 另见:</b><l1>什么是 GDExtension?</l>",
|
||
"14": "安装步骤:",
|
||
"15": "确认你正在使用最新稳定版的 Godot 编辑器。",
|
||
"16": "为你的 LimboAI 实验创建一个新项目。",
|
||
"17": "在 Godot 中点击屏幕顶部的 AssetLib 标签,搜索 LimboAI 并下载。LimboAI 插件会连同示例项目文件一起下载。此时打印出的错误可以忽略,那是因为扩展库尚未加载。",
|
||
"18": "用 Project -> Reload project 重新加载项目。现在应该不会再打印任何错误了。",
|
||
"19": "在项目文件中找到名为 showcase.tscn 的场景文件并运行它。它是示例的入口点。",
|
||
"20": "获取模块版本",
|
||
"21": "官方 <l1>LimboAI GitHub</l> 页面提供预编译版本。",
|
||
"22": "在 <l1>GitHub releases</l> 中,下载适用于你平台的最新预编译发行版。",
|
||
"23": "从同一个发行版中下载示例项目压缩包。",
|
||
"24": "解压预编译编辑器与示例项目文件。",
|
||
"25": "启动预编译的编辑器可执行文件,导入并打开示例项目。",
|
||
"26": "运行项目。",
|
||
"27": "<b>重要</b>:使用模块版 LimboAI 导出游戏时,请务必使用同一个 GitHub 发行版构建中附带的预编译导出模板。",
|
||
"28": "在 C# 中使用 LimboAI",
|
||
"29": "下面介绍如何使用模块版本配合 C# 编写你的任务和状态。",
|
||
"30": "找到 LimboAI 的 NuGet 包文件。",
|
||
"31": "每个提供的构建都带有 GodotSharp 文件夹,其中的包位于 “GodotSharp/Tools/nupkgs/” 下。记下该目录路径,下一步会用到。",
|
||
"32": "使用以下命令添加一个本地 NuGet 包源:",
|
||
"33": "你的 C# 项目应该就能看到 LimboAI 的类并成功编译。",
|
||
"34": "关于 GDExtension,目前我只能确认模块版本与 C# 可以正常工作。遗憾的是,我在 GDExtension 版本上还没有成功过。如果你用 GDExtension 成功了,请通过 Discord 或邮件告诉我。",
|
||
"35": "参与贡献",
|
||
"36": "在 Godot 发布第三个 beta 或候选版本之前,我们以 Godot 引擎的最新稳定版作为开发目标。如果你想为本项目做贡献,请确保使用对应的 Godot 版本。",
|
||
"37": "我们遵循 <l1>Godot 代码风格指南</l>。请使用 <2/> 来保持风格一致。你可以用 <4/> 为 Git 安装 <3/> 钩子,把这一过程自动化。",
|
||
"38": "提交拉取请求(Pull Request)时,请保持次版本向后兼容。",
|
||
"39": "我们支持把 LimboAI 构建为 Godot 引擎的模块,也支持构建为 GDExtension 库。请确保你的贡献在两种方式下都兼容。我们的 CI 工作流会验证你的改动能否在两种配置下都编译通过。",
|
||
"40": "作为 Godot 引擎模块编译",
|
||
"41": "克隆 Godot 引擎仓库。",
|
||
"42": "切换到最新的稳定版 tag。",
|
||
"43": "把 LimboAI 仓库克隆到 <1/> 目录中。",
|
||
"44": "详细的引擎构建说明请参考 <l1>Godot 引擎文档</l>。",
|
||
"45": "使用 <1/> 构建选项可以编译<b>单元测试</b>。要运行它们,请带上 <2/> 命令行选项运行编译好的 Godot 可执行文件。",
|
||
"46": "构建 C# 包",
|
||
"47": "如果你希望从源码构建时启用 LimboAI 的 C# 支持,请按照 Godot 关于带 C# 支持从源码构建的说明操作:<l1>使用 .NET 编译</l>。LimboAI 的类会包含在该构建流程的输出中。",
|
||
"48": "作为 GDExtension 库编译",
|
||
"49": "你需要 SCons 构建工具和一个 C++ 编译器。另见<l1>编译</l>。运行 <2/> 即可为你当前的平台构建插件库。",
|
||
"50": "如果 <2/> 目录中还没有 <1/> 仓库,SCons 会自动克隆它。",
|
||
"51": "默认情况下,构建产物会被放到示例项目中:<1/>。",
|
||
"52": "其他选项与目标请查看 <1/>。",
|
||
"53": "为文档做贡献",
|
||
"54": "在线文档使用 <l1>Sphinx</l> 生成。源文件以 RST 格式放在 <2/> 目录中,可以在本地用 <3/> 构建。更多细节请参阅 <l4>Sphinx 文档</l>。",
|
||
"55": "类文档存放在 <1/> 目录下的 XML 文件中。如果你新建了类或修改了已有类,可以在 Godot 源码根目录下用 <2/> 选项运行编译好的 Godot 可执行文件,用来生成缺失的 XML 文件或类文档中对应文件的缺失片段。编辑完 XML 文件后,请再次用 <3/> 选项运行编译好的编辑器可执行文件,以更新并整理这些 XML 文件。",
|
||
"56": "类文档的 Sphinx RST 文件由 XML 文件经 Godot 脚本 <1/> 生成,并保存在 <2/> 目录中。该过程由我们自己的脚本 <3/> 完成。<4/> 中的 RST 文件不应手动编辑。",
|
||
"57": "行为树简介",
|
||
"58": "<b>🛈 注意:</b>示例项目中包含一个教程,通过直观的示例带你入门行为树。",
|
||
"59": "<b>行为树(BT)</b>是一种层次结构,用于建模和控制游戏中智能体(例如角色、敌人、实体)的行为。它旨在让你更轻松地为游戏创建复杂且高度模块化的行为。",
|
||
"60": "行为树由若干任务组成,这些任务代表具体的动作或决策规则。任务大致可分为两大类:控制任务和叶任务。<b>控制任务</b>决定树内的执行流程,包括 <l1>Sequence</l>、<l2>Selector</l> 和 <l3>Invert</l>。<b>叶任务</b>代表要执行的具体动作(例如移动或攻击),或是需要检查的条件。<l4>BTTask</l> 类为行为树的各种积木块提供了基础。这类任务可以<l5>通过 Blackboard 共享数据</l5>。",
|
||
"61": "<b>🛈 注意:</b>要<l1>创建你自己的动作</l1>,请继承 <l2>BTAction</l> 类。",
|
||
"62": "行为树通常每一帧都会处理一次。它自上而下遍历,由控制任务决定控制流。每个任务都有一个 <l1>_tick</l> 方法,负责执行任务的工作并返回表示进度的状态:<2/>、<3/> 或 <4/>。<5/> 和 <6/> 表示已完成工作的结果,而当一个任务需要不止一个 tick 才能完成时,就会返回 <7/> 状态。这些状态决定树的推进方式,其中 <8/> 状态通常意味着树会在下一帧继续执行。",
|
||
"63": "任务共有<i>四种类型</i>:",
|
||
"64": "<b>动作(Actions)</b>是执行实际工作的叶任务。",
|
||
"65": "例如:<l1>PlayAnimation</l>、<l2>Wait</l>。",
|
||
"66": "<b>条件(Conditions)</b>是执行各种检查的叶任务。",
|
||
"67": "例如:<l1>CheckVar</l>、<l2>InRange</l>。",
|
||
"68": "<b>组合任务(Composites)</b>可以拥有一个或多个子任务,并决定子任务的执行流程。",
|
||
"69": "例如:<l1>Sequence</l>、<l2>Selector</l>、<l3>Parallel</l>。",
|
||
"70": "<b>装饰器(Decorators)</b>只能拥有一个子任务,用于改变其子任务的运行方式。",
|
||
"71": "例如:<l1>AlwaysSucceed</l>、<l2>Invert</l>、<l3>TimeLimit</l>。",
|
||
"72": "<l1>Sequence</l> 是核心组合任务之一。它按顺序从第一个到最后一个执行子任务,直到其中一个返回 <2/>,或者全部返回 <3/>。换句话说,只要有任一子任务返回 <4/>,<l5>Sequence</l> 的执行就会被中止,并且 <l6>Sequence</l> 自身会返回 <7/>。",
|
||
"73": "<l1>Selector</l> 是另一个必不可少的组合任务。它按顺序从第一个到最后一个执行子任务,直到其中一个返回 <2/> 或全部返回 <3/>。换句话说,当某个子任务返回 <4/> 时,它就继续尝试下一个,直到找到那个返回 <5/> 的子任务。一旦某个子任务返回 <6/>,<l7>Selector</l> 就会停止,并同样返回 <8/>。<l9>Selector</l> 的目的就是找出一个能够成功的子任务。",
|
||
"74": "行为树通过<b>条件任务</b>来处理条件逻辑。这些任务检查特定条件,并根据智能体或其环境的状态返回 <1/> 或 <2/>(例如 “IsLowOnHealth”、“IsTargetInSight”)。条件可以与 <l3>Sequence</l> 和 <l4>Selector</l> 搭配使用,构建你的决策逻辑。",
|
||
"75": "<b>🛈 注意:</b>要<l1>创建你自己的条件</l1>,请继承 <l2>BTCondition</l> 类。",
|
||
"76": "请查阅 <l1>BTTask</l> 类的文档,它为行为树的各种积木块提供了基础。",
|
||
"77": "创建行为树",
|
||
"78": "本章介绍如何创建和调试行为树。",
|
||
"79": "为智能体添加行为树",
|
||
"80": "按照以下步骤,为新建或已有的智能体添加行为树:",
|
||
"81": "为你的智能体创建一个场景文件,或者打开一个已有的场景。",
|
||
"82": "在场景中添加一个 <l1>BTPlayer</l> 节点。",
|
||
"83": "选中 <l1>BTPlayer</l>,在检视面板(Inspector)中新建一个行为树。",
|
||
"84": "你也可以通过该属性的上下文菜单,把行为树保存到文件中。",
|
||
"85": "点击行为树属性,在 LimboAI 编辑器中打开它。",
|
||
"86": "调试行为树",
|
||
"87": "在 Godot 引擎中,依次打开 “Bottom Panel > Debugger > LimboAI” 标签页。借助 LimboAI 调试器,你可以查看运行中的项目里任何当前处于活动状态的行为树。调试器可以从主编辑器窗口中分离出来,如果你使用 HiDPI 显示器或第二块屏幕,这会特别有用。"
|
||
}
|