ECS架构分析

ECS全称Entity-Component-System,即实体-组件-系统。是一种面向数据(Data-Oriented Programming)的编程架构模式。

纸飞机APP下载

这种架构思想是在GDC的一篇演讲《Overwatch Gameplay Architecture and Netcode》(翻成:守望先锋的游戏架构和网络代码)后受到了广泛的学习讨论。在代码设计上有一个原则“组合优于继承”,它的核心设计思想是基于这一思想的“组件式设计”。

ECS职责定义

  • Entity(实体):在ECS架构中表示“一个单位”,可以被ECS内部标识,可以挂载若干组件。

  • Component(组件):挂载在Entity上的组件,负载实体某部分的属性,是纯数据结构不包含函数。

  • System(系统):纯函数不包含数据,只关心具有某些特定属性(组件)的Entity,对这些属性进行处理。

运行逻辑

某个业务系统筛选出拥有这个业务系统相关组件的实体,对这些实体的相关组件进行处理更新。

基本特点

Entity数据结构抽象:

PosiComp

MoveComp

AttrComp

...

Pos

Velocity

Hp

...

Map

-

Mp

...

-

-

ATK

...

  • 组件内聚本业务相关的属性,某个实体不同业务的属性通过组件聚合在一起。

  • 从数据结构角度上看,Entity类似一个2维的稀疏表,如上述Entity数据结构抽象

  • OOP的思路知道类型就知道了这个对象的属性,ECS的实体是知道了有哪些组件知道这个实体大概是什么,有点像鸭子理论:如果走路像鸭子、说话像鸭子、长得像鸭子、啄食也像鸭子,那它肯定就是一只鸭子。

  • 业务系统收集所有具有本业务要求组件的Entity,集中批量的处理这些Entity的相关组件

推论

  • ECS的组件式设计,是高内聚、低耦合的࿰

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值