Awesome
EGamePlay
<img src="Readme/EGamePaly_logo.png" width="60%">Stargazers over time
文档:
商业项目
- 暗黑之地 https://www.taptap.cn/app/227372 一个人开发,用EGP重写了整个战斗后重新上线
知乎文章:
- 0、如何实现一个灵活、通用的战斗(技能)系统——序章
- 1、如何实现一个灵活、通用的战斗(技能)系统——数值系统
- 2、如何实现一个灵活、通用的战斗(技能)系统——数值系统(升级版)
- 3、如何实现一个灵活、通用的战斗(技能)系统——战斗行动机制
- 4、如何实现一个灵活、通用的战斗(技能)系统——战斗实体
- 5、如何实现一个灵活、通用的战斗(技能)系统——能力Ability
- 6、如何实现一个灵活、通用的战斗(技能)系统——Status状态效果
- 7、如何实现一个灵活、通用的战斗(技能)系统——Skill技能
- 8、如何实现一个灵活、通用的战斗(技能)系统——技能效果
- 9、如何实现一个灵活、通用的战斗(技能)系统——Entity-Component模式
demo运行
- rpg demo,运行RpgExample Scene场景
- 回合制demo,运行TurnBaseExample Scene场景
- 技能调试编辑,运行ExecutionLinkScene场景
如何制作一个简单的技能
- 首先在AbilityConfig.xlsx表里添加一个技能,给定技能id,配置参数
- 然后右键选择
能力/能力配置
创建对应id的技能配置,配置效果 - 然后右键选择
能力/Execution
创建对应id的技能执行体,配置片段表现 - 最后就是运行时将技能挂载到CombatEntity上,再通过施法组件SpellComponent释放技能即可
该项目使用了以下收费插件:
- DOTween Pro (简单易用强大的动画插件)
- Odin Inspector (编辑器扩展、工作流改善)
- Animancer Pro (基于Playable的简单强大的Animation解决方案)
如何将EGamePlay移植到别的Unity工程
如果要将EGamePlay移植到自己的Unity工程里,首先要确保Odin Inspector插件已经在工程中,然后再将以下目录拖过去即可:
- EGamePlay/Assets/Editor
- EGamePlay/Assets/EGamePlay
- EGamePlay/Assets/EGamePlay.Unity
- Plugins/Editor/npoi
如果要使用Excel配置流程的话,还需要将以下目录复制过去,再生成配置
- EGamePlay/Excel
<img src="Readme/EGamePlay.gif" width="60%"> <img src="Readme/EGamePlayTurn.gif" width="60%"> <img src="Readme/EGamePlayExecutionLink2.gif" width="90%">
<details> <summary> CombatEntity </summary> CombatEntity </details> <details> <summary> Attribute、Numeric </summary> NumericFloat </details> <details> <summary> Ability </summary> Ability </details> <details> <summary> StatusAbility </summary> StatusAbility </details> <details> <summary> SkillAbility </summary> SkillAbility </details> <details> <summary> AbilityEffect </summary> AbilityEffect </details> <details> <summary> ExpressionParser </summary> ExpressionParser </details> <details> <summary> ExecutionLink </summary> ExecutionLink </details>
基于Odin和ScriptableObject实现的灵活的技能、buff配置工具
<img src="Readme/AbilityObjectConfig.png" width="80%">技能Excel配置
EGamePlay战斗框架技术讨论交流qq群:763696367
对战斗感兴趣的同学可以进群一起探讨更合适、高效的战斗框架实现 <br>对EGamePlay有任何疑问或建议可以进群反馈,或是提在Discussions
联网同步demo在这里 https://github.com/m969/AOGame
其他类似项目
- https://github.com/KrazyL/SkillSystem-3 (Dota2 alike Skill System Implementation for KnightPhone)
- https://github.com/weichx/AbilitySystem
- https://github.com/dongweiPeng/SkillSystem (丰富的接口可便于使用扩展 完整的技能效果流程【如流程图】 配套的技能管理器 自定义的技能数据表)
- 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.)
- https://github.com/dx50075/SkillSystem (skill system for unity , 思路 http://blog.csdn.net/qq18052887/article/details/50358463 技能描述文件如下 skill(1000) //技能1 { FaceToTarget(0) PlayAnimation(1,Skill_1) Bullet(1.3,Bullet,7) PlayEffect(0,Explode8,3) })