EGamePlay

這個是2.0的版本,之前的版本在1.0分支
2.0版本的改動主要有以下幾個地方
1、將SkillAbility和StatusAbility統一為Ability,實體類和配置表都統一,通過配置表裡的Type字段區分Skill和Buff
2、不再分Excel流程和ScriptableObject流程,2.0的效果結構更複雜,Excel不好表達,統一為Excel做技能信息配置,SO做效果配置AbilityConfigObject
3、AbilityConfigObject的效果配置拆分為触发点和效果列表分開配置,通過觸發點去觸發效果,觸發點分為主動觸發和被動觸發,主動觸發通過技能執行體觸發,其餘的都是被動觸發,比如大多數的buff觸發機制
4、執行體裡的碰撞體配置改為更方便擴展的效果列表配置
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插件已經在工程中,並加上UNITY條件編譯,最後將以下目錄複製過去即可:
- EGamePlay/Assets/Editor
- EGamePlay/Assets/EGamePlay
- EGamePlay/Assets/EGamePlay.Unity
- EGamePlay/Assets/Plugins/Editor/npoi
- EGamePlay/Excel
如何將EGamePlay移植到ET框架裡
- 把EGamePlay/Assets/Editor移到ET.Editor程序集下
- 把EGamePlay/Assets/EGamePlay移到Model程序集下
- 把EGamePlay/Assets/EGamePlay.Unity移到ModelView程序集下
- 最後要添加條件編譯EGAMEPLAY_ET
可以參考這個聯網同步demo https://github.com/m969/AOGame
EGamePlay demo示意圖



基於Odin和ScriptableObject實現的靈活的技能、buff配置工具


技能Excel配置

EGamePlay戰鬥框架技術討論交流qq群:763696367
對戰鬥感興趣的同學可以進群一起探討更合適、高效的戰鬥框架實現對EGamePlay有任何疑問或建議可以進群反饋,或是提在Discussions
其他類似項目
- 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) })
參考
- https://github.com/egametang/ET