type
Post
status
Published
date
Jul 8, 2023
slug
screeps_creeps_factory
summary
Screeps[GCL1,RCL3]时对于工种工厂 使用抽象工厂模式 的自研方案
tags
设计模式
游戏
效率
category
技术分享
icon
password
截止到2023-7-8本人在GCL1,RCL3的阶段,代码还在建设ing,思考有限
背景
在Screeps中,可以自定义自己的兵种,兵种可由自己定义
但是兵种的生产代码由Spawn(基地)的spawnCreep 方法来进行兵种创建
这样会使得兵种的生产与Spawn的调用关系强耦合
在代码调用关系上无法以较低的代码成本进行兵种的动态扩张
需求
- 只需要新增一个新兵种的信息,就可以使得兵种支持生产
- 后续只需要修改这个兵种信息,即可改变兵种属性
- 后续允许多个Spawn类调用
设计
将兵种工厂由抽象工厂模式进行设计
由于兵种信息固定单一,便可将兵种信息抽象为CreepsRoleMeta 的 抽象类
之后通过自己编写的兵种信息去继承这个CreepsRoleMeta类即可
最后在CreepsFactory类中,通过
- CreepsRoleMeta类读取兵种信息
- StructureSpawn类进行兵种生产的方法调用
抽象工厂模式
通过将StructureSpawn作为参数传递给CreepsFactory,做到后续支持多Spawn
之后将CreepsRoleMeta组合到creepsFactory中
使其可以调用通过CreepsRoleMeta继承下去的各个子类,进行兵种生产
结果
对于新增兵种,仅需要继承一个CreepsRoleMeta类,然后完善对应的属性即可
对于修改兵种,修改其对应的Meta信息即可
对Spawn类,在外部调用时,循环遍历Spawn,并传入方法即可
- 作者:txuw
- 链接:https://txuw.top/article/screeps_creeps_factory
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。