[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-limbonaut--limboai":3,"tool-limbonaut--limboai":64},[4,16,27,35,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":15},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,14],"Agent","插件","ready",{"id":17,"name":18,"github_repo":19,"description_zh":20,"stars":21,"difficulty_score":22,"last_commit_at":23,"category_tags":24,"status":15},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,2,"2026-04-10T01:20:03",[14,13,25,26],"图像","开发框架",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":22,"last_commit_at":33,"category_tags":34,"status":15},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[14,26],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":22,"last_commit_at":41,"category_tags":42,"status":15},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[25,43,44,14,13,45,46,26,47],"数据工具","视频","其他","语言模型","音频",{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":15},5784,"funNLP","fighting41love\u002FfunNLP","funNLP 是一个专为中文自然语言处理（NLP）打造的超级资源库，被誉为\"NLP 民工的乐园”。它并非单一的软件工具，而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。\n\n面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点，funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具，还独特地收录了丰富的垂直领域资源，如法律、医疗、金融行业的专用词库与数据集，甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性，从基础的字典词典到前沿的 BERT、GPT-2 模型代码，再到高质量的标注数据和竞赛方案，应有尽有。\n\n无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师，还是从事人工智能研究的学者，都能在这里找到急需的“武器弹药”。对于开发者而言，它能大幅减少寻找数据和复现模型的时间；对于研究者，它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神，极大地降低了中文自然语言处理的开发与研究成本，是中文 AI 社区不可或缺的宝藏仓库。",79857,"2026-04-08T20:11:31",[46,43,45],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":15},5773,"cs-video-courses","Developer-Y\u002Fcs-video-courses","cs-video-courses 是一个精心整理的计算机科学视频课程清单，旨在为自学者提供系统化的学习路径。它汇集了全球知名高校（如加州大学伯克利分校、新南威尔士大学等）的完整课程录像，涵盖从编程基础、数据结构与算法，到操作系统、分布式系统、数据库等核心领域，并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。\n\n面对网络上零散且质量参差不齐的教学资源，cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容，仅收录真正的大学层级课程，排除了碎片化的简短教程或商业广告，确保用户能接触到严谨的学术内容。\n\n这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员，以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽，不仅包含传统的软件工程与网络安全，还细分了生成式 AI、大语言模型、计算生物学等新兴学科，并直接链接至官方视频播放列表，让用户能一站式获取高质量的教育资源，免费享受世界顶尖大学的课堂体验。",79792,"2026-04-08T22:03:59",[45,25,43,26],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":80,"owner_twitter":79,"owner_website":79,"owner_url":81,"languages":82,"stars":99,"forks":100,"last_commit_at":101,"license":102,"difficulty_score":22,"env_os":103,"env_gpu":104,"env_ram":104,"env_deps":105,"category_tags":112,"github_topics":113,"view_count":22,"oss_zip_url":79,"oss_zip_packed_at":79,"status":15,"created_at":120,"updated_at":121,"faqs":122,"releases":152},8928,"limbonaut\u002Flimboai","limboai","LimboAI - Behavior Trees and State Machines for Godot 4","LimboAI 是一款专为 Godot Engine 4 设计的开源 C++ 插件，旨在帮助开发者高效构建复杂的游戏人工智能。它创造性地将“行为树”与“状态机”两种强大的逻辑架构结合在一起，让游戏角色（如 NPC 或敌人）的行为更加丰富、模块化且易于管理。\n\n在传统游戏开发中，编写复杂的 AI 逻辑往往会导致代码混乱、难以调试和维护。LimboAI 通过提供可视化的行为树编辑器、内置文档以及直观的视觉调试器，极大地降低了这一门槛。开发者无需深入 C++ 底层，即可完全使用 GDScript 自定义任务节点和状态，灵活实现从简单的巡逻到复杂的战术决策等各种行为逻辑。此外，项目还附带了详尽的演示场景和教程，帮助用户快速上手。\n\n这款工具非常适合 Godot 游戏开发者、技术美术以及希望提升游戏智能表现的设计师使用。无论你是独立开发者还是团队成员，LimboAI 都能让你以更清晰的结构掌控角色行为，将精力更多地投入到创意玩法的实现上，而非纠结于繁琐的代码逻辑。","\u003Cp align=\"center\">\n  \u003Cimg src=\"doc\u002Fimages\u002Flogo.svg\" width=\"400\" alt=\"LimboAI logo\">\n\u003C\u002Fp>\n\n# LimboAI - Behavior Trees & State Machines for Godot 4\n\n\u003C!--\n[![🔗 All builds](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml)\n-->\n[![🔎 Unit Tests](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Ftest_builds.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Ftest_builds.yml)\n[![Documentation Status](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_13d664e1afd7.png)](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest)\n[![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Flimbonaut\u002Flimboai)](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fblob\u002Fmaster\u002FLICENSE.md)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1185664967379267774?logo=discord&link=https%3A%2F%2Fdiscord.gg%2FN5MGC95GpP)](https:\u002F\u002Fdiscord.gg\u002FN5MGC95GpP)\n[![Mastodon Follow](https:\u002F\u002Fimg.shields.io\u002Fmastodon\u002Ffollow\u002F109346796150895359?domain=https%3A%2F%2Fmastodon.gamedev.place)](https:\u002F\u002Fmastodon.gamedev.place\u002F@limbo)\n\n>**Supported Godot Engine:**  **4.6**\n> *(see below for older versions)*\n\n\n**LimboAI** is an open-source C++ plugin for **Godot Engine 4** providing a combination of\n**Behavior Trees** and **State Machines**, which can be used together to create complex AI behaviors.\nIt comes with a behavior tree editor, built-in documentation, visual debugger, extensive demo project with a tutorial, and more!\nWhile it is implemented in C++, it fully supports GDScript for [creating your own tasks](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fcustom-tasks.html) and [states](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html).\n\nIf you enjoy using LimboAI, please **consider supporting** my efforts with a donation on Ko-fi 😊 Your contribution will help me continue developing and improving it.\n\n[![ko-fi](https:\u002F\u002Fko-fi.com\u002Fimg\u002Fgithubbutton_sm.svg)](https:\u002F\u002Fko-fi.com\u002FY8Y2TCNH0)\n\n![Textured screenshot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_36d5447a94bc.png)\n\nBehavior Trees are powerful hierarchical structures used to model and control the behavior of agents in a game (e.g., characters, enemies). They are designed to make it easier to create rich and highly modular behaviors for your games. To learn more about behavior trees, check out [Introduction to Behavior Trees](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fintroduction.html) and our demo project, which includes a tutorial.\n\n## Demonstration\n\n![Charger from Demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_70571df87772.gif)\n\n> [!NOTE]\n> **Demo project** lives in the `demo` folder, and is available separately in [**Releases**](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Freleases).\n> Run `demo\u002Fscenes\u002Fshowcase.tscn` to get started.\n> It also includes a tutorial that introduces behavior trees through illustrative examples.\n\n### Videos\n\n> YouTube videos produced by various creators\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=cGqO7SVKqkM\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_c032071c5cd0.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=E_FIy2dTkNc\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_ddd322c1419a.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=45DaBV9FgOQ\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_c93a600d31a3.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vZHzMO90IwQ\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_c5ffac3e3a66.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gAk3xl5fBsM\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_d953d68081c3.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=aP0Aacdxmno\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_9404fddabda1.jpg\" width=272>\u003C\u002Fa>\n\n## Supported Godot versions\n\n| Plugin Version           | GDExtension\u002FAssetLib   | Module    |\n|--------------------------|------------------------|-----------|\n| `1.7.x` releases         | Godot 4.6 or higher    | Godot 4.6 |\n| `1.6.x` releases         | Godot 4.4, 4.5, 4.6    | Godot 4.6 |\n| `1.5.x` releases         | Godot 4.4, 4.5         | Godot 4.5 |\n| `1.4.x` releases         | Godot 4.4, 4.5         | Godot 4.4 |\n| `1.2.0`-`1.3.x` releases | Godot 4.3              | Godot 4.3 |\n| `1.1.x` releases         | Godot 4.2              | Godot 4.2 |\n\n## Features\n\n- **Behavior Trees (BT):**\n    - Easily create, edit, and save `BehaviorTree` resources in the editor.\n    - Execute `BehaviorTree` resources using the `BTPlayer` node.\n    - Create complex behaviors by combining and nesting tasks in a hierarchy.\n    - Control execution flow using composite, decorator, and condition tasks.\n    - [Create custom tasks](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fcustom-tasks.html) by extending core classes: `BTAction`, `BTCondition`, `BTDecorator`, and `BTComposite`.\n    - Built-in class documentation.\n    - Blackboard system: Share data seamlessly between tasks using the `Blackboard`.\n      - Blackboard plans: Define variables in the BehaviorTree resource and override their values in the BTPlayer node.\n      - Plan editor: Manage variables, their data types and property hints.\n      - Blackboard scopes: Prevent name conflicts and enable advanced techniques like [sharing data between several agents](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fusing-blackboard.html#sharing-data-between-several-agents).\n      - Blackboard parameters: [Export a BB parameter](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fusing-blackboard.html#task-parameters), for which user can provide a value or bind it to a blackboard variable (can be used in custom tasks).\n      - Inspector support for specifying blackboard variables (custom editor for exported `StringName` properties ending with \"_var\").\n    - Use the `BTSubtree` task to execute a tree from a different resource file, promoting organization and reusability.\n    - Visual Debugger: Inspect the execution of any BT in a running scene to identify and troubleshoot issues.\n    - Visualize BT in-game using `BehaviorTreeView` node (for custom in-game tools).\n    - Monitor tree performance with custom performance monitors.\n\n- **Hierarchical State Machines (HSM):**\n    - Extend the `LimboState` class to implement state logic.\n    - `LimboHSM` node serves as a state machine that manages `LimboState` instances and transitions.\n    - `LimboHSM` is a state itself and can be nested within other `LimboHSM` instances.\n    - [Event-based](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html#events-and-transitions): Transitions are associated with events and are triggered by the state machine when the relevant event is dispatched, allowing for better decoupling of transitions from state logic.\n    - Combine state machines with behavior trees using `BTState` for advanced reactive AI.\n    - Delegation Option: Using the vanilla `LimboState`, [delegate the implementation](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html#single-file-state-machine-setup) to your callback functions, making it perfect for rapid prototyping and game jams.\n    - Note: State machine setup and initialization require code; there is no GUI editor.\n\n- **Tested:** Behavior tree tasks and HSM are covered by unit tests.\n\n- **GDExtension:** LimboAI can be [used as extension](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html#get-gdextension-version). Custom engine builds are not necessary.\n\n- **Demo + Tutorial:** Check out our extensive demo project, which includes an introduction to behavior trees using examples.\n\n## First steps\n\nFollow the [Getting started](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html) guide to learn how to get started with LimboAI and the demo project.\n\n## Getting LimboAI\n\nLimboAI can be used as either a C++ module or as a GDExtension shared library. GDExtension version is more convenient to use but somewhat limited in features. Whichever you choose to use, your project will stay compatible with both and you can switch from one to the other any time. See [Using GDExtension](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html#get-gdextension-version).\n\n### Precompiled builds\n\n- For the most recent builds, navigate to **Actions** → [**All Builds**](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml), select a build from the list, and scroll down until you find the **Artifacts** section.\n- For release builds, check [**Releases**](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Freleases).\n\n### Compiling from source\n\n- Download the Godot Engine source code and put this module source into the `modules\u002Flimboai` directory.\n- Consult the Godot Engine documentation for instructions on [how to build from source code](https:\u002F\u002Fdocs.godotengine.org\u002Fen\u002Fstable\u002Fengine_details\u002Fdevelopment\u002Fcompiling\u002Findex.html).\n- If you plan to export a game utilizing the LimboAI module, you'll also need to build export templates.\n- To execute unit tests, compile the engine with `tests=yes` and run it with `--test --tc=\"*[LimboAI]*\"`.\n\n#### For GDExtension\n\n- You'll need SCons build tool and a C++ compiler. See also [Compiling](https:\u002F\u002Fdocs.godotengine.org\u002Fen\u002Fstable\u002Fcontributing\u002Fdevelopment\u002Fcompiling\u002Findex.html).\n- Run `scons target=editor` to build the plugin library for your current platform.\n  - SCons will automatically clone the godot-cpp\u002F repository if it doesn't already exist in the `limboai\u002Fgodot-cpp` directory.\n  - By default, built targets are placed in the demo project: `demo\u002Faddons\u002Flimboai\u002Fbin\u002F`\n- Check `scons -h` for other options and targets.\n\n## Using the plugin\n\n- Online Documentation: [stable](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Findex.html), [latest](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002Findex.html)\n- [Getting started](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html)\n- [Introduction to Behavior Trees](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fintroduction.html)\n- [Creating custom tasks in GDScript](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fcustom-tasks.html)\n- [Sharing data using Blackboard](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fusing-blackboard.html)\n- [Accessing nodes in the scene tree](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Faccessing-nodes.html)\n- [State machines](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html)\n- [Using GDExtension](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html#get-gdextension-version)\n- [Using LimboAI with C#](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fc-sharp.html)\n- [Class reference](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fclasses\u002Ffeatured-classes.html)\n\n## Contributing\n\nContributions are welcome! Please open issues for bug reports, feature requests, or code changes.\nFor detailed guidelines on contributing to code or documentation, check out our [Contributing](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002Fgetting-started\u002Fcontributing.html) page.\n\nIf you have an idea for a behavior tree task or a feature that could be useful in a variety of projects, open an issue to discuss it.\n\n## Social\n\nNeed help? We have a Discord server: https:\u002F\u002Fdiscord.gg\u002FN5MGC95GpP\n\nI write about LimboAI development on Mastodon: https:\u002F\u002Fmastodon.gamedev.place\u002F@limbo.\n\n## License\n\nUse of this source code is governed by an MIT-style license that can be found in the LICENSE file or at https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\n\nLimboAI logo and demo project art assets are licensed under the Creative Commons Attribution 4.0 International license that can be found at https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002F\n","\u003Cp align=\"center\">\n  \u003Cimg src=\"doc\u002Fimages\u002Flogo.svg\" width=\"400\" alt=\"LimboAI标志\">\n\u003C\u002Fp>\n\n# LimboAI - 适用于 Godot 4 的行为树与状态机\n\n\u003C!--\n[![🔗 所有构建](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml)\n-->\n[![🔎 单元测试](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Ftest_builds.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Ftest_builds.yml)\n[![文档状态](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_13d664e1afd7.png)](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest)\n[![GitHub 许可证](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Flimbonaut\u002Flimboai)](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fblob\u002Fmaster\u002FLICENSE.md)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1185664967379267774?logo=discord&link=https%3A%2F%2Fdiscord.gg%2FN5MGC95GpP)](https:\u002F\u002Fdiscord.gg\u002FN5MGC95GpP)\n[![Mastodon 关注](https:\u002F\u002Fimg.shields.io\u002Fmastodon\u002Ffollow\u002F109346796150895359?domain=https%3A%2F%2Fmastodon.gamedev.place)](https:\u002F\u002Fmastodon.gamedev.place\u002F@limbo)\n\n>**支持的 Godot 引擎版本:**  **4.6**\n> *(较旧版本请见下方)*\n\n\n**LimboAI** 是一个开源的 C++ 插件，专为 **Godot 引擎 4** 设计，提供了 **行为树** 和 **状态机** 的组合，两者可以协同工作以创建复杂的 AI 行为。它自带行为树编辑器、内置文档、可视化调试器、包含教程的丰富示例项目等！尽管它是用 C++ 实现的，但它完全支持 GDScript，可用于 [创建自定义任务](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fcustom-tasks.html) 和 [状态](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html)。\n\n如果您喜欢使用 LimboAI，请考虑通过 Ko-fi 向我捐款以支持我的开发工作 😊 您的支持将帮助我继续改进和优化它。\n\n[![ko-fi](https:\u002F\u002Fko-fi.com\u002Fimg\u002Fgithubbutton_sm.svg)](https:\u002F\u002Fko-fi.com\u002FY8Y2TCNH0)\n\n![带纹理的截图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_36d5447a94bc.png)\n\n行为树是一种强大的层次化结构，用于建模和控制游戏中智能体（如角色、敌人）的行为。它们旨在让开发者更轻松地为游戏创建丰富且高度模块化的行为逻辑。要深入了解行为树，请参阅 [行为树简介](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fintroduction.html) 以及我们的示例项目，其中包含详细的教程。\n\n## 展示\n\n![示例中的充电者](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_70571df87772.gif)\n\n> [!注意]\n> **示例项目** 位于 `demo` 文件夹中，并在 [**发布页面**](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Freleases) 中单独提供。\n> 运行 `demo\u002Fscenes\u002Fshowcase.tscn` 即可开始体验。\n> 该项目还包含一个教程，通过生动的示例介绍行为树的概念。\n\n### 视频\n\n> 由不同创作者制作的 YouTube 视频\n\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=cGqO7SVKqkM\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_c032071c5cd0.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=E_FIy2dTkNc\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_ddd322c1419a.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=45DaBV9FgOQ\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_c93a600d31a3.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vZHzMO90IwQ\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_c5ffac3e3a66.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gAk3xl5fBsM\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_d953d68081c3.jpg\" width=272>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=aP0Aacdxmno\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_readme_9404fddabda1.jpg\" width=272>\u003C\u002Fa>\n\n## 支持的 Godot 版本\n\n| 插件版本           | GDExtension\u002FAssetLib   | 模块    |\n|--------------------------|------------------------|-----------|\n| `1.7.x` 版本         | Godot 4.6 或更高    | Godot 4.6 |\n| `1.6.x` 版本         | Godot 4.4、4.5、4.6    | Godot 4.6 |\n| `1.5.x` 版本         | Godot 4.4、4.5         | Godot 4.5 |\n| `1.4.x` 版本         | Godot 4.4、4.5         | Godot 4.4 |\n| `1.2.0`-`1.3.x` 版本 | Godot 4.3              | Godot 4.3 |\n| `1.1.x` 版本         | Godot 4.2              | Godot 4.2 |\n\n## 功能特性\n\n- **行为树（BT）：**\n  - 在编辑器中轻松创建、编辑和保存 `BehaviorTree` 资源。\n  - 使用 `BTPlayer` 节点执行 `BehaviorTree` 资源。\n  - 通过组合和嵌套任务构建复杂的层级行为。\n  - 利用复合、装饰器和条件任务控制执行流程。\n  - 通过扩展核心类 `BTAction`、`BTCondition`、`BTDecorator` 和 `BTComposite`，[创建自定义任务](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fcustom-tasks.html)。\n  - 内置类文档。\n  - 黑板系统：使用 `Blackboard` 在任务之间无缝共享数据。\n    - 黑板计划：在 `BehaviorTree` 资源中定义变量，并在 `BTPlayer` 节点中覆盖其值。\n    - 计划编辑器：管理变量、其数据类型和属性提示。\n    - 黑板作用域：防止名称冲突，并支持高级技术，例如 [在多个智能体之间共享数据](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fusing-blackboard.html#sharing-data-between-several-agents)。\n    - 黑板参数：[导出 BB 参数](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fusing-blackboard.html#task-parameters)，用户可以为其提供值，或将其绑定到黑板变量（可在自定义任务中使用）。\n    - 检查器支持指定黑板变量（为以 `_var` 结尾的导出 `StringName` 属性提供自定义编辑器）。\n  - 使用 `BTSubtree` 任务从其他资源文件中执行子树，从而提高组织性和可重用性。\n  - 可视化调试器：在运行场景中检查任意 BT 的执行情况，以便识别和排查问题。\n  - 使用 `BehaviorTreeView` 节点在游戏中可视化 BT（用于自定义游戏内工具）。\n  - 通过自定义性能监控器监测树的性能。\n\n- **层次状态机（HSM）：**\n  - 扩展 `LimboState` 类以实现状态逻辑。\n  - `LimboHSM` 节点作为状态机，管理 `LimboState` 实例及其转换。\n  - `LimboHSM` 本身也是一个状态，可以嵌套在其他 `LimboHSM` 实例中。\n  - [基于事件](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html#events-and-transitions)：转换与事件相关联，当相关事件被分发时由状态机触发，从而更好地解耦转换与状态逻辑。\n  - 使用 `BTState` 将状态机与行为树结合，实现高级反应式 AI。\n  - 委托选项：使用原生 `LimboState`，[将实现委托](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html#single-file-state-machine-setup)给您的回调函数，非常适合快速原型设计和游戏开发马拉松。\n  - 注意：状态机的设置和初始化需要编写代码；没有 GUI 编辑器。\n\n- **已测试：** 行为树任务和 HSM 均有单元测试覆盖。\n\n- **GDExtension：** LimboAI 可以作为 [扩展使用](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html#get-gdextension-version)。无需自定义引擎构建。\n\n- **示例 + 教程：** 请查看我们的大型示例项目，其中包含使用示例介绍行为树的内容。\n\n## 入门步骤\n\n请按照 [入门指南](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html) 学习如何开始使用 LimboAI 和示例项目。\n\n## 获取 LimboAI\n\nLimboAI 可以作为 C++ 模块或 GDExtension 共享库使用。GDExtension 版本使用起来更方便，但功能上有所限制。无论您选择哪种方式，您的项目都将同时兼容两者，并且可以随时切换。请参阅 [使用 GDExtension](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html#get-gdextension-version)。\n\n### 预编译版本\n\n- 对于最新版本，请前往 **Actions** → [**All Builds**](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml)，从列表中选择一个构建，然后向下滚动至 **Artifacts** 部分。\n- 对于发布版本，请查看 [**Releases**](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Freleases)。\n\n### 从源码编译\n\n- 下载 Godot 引擎源代码，并将本模块源代码放入 `modules\u002Flimboai` 目录。\n- 请参考 Godot 引擎文档，了解 [如何从源码编译](https:\u002F\u002Fdocs.godotengine.org\u002Fen\u002Fstable\u002Fengine_details\u002Fdevelopment\u002Fcompiling\u002Findex.html)。\n- 如果您计划导出使用 LimboAI 模块的游戏，还需要构建导出模板。\n- 要运行单元测试，需使用 `tests=yes` 编译引擎，并以 `--test --tc=\"*[LimboAI]*\"` 运行。\n\n#### 对于 GDExtension\n\n- 您需要 SCons 构建工具和 C++ 编译器。更多信息请参阅 [编译指南](https:\u002F\u002Fdocs.godotengine.org\u002Fen\u002Fstable\u002Fcontributing\u002Fdevelopment\u002Fcompiling\u002Findex.html)。\n- 运行 `scons target=editor` 以构建适用于您当前平台的插件库。\n  - 如果 `limboai\u002Fgodot-cpp` 目录中尚未存在 godot-cpp\u002F 仓库，SCons 会自动克隆该仓库。\n  - 默认情况下，构建的目标文件会放置在示例项目中：`demo\u002Faddons\u002Flimboai\u002Fbin\u002F`。\n- 请查阅 `scons -h` 以获取其他选项和目标。\n\n## 使用插件\n\n- 在线文档：[稳定版](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Findex.html)、[最新版](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002Findex.html)\n- [入门指南](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html)\n- [行为树简介](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fintroduction.html)\n- [在 GDScript 中创建自定义任务](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fcustom-tasks.html)\n- [使用黑板共享数据](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Fusing-blackboard.html)\n- [访问场景树中的节点](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fbehavior-trees\u002Faccessing-nodes.html)\n- [状态机](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fhierarchical-state-machines\u002Fcreate-hsm.html)\n- [使用 GDExtension](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fgetting-limboai.html#get-gdextension-version)\n- [使用 LimboAI 与 C#](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fgetting-started\u002Fc-sharp.html)\n- [类参考](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Fstable\u002Fclasses\u002Ffeatured-classes.html)\n\n## 贡献\n\n我们欢迎任何贡献！请针对 bug 报告、功能请求或代码更改提交问题。\n有关参与代码或文档贡献的详细指南，请参阅我们的 [贡献页面](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002Fgetting-started\u002Fcontributing.html)。\n\n如果您对行为树任务或可在多种项目中使用的功能有任何想法，请提交一个问题进行讨论。\n\n## 社交\n\n需要帮助吗？我们有一个 Discord 服务器：https:\u002F\u002Fdiscord.gg\u002FN5MGC95GpP\n\n我在 Mastodon 上分享 LimboAI 的开发进展：https:\u002F\u002Fmastodon.gamedev.place\u002F@limbo。\n\n## 许可证\n\n本源代码的使用受 MIT 许可证约束，该许可证可在 LICENSE 文件中找到，或访问 https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT 查阅。\n\nLimboAI 的 logo 和演示项目美术资源采用知识共享署名 4.0 国际许可协议授权，详情请参见 https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002F。","# LimboAI 快速上手指南\n\nLimboAI 是一款专为 Godot Engine 4 设计的开源 C++ 插件，集成了**行为树 (Behavior Trees)** 和 **分层状态机 (Hierarchical State Machines)**。它提供了可视化的行为树编辑器、内置文档、可视化调试器以及丰富的演示项目，支持使用 GDScript 编写自定义任务，是构建复杂游戏 AI 的强大工具。\n\n## 环境准备\n\n在开始之前，请确保满足以下要求：\n\n*   **Godot Engine 版本**：\n    *   推荐使用 **Godot 4.6**（对应插件 1.7.x 版本）。\n    *   若使用旧版本 Godot (4.2 - 4.5)，请参考 README 中的版本对照表选择对应的插件版本。\n*   **操作系统**：Windows, macOS, 或 Linux。\n*   **前置依赖（仅源码编译需要）**：\n    *   **SCons**：构建工具。\n    *   **C++ 编译器**：如 MSVC (Windows), Xcode Command Line Tools (macOS), 或 GCC\u002FClang (Linux)。\n    *   **Git**：用于克隆仓库。\n\n> **注意**：大多数用户推荐直接使用 **GDExtension** 预编译版本，无需安装 C++ 编译环境即可快速上手。\n\n## 安装步骤\n\n你可以通过下载预编译库或使用源码编译两种方式安装。\n\n### 方法一：使用预编译版本（推荐）\n\n这是最便捷的方式，适用于快速集成到现有项目中。\n\n1.  **下载插件**：\n    *   访问 [Releases 页面](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Freleases) 下载最新稳定版的压缩包。\n    *   或者访问 [Actions -> All Builds](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Factions\u002Fworkflows\u002Fall_builds.yml) 获取最新的开发构建版（点击最近的构建记录，向下滚动找到 **Artifacts** 下载）。\n2.  **解压文件**：\n    *   将下载的压缩包解压。\n    *   找到 `addons` 文件夹（通常包含 `limboai` 目录）。\n3.  **集成到项目**：\n    *   将整个 `addons` 文件夹复制到你 Godot 项目的根目录下。\n    *   最终路径结构应为：`你的项目\u002Faddons\u002Flimboai\u002F`。\n4.  **启用插件**：\n    *   打开 Godot 编辑器。\n    *   进入菜单 `项目 (Project)` -> `项目设置 (Project Settings)` -> `插件 (Plugins)`。\n    *   勾选 **LimboAI** 以启用它。\n\n### 方法二：源码编译 (GDExtension)\n\n如果你需要针对特定平台定制或贡献代码，可以选择此方式。\n\n1.  **克隆仓库**：\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai.git\n    cd limboai\n    ```\n2.  **执行编译**：\n    运行 SCons 命令编译当前平台的编辑器库：\n    ```bash\n    scons target=editor\n    ```\n    *   系统会自动克隆 `godot-cpp` 依赖（如果不存在）。\n    *   编译产物默认位于 `demo\u002Faddons\u002Flimboai\u002Fbin\u002F` 目录。\n3.  **部署**：\n    将生成的 `addons` 目录复制到你的 Godot 项目中，并在编辑器中启用插件（同方法一步骤 4）。\n\n## 基本使用\n\n以下是一个创建简单行为树的最简示例。\n\n### 1. 创建行为树资源\n\n1.  在 Godot 编辑器的文件系统面板中，右键点击任意文件夹。\n2.  选择 `新建资源 (New Resource)` -> 搜索并选择 `BehaviorTree`。\n3.  保存该资源，例如命名为 `enemy_ai.tres`。\n4.  双击打开该资源，将进入 **LimboAI 行为树编辑器**。\n\n### 2. 构建简单的树结构\n\n在编辑器中，通过右键菜单添加节点来构建逻辑。例如，创建一个“巡逻”逻辑：\n\n1.  添加一个 **Selector (选择器)** 作为根节点（默认已有）。\n2.  在 Selector 下添加一个 **Sequence (序列)** 节点。\n3.  在 Sequence 下添加两个 **Action (动作)** 节点：\n    *   第一个命名为 `MoveToPatrolPoint`。\n    *   第二个命名为 `Wait`。\n4.  *(可选)* 选中 Action 节点，在检查器中关联具体的 GDScript 脚本以实现逻辑（详见下文）。\n\n### 3. 在场景中运行行为树\n\n1.  在你的场景中添加一个角色节点（如 `CharacterBody2D` 或 `CharacterBody3D`）。\n2.  为该角色添加一个子节点：`BTPlayer`。\n3.  选中 `BTPlayer` 节点，在检查器中找到 `Behavior Tree` 属性。\n4.  将之前创建的 `enemy_ai.tres` 资源拖拽赋值给该属性。\n5.  运行场景，`BTPlayer` 将自动开始执行行为树逻辑。\n\n### 4. 编写自定义任务 (GDScript)\n\nLimboAI 允许你用 GDScript 轻松创建自定义行为。创建一个新脚本并继承 `BTAction`：\n\n```gdscript\nclass_name MoveToPatrolPoint\nextends BTAction\n\n@export var target_position: Vector2\n\nfunc _tick(_delta: float) -> int:\n    # 获取拥有该行为树的代理节点 (Agent)\n    var agent = get_agent()\n    \n    if agent.global_position.distance_to(target_position) \u003C 1.0:\n        return SUCCESS # 任务成功\n    \n    # 执行移动逻辑 (伪代码)\n    agent.move_toward(target_position, _delta)\n    \n    return RUNNING # 任务进行中，下一帧继续执行\n```\n\n*   **返回值说明**：\n    *   `SUCCESS`: 任务完成。\n    *   `FAILURE`: 任务失败。\n    *   `RUNNING`: 任务仍在执行中。\n\n### 5. 调试\n\n*   运行游戏时，点击编辑器底部的 **LimboAI Debugger** 标签页。\n*   你可以实时查看行为树的执行流程、当前激活的节点以及黑板 (Blackboard) 中的数据变量，方便排查逻辑问题。\n\n---\n*更多高级功能（如黑板数据共享、状态机组合、子树复用）请参阅官方文档或运行项目自带的 `demo\u002Fscenes\u002Fshowcase.tscn` 示例场景。*","某独立游戏团队正在开发一款 2D 潜行动作游戏，需要为关卡中的守卫敌人设计一套能根据玩家动态灵活切换“巡逻、警戒、追击、搜索”状态的复杂 AI。\n\n### 没有 limboai 时\n- **代码逻辑如蜘蛛网**：开发者被迫在 GDScript 中编写大量嵌套的 `if-else` 和状态标志位，导致代码难以阅读且极易产生逻辑漏洞。\n- **调试过程靠猜**：当敌人出现“卡在墙角无限循环”或“无视玩家”的 Bug 时，只能依靠打印日志盲目排查，无法直观看到当前执行到哪一步逻辑。\n- **策划与程序割裂**：调整行为逻辑（如修改警戒范围或追击时长）必须修改代码并重新编译，策划人员无法直接参与行为调优，迭代效率极低。\n- **状态切换僵硬**：难以优雅地处理中断逻辑（例如在巡逻中被突然打断去追击），往往需要手动重置大量变量，容易引发状态不同步。\n\n### 使用 limboai 后\n- **可视化编排逻辑**：利用内置的行为树编辑器，通过拖拽节点即可构建清晰的层级化 AI 逻辑，代码量减少 70%，结构一目了然。\n- **实时可视化调试**：借助运行时调试器，开发者能直接在编辑器中看到绿色高亮的当前执行路径，瞬间定位逻辑卡点，修复时间从小时级缩短至分钟级。\n- **热更调优行为**：设计师可直接在编辑器中调整节点参数（如视野角度、反应延迟）并实时在游戏中验证效果，无需程序员介入修改代码。\n- **优雅的状态管理**：结合分层状态机，轻松实现行为的平滑过渡与中断恢复，确保敌人在任何突发情况下都能做出符合预期的自然反应。\n\nlimboai 将原本晦涩难懂的 AI 代码转化为可视化的逻辑蓝图，让游戏角色的行为设计变得高效、透明且易于协作。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flimbonaut_limboai_36d5447a.png","limbonaut","Serhii Snitsaruk","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Flimbonaut_ea99e0f3.png","Creator of LimboAI - behavior trees & HSM for Godot. Contributing to Sentry for Godot. Working on an untitled underwater exploration game.\r\n",null,"limbonaut@pm.me","https:\u002F\u002Fgithub.com\u002Flimbonaut",[83,87,91,95],{"name":84,"color":85,"percentage":86},"C++","#f34b7d",97.1,{"name":88,"color":89,"percentage":90},"Python","#3572A5",1.7,{"name":92,"color":93,"percentage":94},"C","#555555",1.1,{"name":96,"color":97,"percentage":98},"Shell","#89e051",0.1,2659,120,"2026-04-17T06:46:45","MIT","Windows, macOS, Linux","未说明",{"notes":106,"python":107,"dependencies":108},"该工具是 Godot 引擎的 C++ 插件，支持作为 GDExtension 或引擎模块使用。若使用预编译版本无需安装额外依赖；若需从源码编译，需要 SCons 构建工具和 C++ 编译器。不支持 Python 环境运行。","不需要",[109,110,111],"Godot Engine 4.2-4.6","SCons (编译时)","C++ 编译器 (编译时)",[45,14],[114,115,116,117,118,119],"behavior-tree","godot-engine","game-developement","state-machines","artificial-intelligence","godot4","2026-03-27T02:49:30.150509","2026-04-18T14:33:29.469080",[123,128,133,138,143,148],{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},40043,"在 Linux 上运行时提示缺少 .so 文件怎么办？","维护者已更改构建过程以兼容旧版本的 libc++。请尝试重新构建或下载最新的预编译版本，未来的构建版本将解决此兼容性问题。","https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fissues\u002F119",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},40044,"为什么 SubTree 的变量映射无法将变量传递给子树，并报错“无法链接到不存在的目标”？","出于性能考虑，变量映射是通过引用传递的（两个变量共享同一状态），因此目标变量必须在行为树生命周期开始时就已经存在。由于子树与主树同时实例化，如果变量尚未创建则无法链接。\n解决方案：\n1. 确保被映射的变量在黑板计划（Blackboard Plan）中预先定义。\n2. 或者，忽略设计时的映射功能，在运行时使用代码手动链接变量：`Blackboard.link_var(...)`。","https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fissues\u002F273",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},40045,"在编辑器中为 `BTCallMethod` 添加参数时导致编辑器崩溃，如何解决？","该崩溃通常由 Godot 引擎特定版本的初始化顺序变更引起（对象指针在通知触发前未设置）。\n临时解决方法：避免在编辑器中直接通过 UI 动态增加参数数组大小。\n根本修复：需要更新 LimboAI 插件版本，维护者已确认需延迟属性编辑器的初始化代码（从 `THEME_CHANGED` 移至 `update_property` 或延迟执行）以适配新版 Godot。","https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fissues\u002F40",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},40046,"场景销毁时调用 `LimboState._exit()` 出现无效访问错误（Invalid access error）怎么办？","这是因为 `_exit()` 在节点退出树之后被调用，导致引用的节点（如 AnimationPlayer）已失效。\n解决方案：\n1. 升级 LimboAI 至包含修复的版本（参考 PR #242）。\n2. 在代码逻辑中，尽量使用 `queue_free()` 代替 `free()`，以便更平滑地处理生命周期。\n3. 在 `_exit()` 中添加空值检查，确保引用的节点有效后再进行操作。","https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fissues\u002F222",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},40047,"在 macOS 上使用 LimboAI 时遇到随机崩溃（Signal 11），特别是在点击标签或保存时，如何处理？","此类崩溃通常与 Godot 引擎版本或 GDExtension 的内存管理有关。\n建议步骤：\n1. 确保使用的是最新稳定版的 Godot 引擎和 LimboAI 插件。\n2. 尝试切换到模块（Module）版本而非 GDExtension 版本，模块版本通常更稳定。\n3. 如果问题持续，请提供完整的后台追踪日志（Backtrace）给开发者，特别是涉及 `liblimboai` 的部分。","https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fissues\u002F253",{"id":149,"question_zh":150,"answer_zh":151,"source_url":132},40048,"Blackboard（黑板）是否了解 BlackboardPlan（黑板计划）的结构？","不了解。`Blackboard` 在设计上就像一个字典（Dictionary），它只存储键值对数据，并不感知 `BlackboardPlan` 中定义的变量结构或元数据。变量映射和类型检查主要在设计时或通过特定方法处理，运行时黑板仅负责数据存储。",[153,158,163,168,173,178,183,188,193,198,203,208,213,218,223,228,233,238,243,248],{"id":154,"version":155,"summary_zh":156,"released_at":157},323551,"v1.7.0","## 喜讯，各位！🎉  \n最新版本已发布，重点针对 Godot 4.6 进行了 UI 改进。请注意，该版本与之前的 Godot 版本不兼容。此外，还新增了运行时黑板检查功能，快来体验吧！  \n\n## 变更内容  \n⭐ - 重点改进  \n* 编辑器：使用 FoldableContainer 重构 TaskPalette，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F422 中实现  \n* 编辑器：将任务收藏夹移至 TaskPalette 作为独立区域，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F423 中完成  \n* 编辑器：移除经典布局，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F424 中实现  \n* 编辑器：在 TaskPalette 中采用扁平化按钮，并应用编辑器 Modern 风格，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F425 中完成  \n* 编辑器：在 GDExtension 中不再显示任务工具提示，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F426 中修复  \n* 编辑器：修复模块代码中悬停任务按钮时帮助工具提示中的重复文本问题，由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F430 中解决  \n* 编辑器：修复 BehaviorTreeView 中状态高亮之间的间隙问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F432 中完成  \n* 编辑器：修复 ProbabilitySelector 相关的编辑器问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F433 中解决  \n* 编辑器：修正“更改类型”弹出窗口的定位及打开时的焦点过滤问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F434 中修复  \n* ⭐ HSM：允许 LimboState 在转换中访问分派事件载荷，由 @Metsker 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F435 中实现  \n* BTCallMethod：修复 argptrs 中可能出现的悬空指针问题，由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F436 中解决  \n* 黑板：防止自我引用为父节点，由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F437 中修复  \n* 编辑器：修复当外部编辑器已设置时，双击任务切换到脚本标签的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F438 中解决  \n* 编辑器：为计划编辑器添加缺失的属性提示，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F439 中完成  \n* 编辑器：修复 macOS 上使用 Ctrl 而非 Cmd 的键盘快捷键问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F440 中修复  \n* 测试：新增 BTPlayer 黑板计划测试，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F442 中完成  \n* BTTask：修复 clone() 方法未深度复制属性的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F441 中解决  \n* 编辑器：修复任务复制后检查器未更新的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F446 中修复  \n* ⭐ 调试器：支持黑板运行时检查，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F447 中实现  \n\n## 新贡献者  \n* @Metsker 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F435 中完成了首次贡献  \n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.6.0...v1.7.0","2026-03-01T11:27:26",{"id":159,"version":160,"summary_zh":161,"released_at":162},323552,"v1.6.0","本次发布新增对 Godot 4.6 的支持。此前的 LimboAI 版本与 Godot 4.6 存在兼容性问题，请将您的插件更新至 1.6.0 版本。\n\n## 变更内容\n* 支持 Godot 4.6，由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F360 中实现\n* GHA：为 Godot 4.6 更新 CI 及依赖项，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F412 中完成\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.5.3...v1.6.0","2026-01-28T18:38:51",{"id":164,"version":165,"summary_zh":166,"released_at":167},323553,"v1.5.3","## 变更内容\n* 文档：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F398 中修复了“贡献”页面中的 broken links\n* HSM：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F400 中修复了状态未更新的问题，并简化了处理逻辑\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.5.2...v1.5.3","2025-12-21T11:52:24",{"id":169,"version":170,"summary_zh":171,"released_at":172},323554,"v1.5.2","👾 修复最近在 HSM 代码中发现的、由 1.5 版本引入的回归问题（见下文）。\n\n## 变更内容\n* 文档：由 @bennbollay 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F377 中添加的 BTSubTree 动态子树示例。\n* HSM：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F385 中修复的嵌套 HSM 中每帧多次调用 state update() 的问题。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.5.1...v1.5.2","2025-11-08T22:37:30",{"id":174,"version":175,"summary_zh":176,"released_at":177},323555,"v1.5.1","👾 修复了项目导出时丢失的黑板映射问题。要使此修复生效，请确保重新生成 Godot 缓存：运行 `项目 -> 工具 -> 升级项目文件...`。\r\n➕ 此外，模块构建版本已更新至 `4.5.1-stable`。\n\n## 变更内容\n* BlackboardPlan：通过 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F375 中的提交，防止在作用域提供者不可用时（尤其是在导出时）丢失映射。\n* 文档：由 @bennbollay 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F376 中添加了 BTState 的使用场景。\n\n## 新贡献者\n* @bennbollay 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F376 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.5.0...v1.5.1","2025-10-15T19:42:57",{"id":179,"version":180,"summary_zh":181,"released_at":182},323556,"v1.5.0","## 大家好，好消息！🎉  \nLimboAI 1.5.0 新版本现已发布！此次更新带来了多项修复和改进，并且在 @Rubonnek 的移植努力下，新增了对 Godot 4.5 的支持。同时，GDExtension\u002FAssetLib 版本仍然兼容 Godot 4.4。干杯！  \n\n## 变更内容\n* HSM：由 @Muller-Castro 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F315 中实现，使 EVENT_FINISHED 变为唯一值。\n* HSM：由 @Muller-Castro 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F316 中添加 LimboState::restart() 方法。\n* HSM：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F325 中修复了状态机启动时输入方法未正确禁用的问题。\n* HSM：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F330 中修复了节点进程切换逻辑。\n* 文档：由 @speratus 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F334 中添加注释，说明如何构建 C# 类。\n* HSM：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F337 中增加了更多 HSM 测试用例。\n* 仓库：由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F346 中添加了对代码覆盖率文件的忽略规则。\n* BT：由 @DSteve595 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F349 中实现了当根任务被禁用时，实例化行为树会返回失败的任务。\n* ⭐ 文档：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F355 中解释了变量映射机制。\n* 移植：由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F357 中修复了 editor_scale.h 头文件中已弃用的文件名问题。\n* 移植：由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F311 中实现了作为模块对 Godot 4.5 的支持。\n* 移植：由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F358 中实现了作为 GDExtension 对 Godot 4.5 的支持。\n* 文档：由 @Nikitf777 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F362 中更新了 README.md 中关于从源码构建指南的链接。\n* BTPlayer：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F359 中将行为树初始化延迟到场景根节点激活且本地化之后。\n* 移植：由 @hayahane 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F364 中修复了 GDExtension 版本中 4.5 的 `add_property_info()` 警告。\n* 编辑器：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F366 中修复了点击横幅中的“创建”按钮时发生的崩溃问题。\n* HSM：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F367 中确保并修复了在 update 函数内部的延迟状态转换。\n* BT：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F370 中为 BehaviorTreeData::create_from_bt_instance 添加了空值检查。\n* ⭐ 编辑器：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F371 中为黑板规划编辑器添加了选择、复制、粘贴和删除功能。\n\n## CI\n* GHA：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F318 中构建 Linux arm64 库。\n* GHA：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F326 中更新并修复了 CI 配置。\n* GHA：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F327 中修复了 iOS Vulkan SDK 步骤。\n* GHA：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F332 中构建了适用于 Web GDExtension 的无线程版本。\n* GHA：将测试构建中 Godot 的版本分别固定为模块版的 4.5 和扩展版的 4.4。","2025-10-05T08:44:02",{"id":184,"version":185,"summary_zh":186,"released_at":187},323557,"v1.4.1","## 变更内容\n* 修复了在项目导出时 `BlackboardPlan` 映射被清空的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F308 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.4.0...v1.4.1","2025-03-15T16:03:36",{"id":189,"version":190,"summary_zh":191,"released_at":192},323558,"v1.4.0","## 喜讯，各位！🎉  \nLimboAI 的新版本现已发布，并与 Godot 4.4 同步上线！本次更新带来了多项实用的体验优化，尤其是备受期待的 GDExtension 变体类型 BBParam 检查器编辑器。一如既往，请查看 PR 链接以获取更多详情。尽情享受吧！\n\n## 变更内容\n⭐ - 重点亮点\n\n* GHA：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F284 中实现，支持在编辑器中构建包含编辑器功能的 Android 库。\n* GHA：由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F285 中实现，支持在编辑器中构建包含编辑器功能的 iOS 和 Web 库。\n* ⭐ 支持 Godot 4.4，由 @Rubonnek 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F223 中完成。\n* ⭐ 编辑器：GDExtension 的 BBParam 检查器编辑器，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F287 中实现。\n* 杂项：更新 in_range.gd 脚本，由 @eltociear 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F289 中完成。\n* 在 HSM 中切换未处理输入的处理状态，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F290 中实现。\n* ⭐ 编辑器：在 BT 编辑器中启用\u002F禁用分支，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F291 中实现。\n* 编辑器：使编辑器操作支持多选，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F300 中实现。\n* GHA：修复与 Godot 4.4 兼容时的构建工作流问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F302 中完成。\n* 重构兼容性代码并进行一些小修复，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F304 中完成。\n\n## 新贡献者\n* @eltociear 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F289 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.3.1...v1.4.0","2025-03-05T00:04:23",{"id":194,"version":195,"summary_zh":196,"released_at":197},323559,"v1.3.1","## 变更内容\n* 修复 BTPlayer.set_behavior_tree() 方法未填充黑板的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F274 中完成\n* 修复 BTPlayer.set_bt_instance() 方法未将 `BTInstance` 注册到调试器的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F275 中完成\n* 在编辑器中点击子树资源时可直接跳转，由 @DSteve595 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F276 中完成\n* 文档：提及预构建模板，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F280 中完成\n* 修复 UI 横幅重复显示的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F279 中完成\n\n## 新贡献者\n* @DSteve595 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F276 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.3.0...v1.3.1","2025-02-03T06:55:07",{"id":199,"version":200,"summary_zh":201,"released_at":202},323560,"v1.3.0","## 大家好，好消息！🎉\n\nLimboAI 新版本发布啦——隆重推出全新 1.3.0 版本！本次更新包含大量修复和改进，这可能是 Godot 4.3 系列中的最后一个版本。时间会证明一切 :wink: \n\n我挑选了一些最值得关注的改动——和往常一样，点击链接可了解更多详情。干杯！\n\n## 变更内容\n\n⭐ - 重点说明\n\n* ⭐ 由 @ydeltastar 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F210 中实现任务多选与拖放功能\n* 修复 `BTForEach` 在迭代过程中数组元素被移除时导致的崩溃，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F211 中完成\n* 修复使用 GDExtension 时，`BBNode::get_value()` 在对象已被释放的情况下引发的崩溃，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F212 中解决\n* 修复 `BTSetAgentProperty` 的名称生成问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F213 中完成\n* 修复循环变量被用作副本的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F214 中解决\n* GHA：新增创建 GDExtension 调试版本的选项，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F216 中添加\n* 直接在 BehaviorTree 的 BlackboardPlan 中预加载节点，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F215 中实现\n* 修复 Misc->Layout 中的重复条目，由 @monxa 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F219 中完成\n* 记住上一次会话中加载的 `BehaviorTree`，由 @ydeltastar 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F225 中实现\n* 修复 LimboHSM 在退出时出现的非法访问错误，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F226 中解决\n* 修复并更新文档，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F230 中完成\n* GHA：修复 Vulkan SDK 安装步骤，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F233 中完成\n* ⭐ 由 @monxa 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F229 中实现带有高亮和过滤功能的树形搜索\n* GHA：为 PR 和提交添加代码风格检查，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F234 中完成\n* 文档：澄清 `Blackboard.get_var()` 和 `set_var()` 的用法，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F235 中完善\n* ⭐ GHA：构建 iOS GDExtension 库，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F163 中实现\n* GHA：修复 iOS 上的 Vulkan SDK 问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F237 中完成\n* 修复 `BTTask::clone()` 中类型化数组内 `BBParam` 实例重复的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F239 中解决\n* 在 BTTask 中同时调用原生和脚本的 `_setup\u002F_enter\u002F_exit` 方法，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F227 中完成\n* ⭐ `LimboHSM`：支持为每个转换指定守卫函数，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F241 中实现\n* 修复重新父级化代理会导致其状态机中断的问题，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F242 中解决\n* 改善与场景绑定的内置 BT 的保存功能，由 @limbonaut 在 https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F243 中完成\n* 改进内置 BT 资源的工作流程，由 @limbonaut 在 ht","2025-01-21T12:33:53",{"id":204,"version":205,"summary_zh":206,"released_at":207},323561,"v1.2.2","## What's Changed\r\n\r\na5c318b Update class docs\r\n65a1a3d, 5766922 Fix prefetching failing for nodes set directly in BehaviorTree's BlackboardPlan resource\r\n5ac6cda Fix `BTSetAgentProperty` name generation\r\nfd1ac1c Fix `BBNode::get_value()` crash with a freed object in GDExtension\r\n644c589 Fix BTForEach crash if elements are removed from the array during iteration\r\n1cb8580 Fix mem leaks in the demo\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.2.1...v1.2.2","2024-09-16T10:16:46",{"id":209,"version":210,"summary_zh":211,"released_at":212},323562,"v1.2.1","## What's Changed\r\n* Fix custom scene root is not used in BTPlayer and BTState by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F202\r\n* Fix editor setting initialization for GDExtensions by @monxa in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F204\r\n* Generalize EDITOR_DEF macro to fix potential editor setting issues by @monxa in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F205\r\n* Override _to_string() to give useful info about objects in GDExtension by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F206\r\n\r\n## New Contributors\r\n* @monxa made their first contribution in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F204\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.2.0...v1.2.1","2024-09-05T15:12:17",{"id":214,"version":215,"summary_zh":216,"released_at":217},323563,"v1.2.0","## Good News, Everyone! 🎉\r\n\r\nLimboAI version 1.2.0 is out! This release focuses on the shiny new Godot Engine 4.3 and also brings a bunch of improvements and fixes. Due to the use of a newer API, it is no longer compatible with Godot 4.2. \r\nWhile there are some breaking changes, most projects should remain unaffected. You can check the details in the linked ⚡PR below.\r\n\r\n## What's Changed\r\n\r\n⭐ - highlights\r\n⚡ - breaking changes, follow PR link for details\r\n\r\n* GHA: Build Android platform libs in GDExtension workflow by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F147\r\n* ⭐ Add support for Godot 4.3 by @Rubonnek in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F64\r\n* Register and call virtual methods on scripts in GDExtension by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F149\r\n* Fix: GDExtension load fails due to `Expression` used without `Ref\u003C>` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F150\r\n* ⭐ Generate built-in documentation header in GDExtension variant by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F151\r\n* GHA improvements by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F154\r\n* Replace deprecated set_auto_translate call with set_auto_translate_mode by @dpalais in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F155\r\n* ⭐ Improved layout for large displays (optional) by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F157\r\n* Fix BlackboardPlan arrays shouldn't be shared between instanced agents by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F158\r\n* Improve documentation tooltips by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F159\r\n* Fix new task script path don't update after changing the setting by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F161\r\n* Fix error when opening scene with a `BTPlayer` by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F162\r\n* ⭐ HSM improvements by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F164\r\n* Fix BTPlayer.restart() crash by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F172\r\n* GHA: Fix iOS builds by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F173\r\n* GHA: Add Linux & Windows ARM64 builds by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F174\r\n* LimboHSM: Fix process_input is not enabled in active substate by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F176\r\n* Hide `update_mode` property for non-root HSMs by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F177\r\n* Fix error if `changed` signal is already connected in several tasks by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F180\r\n* ⚡ **Breaking:** Implement `BTInstance` - runtime instance of `BehaviorTree` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F181\r\n* Allow monitoring BT performance in `BTState` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F182\r\n* ⭐ BTPlayer: Allow switching BT instance at runtime by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F183\r\n* Allow supplying custom scene root for behavior tree instantiation by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F184\r\n* Editor setting to prefer online docs, and open builtin docs by default by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F185\r\n* ⭐ Edit task script on double-click (open help for core task) by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F186\r\n* Fix C# exports print errors due to missing ClassDB binding by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F188\r\n* Make player filter in the debugger case-insensitive by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F189\r\n* Improved dev setup for GDExtension by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F190\r\n* Fix renaming `BehaviorTree` files doesn't update tab names by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F191\r\n* Fix `monitor_performance` screwing C# exports by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F193\r\n* BlackboardPlan: Fix mapping failing for NodePath variables with prefetch enabled by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F195\r\n* GHA: Preserve nuget version for C# builds by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F197\r\n* Don't overwrite exisiting blackboard variables in `BTState` upon initialization by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F198\r\n* GHA: .NET build workflow fixes by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F199\r\n* GHA: Build additional .NET templates - Android & iOS by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F200\r\n* Fix editor undo polluting scene history if `BehaviorTree` is not saved to a file by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F201\r\n\r\n## New Contributors\r\n* @ydeltastar made their first contribution in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F161\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.1.0...v1.2.0","2024-08-22T14:45:54",{"id":219,"version":220,"summary_zh":221,"released_at":222},323564,"v1.2-rc","Hey, folks! Are you excited about shiny new Godot goodies? This pre-release is focused on Godot 4.3, and it's not compatible with 4.2.\r\nI believe it is quite stable. But if you come upon some bugs, don't forget to report them! Thanks.\r\n\r\n## What's Changed\r\n\r\n⭐ - highlights\r\n⚡ - breaking changes, follow PR link for details\r\n\r\n* GHA: Build Android platform libs in GDExtension workflow by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F147\r\n* ⭐ Add support for Godot 4.3 by @Rubonnek in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F64\r\n* Register and call virtual methods on scripts in GDExtension by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F149\r\n* Fix: GDExtension load fails due to `Expression` used without `Ref\u003C>` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F150\r\n* ⭐ Generate built-in documentation header in GDExtension variant by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F151\r\n* GHA improvements by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F154\r\n* Replace deprecated set_auto_translate call with set_auto_translate_mode by @dpalais in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F155\r\n* ⭐ Improved layout for large displays (optional) by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F157\r\n* Fix BlackboardPlan arrays shouldn't be shared between instanced agents by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F158\r\n* Improve documentation tooltips by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F159\r\n* Fix new task script path don't update after changing the setting by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F161\r\n* Fix error when opening scene with a `BTPlayer` by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F162\r\n* ⭐ HSM improvements by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F164\r\n* Fix BTPlayer.restart() crash by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F172\r\n* GHA: Fix iOS builds by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F173\r\n* GHA: Add Linux & Windows ARM64 builds by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F174\r\n* LimboHSM: Fix process_input is not enabled in active substate by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F176\r\n* Hide `update_mode` property for non-root HSMs by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F177\r\n* Fix error if `changed` signal is already connected in several tasks by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F180\r\n* ⚡ **Breaking:** Implement `BTInstance` - runtime instance of `BehaviorTree` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F181\r\n* Allow monitoring BT performance in `BTState` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F182\r\n* ⭐ BTPlayer: Allow switching BT instance at runtime by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F183\r\n* Allow supplying custom scene root for behavior tree instantiation by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F184\r\n* Editor setting to prefer online docs, and open builtin docs by default by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F185\r\n* ⭐ Edit task script on double-click (open help for core task) by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F186\r\n* Fix C# exports print errors due to missing ClassDB binding by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F188\r\n* Make player filter in the debugger case-insensitive by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F189\r\n* Improved dev setup for GDExtension by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F190\r\n* Fix renaming `BehaviorTree` files doesn't update tab names by @ydeltastar in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F191\r\n* Fix `monitor_performance` screwing C# exports by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F193\r\n* BlackboardPlan: Fix mapping failing for NodePath variables with prefetch enabled by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F195\r\n* GHA: Preserve nuget version for C# builds by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F197\r\n\r\n## New Contributors\r\n* @ydeltastar made their first contribution in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F161\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.1.0...v1.2-rc","2024-08-15T17:07:28",{"id":224,"version":225,"summary_zh":226,"released_at":227},323565,"v1.1.1","Work on release for Godot 4.3 continues. In the meantime, I cherry-picked some bug fixes for this patch release, plus it comes with Android GDExtension libs.\r\n\r\n## What's Changed\r\n* GHA: Build Android platform libs in GDExtension workflow by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F147\r\n* Fix potential rare var name conflict in BTCooldown\r\n* Fix connected signal error when loading BT for the second time\r\n* Fix BlackboardPlan arrays shouldn't be shared between instanced agents\r\n* Defer banner actions to not crash upon restart\r\n* Fix new task script path don't update after changing the setting (thanks @ydeltastar)\r\n* Fix BTPlayer.restart() crash\r\n* Fix process_input is not enabled in active substate\r\n* Fix error if `changed` signal is already connected to a BBParam in a bunch of tasks\r\n* Fix C# exports print errors due to missing ClassDB binding\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.1.0...v1.1.1","2024-08-07T08:40:41",{"id":229,"version":230,"summary_zh":231,"released_at":232},323566,"v1.1.0","## Good News, Everyone! 🎉\r\n\r\nLimboAI version 1.1.0 is out now, bringing new quality-of-life improvements and various bug fixes. As usual, this release targets the latest stable Godot version (4.2.2 currently). \r\nDon't miss out on the new [mapping feature](https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F106)!\r\n\r\n## What's Changed\r\n\r\n⭐ - highlights\r\n⚡ - breaking changes, follow PR link for details\r\n\r\n* Blackboard: Add `create` parameter to `bind_var_to_property` and `link_var` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F89\r\n* BTDecorator: Add default `_tick` implementation by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F95\r\n* Add tests for nested HSM flow, tests for dispatch() and get_root(), and fix BBParam saved_value initializing to null by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F101\r\n* Add note about how to run demo\u002Ftutorial by @TranquilMarmot in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F100\r\n* Add pre-commit configuration by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F103\r\n* ⭐ ⚡ **Breaking**: Allow specifying agent in `BTPlayer` node via inspector by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F102\r\n* GHA: Use older toolchain for SteamDeck compatibility by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F107\r\n* ⭐ Mapping variables by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F106\r\n* Editor: Check if variable is of correct type for BBParam subtypes by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F110\r\n* GHA: Generate .import files for GDExtension icons by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F116\r\n* GHA: Use godotengine buildroot mirror by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F117\r\n* Doc: Add first steps by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F118\r\n* ⭐ Implement tab navigation in the editor by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F120\r\n* Fix compile-time errors with updated godot-cpp by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F123\r\n* Editor: Add tab context menu option \"Jump to Owner\" by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F122\r\n* Show version info in the editor by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F124\r\n* API: Add Blackboard methods to enable iteration, state inspection & serialization by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F125\r\n* Add unit tests for `Blackboard` and fix `Blackboard.unbind_var()` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F127\r\n* Fix custom task issues - a rare crash & a sticky name\u002Fscript issue, and improve error handling by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F130\r\n* Fix reparenting an agent deactivates its HSM by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F131\r\n* Fix crash when freeing agent with performance monitoring enabled by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F133\r\n* Fix folding\u002Funfolding selected composite task is not working by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F136\r\n* Fix task tree warnings column always taking up space by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F142\r\n* Support light themes for editor icons in GDExtension by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F145\r\n\r\n## New Contributors\r\n* @TranquilMarmot made their first contribution in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F100\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.0.2...v1.1.0","2024-06-18T14:08:15",{"id":234,"version":235,"summary_zh":236,"released_at":237},323567,"v1.1-rc","## What's Changed\r\n\r\n⚡ - compatibility breaking, follow PR link for details.\r\n\r\n* Blackboard: Add `create` parameter to `bind_var_to_property` and `link_var` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F89\r\n* BTDecorator: Add default `_tick` implementation by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F95\r\n* Add tests for nested HSM flow, tests for dispatch() and get_root(), and fix BBParam saved_value initializing to null by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F101\r\n* Add note about how to run demo\u002Ftutorial by @TranquilMarmot in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F100\r\n* Add pre-commit configuration by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F103\r\n* ⚡ **Breaking**: Allow specifying agent in `BTPlayer` node via inspector by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F102\r\n* GHA: Use older toolchain for SteamDeck compatibility by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F107\r\n* Mapping variables by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F106\r\n* Editor: Check if variable is of correct type for BBParam subtypes by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F110\r\n* GHA: Generate .import files for GDExtension icons by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F116\r\n* GHA: Use godotengine buildroot mirror by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F117\r\n* Doc: Add first steps by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F118\r\n* Implement tab navigation in the editor by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F120\r\n* Fix compile-time errors with updated godot-cpp by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F123\r\n* Editor: Add tab context menu option \"Jump to Owner\" by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F122\r\n* Show version info in the editor by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F124\r\n* API: Add Blackboard methods to enable iteration, state inspection & serialization by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F125\r\n* Add unit tests for `Blackboard` and fix `Blackboard.unbind_var()` by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F127\r\n* Fix custom task issues - a rare crash & a sticky name\u002Fscript issue, and improve error handling by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F130\r\n* Fix reparenting an agent deactivates its HSM by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F131\r\n\r\n## New Contributors\r\n* @TranquilMarmot made their first contribution in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F100\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.0.2...v1.1-rc","2024-06-04T07:02:13",{"id":239,"version":240,"summary_zh":241,"released_at":242},323568,"v1.0.2","## What's Changed\r\n* GHA: Provide version.txt with GDExtension builds & demo project by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F87\r\n* GHA: Build .NET binaries for macOS by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F88\r\n* HSM: Delay state transition till update is finished by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F91\r\n* Support multiple debugger sessions by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F92\r\n* Fix `LimboState::get_root` and `dispatch` freeze the process in case of nested HSMs by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F93\r\n* Documentation update - BTSubTree by @onze in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F96\r\n\r\n## New Contributors\r\n* @onze made their first contribution in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F96\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.0.1...v1.0.2\r\n\r\n## Update (May 27)\r\nBuilds were updated using a different toolchain to support Steam Deck and older Linux distributions. All the packages were updated to the new build.","2024-04-23T10:29:08",{"id":244,"version":245,"summary_zh":246,"released_at":247},323569,"v1.0.1","## What's Changed\r\n* Fix blackboard plan issues by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F82\r\n* BTSubtree: Fix subtree blackboard plan is not property utilized by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F84\r\n* `BlackboardPlan` fixes by @limbonaut in https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fpull\u002F85\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flimbonaut\u002Flimboai\u002Fcompare\u002Fv1.0...v1.0.1","2024-04-03T14:26:16",{"id":249,"version":250,"summary_zh":251,"released_at":252},323570,"v1.0","## Good News, Everyone! 🎉\r\n\r\nLimboAI version 1.0 is finally here after months of intensive coding and refining! 🧠🔧\r\nNow with GDExtension support, a new powerful blackboard system, improved editor, awesome demo project, and much more! 🥳\r\n\r\n## What's Changed\r\n\r\n- **GDExtension support!**\r\n  - See [Using GDExtension](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002Fgetting-started\u002Fgdextension.html).\r\n  - GDExtension builds are also available in GitHub Actions.\r\n- **Revised Blackboard system**\r\n  - **Breaking compatibility**: BTPlayer's `blackboard_data` is replaced with new `BlackboardPlan` system (see below).\r\n    - If you have blackboard data defined in BTPlayer or LimboState nodes, you need to redefine it using the new system.\r\n  - **New workflow**: Define variables in the `BehaviorTree` resource and override those variables in the `BTPlayer` node.\r\n    - Variables that begin with \"_\" are considered private and can't be overridden (they are hidden).\r\n    - See [Sharing data using Blackboard](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest\u002Fgetting-started\u002Fusing-blackboard.html).\r\n  - **BlackboardPlan resource**: Stores and manages a collection of variables, and is used to construct new `Blackboard` instances.\r\n    - Define blackboard variables in a `BehaviorTree` resource, using its `BlackboardPlan` property.\r\n    - `BTPlayer` also has its own `BlackboardPlan` which extends the behavior tree `BlackboardPlan` resource, i.e. variables from the `BehaviorTree` resource are overridden in the `BTPlayer` node.\r\n  - **BlackboardPlan editor**\r\n    - Accessed with \"Manage...\" button in the inspector.\r\n    - Rename, reposition, and change types and hints of the blackboard variables.\r\n    - Specify relevant export hints for the variables.\r\n    - Edit default variable values directly in the inspector.\r\n    - `NodePath` prefetching is now enabled\u002Fdisabled in the `BlackboardPlan` editor.\r\n  - **Binding:** Bind variables to object properties using `blackboard.bind_var()` method.\r\n    - A variable bound to a property will have the same value as that property (for both reading and writing).\r\n  - **Linking:** Link variables using `blackboard.link_var()` method at runtime.\r\n    - Two linked variables in different blackboards will share the same state.\r\n  - **Inspector property editor for BB variables**:\r\n    - Handy property editor that shows an indicator if a variable is included in the blackboard.\r\n      - Clicking on the indicator takes you straight to the blackboard plan editor and autofills the variable name if it doesn't exist.\r\n      - Special indicator for variables that begin with \"_\" (aka private variables).\r\n    - Also provides a drop-down selection of existing variables.\r\n    - Can be used with custom tasks.\r\n    - **Important**: It appears for any `StringName` property in a custom task that ends with \"_var\" and also for exported `BBParam` properties.\r\n- **Editor improvements**\r\n  - **Change Type action:** Switch task's type with the \"Change Type\" context menu action.\r\n  - **Extract Subtree action:** Save subtrees with the \"Extract Subtree\" context menu action (using `BTSubtree` decorator).\r\n  - **Adding tasks with Shift-click:** In Task Palette, Shift+click to add a task after the selected and on the same level as the selected task.\r\n  - **Cut-Copy-Paste**: New Cut, Copy and Paste actions in the behavior tree editor.\r\n  - **BBParam editor:** Handy custom property editor for blackboard parameters, and new BBParam types.\r\n  - Remember collapsed branches in behavior trees.\r\n- **Tasks**\r\n  - **New BTEvaluateExpression task** : Evaluate an `Expression` against a node or object (thanks @Rubonnek).\r\n  - **BTCallMethod improvements:**\r\n    - Include its delta as an argument. Thanks, @Rubonnek!\r\n    - Store result on the blackboard.\r\n    - Allow using blackboard variables as arguments for the call.\r\n  - **BTRunLimit improvements**: New `count_policy` property.\r\n    - **Breaking compatibility**: RunLimit count policy defaults to counting only successful runs. Previously, both successful and failed runs were counted.\r\n- **State machines**\r\n  - Refactored `LimboHSM`, `LimboState`, and `BTState` code.\r\n  - Disallow `LimboHSM` transitions to self when `ANYSTATE` is used.\r\n  - Allow `LimboState::dispatch` to be called from inside the hierarchy.\r\n  - Provide the previous state in the `state_changed` signal.\r\n  - Fix crashing on HSM update with state transition.\r\n  - Fix `BTState` not honoring API virtual methods.\r\n- **Comprehensive Demo**: New extensive demo project with a tutorial, several examples and a small game.\r\n  - **Tutorial**: Introduction to behavior trees with examples inside the demo project!\r\n- **Debugger improvements:**\r\n  - **Performance gains**: Implement selective tree updates in `BehaviorTreeView`.\r\n  - New option: Specify update interval.\r\n  - **Visualize BTs in-game**: Expose `BehaviorTreeView` and `BehaviorTreeData` to use with custom in-game tools.\r\n- **Online documentation:** [link](https:\u002F\u002Flimboai.readthedocs.io\u002Fen\u002Flatest","2024-03-22T10:15:19"]