{"id":29153314,"url":"https://github.com/youer0219/gd_gameplay","last_synced_at":"2026-02-05T19:33:31.520Z","repository":{"id":301198979,"uuid":"1006569759","full_name":"youer0219/GD_GamePlay","owner":"youer0219","description":"使用GDS实现的能力系统、buff系统等","archived":false,"fork":false,"pushed_at":"2025-09-01T13:25:30.000Z","size":150,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-01T15:23:53.224Z","etag":null,"topics":["ability-system","buff","gdscript","godot4"],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/youer0219.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-22T15:01:06.000Z","updated_at":"2025-09-01T13:25:33.000Z","dependencies_parsed_at":"2025-06-25T17:28:06.731Z","dependency_job_id":"00b20af1-11db-47eb-81c2-b9af7b2a5e43","html_url":"https://github.com/youer0219/GD_GamePlay","commit_stats":null,"previous_names":["youer0219/gd_gameplay"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/youer0219/GD_GamePlay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youer0219%2FGD_GamePlay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youer0219%2FGD_GamePlay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youer0219%2FGD_GamePlay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youer0219%2FGD_GamePlay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/youer0219","download_url":"https://codeload.github.com/youer0219/GD_GamePlay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/youer0219%2FGD_GamePlay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29130504,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T18:55:47.139Z","status":"ssl_error","status_checked_at":"2026-02-05T18:55:04.010Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ability-system","buff","gdscript","godot4"],"created_at":"2025-07-01T01:39:46.940Z","updated_at":"2026-02-05T19:33:31.515Z","avatar_url":"https://github.com/youer0219.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GD_GamePlay\n\n目前通过GDS实现了能力系统和BUFF系统。这不是插件，而是一组脚本。\n\n属性系统我认为[godot_gameplay_attributes](https://github.com/OctoD/godot_gameplay_attributes)已经满足需求且使用C++实现，性能优秀。\n可能为了学习或自定义，会在未来用GDS写一个。\n\n警告：未经过项目实践测试。未有性能测试。制作中，API可能变化。\n\n## GODOT Version\n\nGodot4.4\n\n## Ability System\n\n这里主要仿照了[godot-gameplay-abilities](https://github.com/OctoD/godot-gameplay-abilities)实现。原本实现为C++语言。\n\n使用GDS版本的优势在于：\n- 便于直接理解（虽然，原版核心源码只有一个文件，借助AI也可以理解逻辑）\n- 极强的扩展性\n- 快速验证功能后可以直接转为原版\n\n我会尽可能保持与原版一致的行为。同时，如果想要无缝转原版，请小心扩展，因为C++版本自由度不高。\n\nPS:其实原版就是GDS转C++，这是一个轮回哈哈。为了避免类名冲突，我都加了前缀`GD_`。\n\n## Buff System\n\n目标是实现[明日方舟的BUFF效果](https://prts.wiki/w/BUFF#)\n\n生命周期等参考了[Unity-Buff-System](https://github.com/NoSLoofah/)和[如何实现一个强大的MMO技能系统——BUFF](https://zhuanlan.zhihu.com/p/150812545)\n\n- 已实现\n\t- 基本生命周期与持续时间\n\t- 生效失效\n\t- 五种叠加机制（优先级、唯一、堆叠、加时、刷新）\n\t\t- 持续时间结束后的处理（消耗一层buff并重置 或 直接移除）\n\t- 冲突机制\n\t- 间隔触发机制\n\t- buff持续时间流速机制（不打算完全实现mrfz机制，不影响间隔时间）\n\t- buff工厂(很不成熟的想法，可以删除)\n- TODO:\n\t- 代码优化，补充注释和文档\n\t- 完善buff工厂功能\n\t- 实践DEMO\n\n[BUFF系统文档](docs/GD_Buff_Docs/GDBuffDocs.md)（未完工……）\n\n## Guards\n\n可扩展的守卫系统。包括守卫组类和守卫类，并通过上下文字典即context属性在不同守卫中传递数据。\n\n一般建议使用守卫组类，在编辑器中添加守卫资源实现各类守卫功能。但也可以单独使用守卫类，调用时设计好上下文字典。\n\n- 已实现的守卫类：\n\t- 逻辑守卫\n\t\t- GD_AllOfGuard：全真为真\n\t\t- GD_AnyOfGuard：全假为假\n\t\t- GD_NotGuard：相反\n\t\t- GD_ThresholdGuard：门限，大于等于一定数量为真即为真\n\t- 表达式守卫 GD_ExpressionGuard：基于context和表达式判断正误\n- TODO:\n\t- 不确定是否guard类中也应该加入自己的context属性。未来可能改变。\n\n## GD_Effect\n\n最基础的效果。用来作为跨Buff的可复用效果。\n\n支持生效和失效。但目前没有限制生效后才可失效。\n\n目前暂未和Buff、Guard等系统衔接。\n\n## utilities\n\n之前实现的一个优先级字典。`已弃用`。\n\n## MIT协议\n\n本项目遵守MIT协议\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyouer0219%2Fgd_gameplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyouer0219%2Fgd_gameplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyouer0219%2Fgd_gameplay/lists"}