10 分钟Screeps 进阶开发
Screeps InterShardMemory 怎么用:跨 Shard 状态同步、版本校验与过期数据
使用 InterShardMemory 在多个 Screeps shard 之间交换版本化状态:安全解析本地和远端字符串、控制 UTF-8 容量、识别 writerEpoch 重启与 revision 回退,并用接收方自己的观察窗口判断远端 channel 是否停滞。
TAG
当前共有 7 篇文章使用这个长期主题标签。
使用 InterShardMemory 在多个 Screeps shard 之间交换版本化状态:安全解析本地和远端字符串、控制 UTF-8 容量、识别 writerEpoch 重启与 revision 回退,并用接收方自己的观察窗口判断远端 channel 是否停滞。
为同一房间或帝国中的多个 Spawn 建立统一队列:用稳定 requestKey 去重,按紧急度和等待时间排序,为共享 Spawn 与 Extension Energy 做本地预留,避免多个模块重复生成 Creep,并在后续 tick 验证真实孵化结果。
当某个Screeps房间或模块抛出JavaScript异常时,用房间级错误边界、限频日志、连续错误暂停和冷却重试,让其他房间继续执行,并区分异常、API返回码与CPU截止。
当 Game.cpu.bucket 持续下降时,用带迟滞的 NORMAL、CONSERVE、EMERGENCY 与 RECOVERY 状态机保护 Spawn、采集、Controller 和防御,逐级暂停高成本任务,并在恢复后分阶段重新启用。
用 Creep.store 边界和 memory.working 建立稳定两阶段状态:空载取能、满载工作、中间值保持,并正确区分 Store 状态与 harvest() 返回值。
从Game.flags和Flag.memory读取带版本的任务配置,校验Creep名称、任务类型和目标范围,并处理跨房间视野、moveTo返回值与过期Memory。
用固定名称整理 Harvester1、Upgrader1 和 Builder1,把安全检查、创建、运输、升级、建造、维修和返回值处理放进一份新手可读代码。