{"id":41613099,"url":"https://github.com/magicsea/behavior3go","last_synced_at":"2026-01-24T12:23:32.191Z","repository":{"id":57482632,"uuid":"75594586","full_name":"magicsea/behavior3go","owner":"magicsea","description":"golang behavior tree,from https://github.com/behavior3","archived":false,"fork":false,"pushed_at":"2024-11-15T03:48:40.000Z","size":230,"stargazers_count":296,"open_issues_count":0,"forks_count":123,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-28T12:45:18.212Z","etag":null,"topics":["behavior3","behaviortree"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magicsea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-05T06:13:03.000Z","updated_at":"2025-10-23T02:42:34.000Z","dependencies_parsed_at":"2024-11-13T13:42:17.996Z","dependency_job_id":"cf8a82a3-31f5-4fdc-90d7-4e00bdba0e70","html_url":"https://github.com/magicsea/behavior3go","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/magicsea/behavior3go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicsea%2Fbehavior3go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicsea%2Fbehavior3go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicsea%2Fbehavior3go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicsea%2Fbehavior3go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magicsea","download_url":"https://codeload.github.com/magicsea/behavior3go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicsea%2Fbehavior3go/sbom","scorecard":{"id":611875,"data":{"date":"2025-08-11","repo":{"name":"github.com/magicsea/behavior3go","commit":"9f40c7a2cc3a7927134757be3c112142c2239cfa"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T02:51:21.286Z","repository_id":57482632,"created_at":"2025-08-21T02:51:21.286Z","updated_at":"2025-08-21T02:51:21.286Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28727581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["behavior3","behaviortree"],"created_at":"2026-01-24T12:23:31.588Z","updated_at":"2026-01-24T12:23:32.177Z","avatar_url":"https://github.com/magicsea.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# behavior3go\n\ngolang behavior tree,from https://github.com/behavior3\n\n## 简介\n\n带在线编辑器的行为树，可使用官方的在线编辑器编辑逻辑节点。  \n使用js版本翻译，保持和原版的编辑器数据格式一致。   \n此行为树和一般的行为树略有不同，行为树结构只保持一份无状态，状态记录在黑板里（一般行为树每个对象一份树结构，树结构保存状态）。  \n[专用的编辑器分支版本](https://github.com/magicsea/behavior3editor)   \n[编译好的桌面版](https://github.com/magicsea/behavior3editor/releases)\n\n## 示例 Examples\n\n- [load_from_tree](https://github.com/magicsea/behavior3go/tree/master/examples/load_from_tree)  ：从导出的树文件加载示例\n- [load_from_project](https://github.com/magicsea/behavior3go/tree/master/examples/load_from_project) ：从导出的工程文件加载示例\n- [load_from_rawproject](https://github.com/magicsea/behavior3go/tree/master/examples/load_from_rawproject) ：从原生工程文件加载示例\n- [subtree](https://github.com/magicsea/behavior3go/tree/master/examples/subtree) ：子树的使用示例（需要[专用的编辑器分支版本](https://github.com/magicsea/behavior3editor)）\n- [mmoarpg](examples/mmoarpg/zt.b3)：一个mmoarpg类型游戏的行为示例，可使用桌面版编辑器打开可以查看(Projects-\u003eopen project)\n\n## 完整示例\n\n[io类游戏示例](https://github.com/magicsea/h5game/tree/master/server)  \nbin/b3.json为行为树的数据，在编辑器中新建任意工程，选择（Project-\u003eImport-\u003eTree as json）导入树就可以还原工程，如图。  \n\n![image](https://github.com/magicsea/behavior3go/blob/master/b3_simple1.png)\n\n## 网页版编辑器本地搭建方法\n\n- 下载源码到本地(工程目录) https://github.com/magicsea/behavior3editor\n- 安装nodejs,npm\n- 安装bower: npm install -g bower\n- 安装依赖包:cd到工程目录下 npm install 然后 bower install\n- 安装gulp:npm install --global gulp\n- 运行:在工程目录下 gulp serve\n- 客户端用浏览器打开 http://127.0.0.1:8000\n- 自己部署web版本，只需要把生成的build目录放到自己的tomcat,IIS目录就可以浏览器访问\n\n## 更新\n\n* 添加子树支持 SubTree 节点，需要编辑器修改node导出category字段\n\n## 其他的参考\n\n- 一些节点的概念 http://note.youdao.com/noteshare?id=4f46dc2144ea62b55f597630f5e666b4\u0026sub=FF0B4E1D7916473E8DFC7242CFC62B69\n- 其他项目基础知识 https://www.behaviac.com/concepts/\n- 其他人写的behavior3go代码介绍 https://blog.csdn.net/u013272009/article/details/77131226\n- behavior3的erlang实现，同时里面有一些行为树基础分享：https://github.com/dong50252409/behavior3erl\n## FAQ\n- Q:子树的相同记忆节点的黑板信息是重复的？\n```\nA:是个问题，但是由于下一次进入会onopen重置节点黑板信息，并不会有错误表现。如果遇到BUG表现欢迎提出。\n```\n- Q:Tick里的target如何调用\n```\nA:用在ai里，一般target就这个ai的拥有者，拥有者有blackboard的成员。\n```\n- Q:如何设计打断一个进行中的状态？   \nA:参考https://github.com/magicsea/behavior3go/issues/15\n## TODO\n- [ ] 参数类型化\n- [ ] 参数支持传递黑板值利用格式“@变量名”\n- [ ] 子树支持自定义参数传递\n## 上线项目\n\n* [丛林大作战](https://www.taptap.com/app/31608)\n\n## 联系\n\nQQ群:285728047\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagicsea%2Fbehavior3go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagicsea%2Fbehavior3go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagicsea%2Fbehavior3go/lists"}