能量开发示例
最近开发遇到一个新需求:
英雄的能量运算独立开发,A类型的能量需要通过固定速度进行运算,B类型的能量需要根据游戏环境变量实时调整能量恢复速度。
变更前开发说明
之前开发时,需求是能量豆通过固定的速度进行运算,所以之前的结构是这样的:
Component:
|-Power
System:
|-PowerSystem
说明:
- Power是能量值组件,存储能量值、能量最大值、能量恢复速度。
- PowerSystem是能量计算系统,依赖Power组件进行计算,通过获取能量恢复速度,每帧对当前能量值进行更新运算。
变更后开发说明
但是当需求变更后,原有结构便不再适合,就有了新的结构:
Component:
|-Power
|-PowerSpeed
System:
|-PowerSpeedSystem
|-PowerSystem
说明:
- Power是能量值组件,存储能量值、能量最大值。
- PowerSpeed是能量恢复速度组件,因需求原因而单独分离出。
- PowerSpeedSystem是能量恢复速度计算系统,依赖PowerSpeed组件进行计算。依据需求,可将该系统依赖组件指定为特定类型的组件组合,再对其进行计算。
- PowerSystem是能量计算系统,依赖Power与PowerSpeed组件进行计算。
备注
实际开发时遇到的小例子,虽然很小,不过对于ECS作为开发模式来说,还是有一定说服力的。
我认为,在这种思想下进行开发时,需求的变更便是从数据层面进行变更,然后根据变更后的数据内容进行结构调整。所以需求的变更本质是Component、System的变更,如果架构中有Archetype的概念,那么同时也包括了Archetype的变更(例子中PowerSpeedSystem与PowerSystem所关注的Archetype较原有设计是发生了变更的)。
网友评论