ECS随笔1
文章目录概念拆解Logic ECS WorldRender/View WorldView Entity非 ECS 部分阶段总结概念ECS World 负责描述游戏世界里“有什么、在哪里、状态如何、规则如何推进”。Entity 是逻辑世界里的实体编号不是屏幕上的显示对象。Component 是挂在 Entity 上的纯数据比如位置、血量、阵营、技能、碰撞体。System 是处理这些数据的规则比如移动、碰撞、伤害、AI、技能、Buff。屏幕上的模型、血条、特效、飘字、动画节点属于 Render/View 层不属于核心 ECS。一个完整游戏数据完整世界世界的可视化…UI 层ECS World输入层表现层资源层网络同步层配置层等外围系统常见项目组织方式非ECSOOP实体 组件容器 全局Mgr 独立的View层转换建议Input And CommandsLogic ECS WorldBattle Event BusState SnapshotRender View WorldEngin UI DisplayConfig And AssetsFrame Sync Replay拆解Logic ECS World只负责确定性战斗模拟不引用 显示节点、音效、特效。E:entityIdC:Component - 数据IdentityComponent - 标识TransformComponent - 变换HealthComponent - 血量AttributeComponent - 属性SkillComponent - 技能BuffComponent - buffColliderComponent - 碰撞AIComponent - AIMovementComponent - 移动ProjectileComponent - 炮弹RenderableComponent - 表现意图如模型id只是逻辑侧的表现数据不直接持有显示对象LifetimeComponent - 生命周期如存在时间S:System - 系统SpawnSystem - 生成实体实体指entityId系列组件共同构成AISystem - 读取一些数据组件修改一些数据组件做决策不做执行比如改了移动数据后面通常由MoveSys处理MovementSystem - 处理各种移动CollisionSystem - 根据数据产生对应的事件事件可以考虑放到当前帧的事件队列当帧产生当帧或下一阶段消费帧末清空DamageSystem - 处理伤害公式、护盾、吸血、暴击、血量变化。BuffSystem - 处理 Buff 生命周期和效果DeathSystem - 处理死亡、复活、幻影、移除实体EventSystem - 把逻辑变化转成纯数据事件比如EntityCreated等把 Logic 层发生的变化整理成 View 层能消费的“表现事件”SyncSystem - 生成帧同步快照、回放数据、断线恢复数据。负责把 Logic World 当前状态“序列化”出来用于同步、回放和恢复。Render/View World把 Logic ECS World 的状态画出来不属于核心 ECS 的 Entity/Component/System而是逻辑实体的表现镜像。View EntityView 层可以也做一个轻量的 Render ECS但它和 Logic ECS 是两个 World。——这里感觉有点过度了Render ECSView Entity 可以用同一个 entityId 关联逻辑实体。【E】View 组件可以是【C】ViewRefComponent显示节点引用比如 BattleHeroComp、BattleModelComp。HpBarViewComponent血条节点、上次血量、显隐规则。…View 系统可以是【S】ViewSpawnSystem消费 EntityCreated创建模型和血条。TransformSyncSystem读取逻辑位置更新显示坐标。HpBarRenderSystem消费 HpChanged更新血条。…非 ECS 部分以下模块不要强行塞进核心 ECS输入层点击、拖拽先转成 Command再交给 ECS。UI 层战斗面板等UI界面资源层配置表、模型资源、音效资源、特效资源。网络层帧同步、回放、断线重连、快照序列化。音频层播放音乐、音效。调试层GM 命令、调试绘制、性能面板。阶段总结一句话ECS 负责“世界事实”View 负责“把事实画出来”。