Files
2026-10-15 16:30:44 +08:00

90 lines
11 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 显示器或第二块屏幕,这会特别有用。"
}