{"id":14960363,"url":"https://github.com/m969/egameplay","last_synced_at":"2025-05-14T06:13:45.973Z","repository":{"id":37395238,"uuid":"298824567","full_name":"m969/EGamePlay","owner":"m969","description":"一个基于Entity-Component模式的灵活、通用、可扩展的轻量战斗（技能）框架，配置可选使用ScriptableObject或是Excel表格. A flexible, generic, easy to extend, lightweight combat (skills) framework based on Entity-Component pattern. Configuration can choose to use ScriptableObject or Excel tables.","archived":false,"fork":false,"pushed_at":"2025-03-24T14:17:35.000Z","size":92545,"stargazers_count":2151,"open_issues_count":1,"forks_count":502,"subscribers_count":38,"default_branch":"main","last_synced_at":"2025-04-11T00:52:08.338Z","etag":null,"topics":["buff","editor","framework","gameplay","mmorpg","odin-inspector","rpg","scriptableobject","skill","skillsystem","status","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","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/m969.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}},"created_at":"2020-09-26T13:53:08.000Z","updated_at":"2025-04-11T00:24:00.000Z","dependencies_parsed_at":"2022-07-16T19:00:35.881Z","dependency_job_id":"3cb98ce9-ce19-4482-bf1c-ee683c60a53e","html_url":"https://github.com/m969/EGamePlay","commit_stats":{"total_commits":233,"total_committers":3,"mean_commits":77.66666666666667,"dds":"0.24034334763948495","last_synced_commit":"ecc9cf12d71f79d3cf6cf2c5e171586b9191ea65"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m969%2FEGamePlay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m969%2FEGamePlay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m969%2FEGamePlay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m969%2FEGamePlay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m969","download_url":"https://codeload.github.com/m969/EGamePlay/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322609,"owners_count":21084336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["buff","editor","framework","gameplay","mmorpg","odin-inspector","rpg","scriptableobject","skill","skillsystem","status","unity"],"created_at":"2024-09-24T13:22:07.822Z","updated_at":"2025-05-14T06:13:45.967Z","avatar_url":"https://github.com/m969.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ***EGamePlay***\n\n\u003cimg src=\"Readme/EGamePaly_logo.png\" width=\"60%\"\u003e\n\n---\n\n# 3.0版本\n1、3.0版本技能配置数据结构没有变动，主要是运行时的业务代码大改\n\n2、引入了EcsNode框架，引入System概念，基于EcsNode的 实体-组件-系统 模式重构了运行时代码，将逻辑和数据分离，将业务逻辑和视图逻辑分离\n\n3、去掉了回合制demo，仅保留Rpg demo示例\n\n# 2.0版本在2.0分支\n\n# 1.0版本在1.0分支\n\n---\n[![Unity Version: 2022.3.53f1](https://img.shields.io/badge/Unity-2022.3.53f1-333333.svg?logo=unity)](https://unity3d.com/get-unity/download/archive) [![Status: Work-in-progress](https://img.shields.io/badge/status-work--in--progress-orange)](https://github.com/m969/EGamePlay/projects/1)\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/m969/EGamePlay.svg)](https://starchart.cc/m969/EGamePlay)\n\n---\n# 文档：\n- [EGamePlay文档(wiki)](https://github.com/m969/EGamePlay/wiki)\n\n# 商业项目\n- [暗黑之地](https://www.taptap.cn/app/227372) https://www.taptap.cn/app/227372 一个人开发，用EGP重写了整个战斗后重新上线\n\n---\n## 知乎文章：\n\n- [0、如何实现一个灵活、通用的战斗（技能）系统——序章](https://zhuanlan.zhihu.com/p/272216809)\n- [1、如何实现一个灵活、通用的战斗（技能）系统——数值系统](https://zhuanlan.zhihu.com/p/269901872)\n- [2、如何实现一个灵活、通用的战斗（技能）系统——数值系统（升级版）](https://zhuanlan.zhihu.com/p/274795206)\n- [3、如何实现一个灵活、通用的战斗（技能）系统——战斗行动机制](https://zhuanlan.zhihu.com/p/272865602)\n- [4、如何实现一个灵活、通用的战斗（技能）系统——战斗实体](https://zhuanlan.zhihu.com/p/284192989)\n- [5、如何实现一个灵活、通用的战斗（技能）系统——能力Ability](https://zhuanlan.zhihu.com/p/292590253)\n- [6、如何实现一个灵活、通用的战斗（技能）系统——Status状态效果](https://zhuanlan.zhihu.com/p/334825494)\n- [7、如何实现一个灵活、通用的战斗（技能）系统——Skill技能](https://zhuanlan.zhihu.com/p/340447052)\n- [8、如何实现一个灵活、通用的战斗（技能）系统——技能效果](https://zhuanlan.zhihu.com/p/341431038)\n- [9、如何实现一个灵活、通用的战斗（技能）系统——Entity-Component模式](https://zhuanlan.zhihu.com/p/343624199)\n---\n\n## demo运行\n- rpg demo，运行RpgExample Scene场景\n- 回合制demo，运行TurnBaseExample Scene场景\n- 技能调试编辑，运行ExecutionLinkScene场景\n\n---\n## 如何制作一个简单的技能\n- 首先在AbilityConfig.xlsx表里添加一个技能，给定技能id，配置参数\n- 在Project面板右键选择 ```能力/能力配置``` 创建对应id的技能配置，配置效果\n- 在Project面板右键选择 ```能力/Execution``` 创建对应id的技能执行体，配置片段表现\n- 最后就是运行时将技能挂载到CombatEntity上，再通过施法组件SpellComponent释放技能即可\n\n---\n\n## 该项目使用了以下收费插件：\n- [DOTween Pro](https://assetstore.unity.com/packages/tools/visual-scripting/dotween-pro-32416) （简单易用强大的动画插件）\n- [Odin Inspector](https://assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041) （编辑器扩展、工作流改善）\n- [Animancer Pro](https://assetstore.unity.com/packages/tools/animation/animancer-pro-116514) （基于Playable的简单强大的Animation解决方案）\n---\n\n## 如何将EGamePlay移植到别的Unity工程\n如果要将EGamePlay移植到自己的Unity工程里，首先要确保Odin Inspector插件已经在工程中，并加上UNITY条件编译，最后将以下目录复制过去即可：\n- EGamePlay/Assets/Editor\n- EGamePlay/Assets/EGamePlay\n- EGamePlay/Assets/EGamePlay.Unity\n- EGamePlay/Assets/Plugins/Editor/npoi\n- EGamePlay/Excel\n- 目前还不是完美接入，接入过程中会有冲突或者缺失，需要按需处理\n\n---\n## 如何将EGamePlay移植到ET框架里\n- 把EGamePlay/Assets/Editor移到ET.Editor程序集下\n- 把EGamePlay/Assets/EGamePlay移到Model程序集下 \n- 把EGamePlay/Assets/EGamePlay.Unity移到ModelView程序集下 \n- 最后要添加条件编译EGAMEPLAY_ET\n- ETHelper文件夹里是老版本的ET代码，会和ET框架的代码有冲突，可以整个删掉，改成用原ET框架的代码，配置表流程也需要改成原ET框架的流程\n- 目前还不是完美接入，接入过程中会有冲突或者缺失，需要按需处理\n\n可以参考这个联网同步demo https://github.com/m969/AOGame\n\n## EGamePlay demo示意图\n---\n\n- rpg demo，运行RpgExample Scene场景\n\n\u003cimg src=\"Readme/EGamePlay.gif\" width=\"60%\"\u003e\n\n- 回合制demo，运行TurnBaseExample Scene场景\n\n\u003cimg src=\"Readme/EGamePlayTurn.gif\" width=\"60%\"\u003e\n\n- 技能调试编辑，运行ExecutionLinkScene场景\n\n\u003cimg src=\"Readme/EGamePlayExecutionLink2.gif\" width=\"90%\"\u003e\n\n***\n\n---\n## 基于Odin和ScriptableObject实现的灵活的技能、buff配置工具\n\n- 可使用菜单栏：```Assets/Create/能力/能力配置``` 创建能力效果配置\n\u003cimg src=\"Readme/AbilityObjectSkill2.png\" width=\"50%\"\u003e\n\n- 可使用菜单栏：```Tools/EGamePlay/SkillEditorWindow``` 打开SkillEditorWindow界面\n\u003cimg src=\"Readme/SkillEditorWindow.png\" width=\"100%\"\u003e\n\n### 技能Excel配置\n- 可使用菜单栏：```Tools/导出配置``` 生成json和配置类\n![AbilityConfigExcel.png](Readme/AbilityConfigExcel.png)\n\n---\n## EGamePlay战斗框架技术讨论交流qq群：763696367\n对战斗感兴趣的同学可以进群一起探讨更合适、高效的战斗框架实现\n\u003cbr\u003e对EGamePlay有任何疑问或建议可以进群反馈，或是提在[Discussions](https://github.com/m969/EGamePlay/discussions)\n\n---\n## 其他类似项目\n- https://github.com/KrazyL/SkillSystem-3 (Dota2 alike Skill System Implementation for KnightPhone)\n- https://github.com/weichx/AbilitySystem\n- https://github.com/dongweiPeng/SkillSystem (丰富的接口可便于使用扩展 完整的技能效果流程【如流程图】 配套的技能管理器 自定义的技能数据表)\n- https://github.com/sjai013/UnityGameplayAbilitySystem (The approach for this is taken from that used by Unreal's Gameplay Ability System, but implemented in Unity using the Data-Oriented Technology Stack (DOTS) where possible.)\n- https://github.com/dx50075/SkillSystem (skill system for unity ， 思路 http://blog.csdn.net/qq18052887/article/details/50358463\n技能描述文件如下 skill(1000) //技能1 { FaceToTarget(0) PlayAnimation(1,Skill_1) Bullet(1.3,Bullet,7) PlayEffect(0,Explode8,3) })\n\n---\n## 参考\n- https://github.com/egametang/ET\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm969%2Fegameplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm969%2Fegameplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm969%2Fegameplay/lists"}