{"repo":"m969/EcsNode","free":true,"listed":false,"github":"https://github.com/m969/EcsNode","clone":"git clone https://github.com/m969/EcsNode.git","description":"一个基于ECS模式的框架，做到数据、逻辑、视图分离，明确隔离Ecs域（业务领域），强调模块划分、目录管理、AI辅助生产、事件作用域等","language":"C#","stars":62,"topics":["ai","ai-agent","copilot","copilot-coding-agent","csharp","domain-driven-design","ecs","framework","game","game-development"],"license":"MIT","category":"game-templates","readme_excerpt":"EcsNode 基于 Entity-Component-System (ECS) 的框架，支持 热重载 。 Demos (开发中) SLG 游戏 Demo - Modules.Unity/com.module.resource-data (资源模块) - Modules.Unity/com.module.grid-based (网格系统) - Modules.Unity/com.module.building (建筑建造模块) - Modules.Unity/com.module.achieve (达成模块，成就/任务) - Modules.Unity/com.module.chase (追逐模块) - Modules.Unity/com.module.actor-state (角色状态模块) 帧同步 Demo - 方案一 : 仅预测移动，冲突即重置回滚重新预测（已实现）。 - 方案二 : 预测碰撞事件缓存，先做特效表现，等待权威帧验证（未实现）。 - 方案三 : 全部预测，缓存状态帧快照用以回滚（未实现）。 (图中黄色物体为确定帧轨迹) 核心理念 (Core Philosophy) - 数据逻辑分离 (Component-System) - 业务渲染分离 (System-ViewSystem) - 组合优于继承 (Entity-Component) - 组合优于封装类，尤其是上层业务。当上层业务（UI、动画、特效、场景渲染、消息处理等）需要对封装好的类进行侵入式修改时往往是不好的设计。 - 领域驱动设计 (Domain Driven Design) - EcsNode 将领域看做不同的业务场景，规划对齐需求粒度，降低协作理解成本。 - 高内聚低耦合 - 高内聚（模块化）优先于低耦合。 - 浅传参（扁平化）优先于深传参。 - 异常捕获优先于判空防御。 - 面向切面编程 - 避免侵入式编码。 - 规范化模块开发流 (AI+) - Spec-Modular-Driven (类似于 Kiro 的 Spec-Driven)。 - 基于 copilot-instruction.md 。 - 思维模式 - 用 面向过程 的思维实现逻辑功能。 - 用 面向对象 的思维设计数据结构。 架构设计 目录管理 实际开发中，规范的目录管理如同收纳整理，能显著降低维护成本。EcsNode 使用三级层级划分： 域 (Domain) 、 层 (Layer) 、 块 (Module) 。 1. 域 : 代表领域、ECS 域，如 UnityApp, Game, World 等。 2. 层 : 代表层级，如数据层（业务/视图数据）、逻辑层（业务/视图逻辑）、引擎工具层。 3. 块 : 代表模块，如角色模块、战斗模块、移动模块等。 脚本目录结构 (四级管理): 1. 第一级 (层级划分) : - App.Model (数据模型层) - App.System (系统逻辑层) 2. 第二级 (业务类型细分) : - Game.System (核心系统逻辑) - Game.ViewSystem (视图系统逻辑) - Unity.System (引擎系统逻辑) 3. 第三级 (ECS 域划分) : - 命名格式: model.xxx , system.xxx (xxx 为域名称，如 UnityApp, Game, World, UI, Scene)。 - 第三方模块: module.thirdparty.model , module.thirdparty.system 。 - 自定义公共模块","default_branch":null,"files":null,"tree":[],"storefront":"/r/m969","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/m969/EcsNode/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}