KNOWLEDGE MODULE 01
Memory 与代码工程
保存跨 tick 状态、恢复对象引用、清理过期数据,并逐步理解模块拆分、segments、跨 Shard 状态、公开 Foreign Segment 与全局缓存。
WHO IT IS FOR
适合谁学习
已经完成新手路线,准备从固定名称代码进入可维护结构的玩家。
LEARNING GOAL
完成后能解决什么
理解哪些数据应该跨 tick 或跨 Shard 保存、怎样安全恢复对象,以及如何把不断增长的主循环拆成清楚的代码模块。
SYSTEM MAP
从 tick 到可维护代码的状态链
先区分每 tick 重建的运行对象和需要跨 tick 保存的数据,再进入角色状态、缓存和模块边界。
- 01Tick
主循环重新执行
- 02Game 对象
读取当前世界状态
- 03Memory
保存跨 tick 状态
- 04角色与缓存
减少重复判断与计算
- 05模块边界
让系统可维护和隔离
LEARNING STAGE
状态基础
先理解 Memory、死亡数据清理和工作状态切换。
- 01Screeps Memory 是什么:跨 tick 状态、JSON 边界与使用成本Screeps 基础工程 · 8 分钟阅读
解释Game对象、模块全局变量和Memory的生命周期差异,演示Creep角色状态、版本迁移、对象ID保存和Memory体积控制。
- 02Screeps 如何安全清理死亡 Creep 的 MemoryScreeps 基础工程 · 6 分钟阅读
比较Game.creeps与Memory.creeps,删除已不存在Creep的残留数据,并同步清理受控任务索引、限制日志频率和避免误删其他模块状态。
- 03Creep 如何在取能和工作之间稳定切换状态Screeps 基础工程 · 10 分钟阅读
用 Creep.store 边界和 memory.working 建立稳定两阶段状态:空载取能、满载工作、中间值保持,并正确区分 Store 状态与 harvest() 返回值。
LEARNING STAGE
对象与模块
学习通过 ID 恢复对象,并用 require 拆分代码。
LEARNING STAGE
高级存储与缓存
继续了解 segments、InterShardMemory、Foreign Segment 与全局缓存的使用边界。
- 06RawMemory segments 怎么跨 tick 安全读取和写回Screeps 进阶开发 · 7 分钟阅读
解释 RawMemory.setActiveSegments 的下一 tick 时序、0–99 ID 与同时激活上限,并提供空内容、损坏 JSON、版本字段和安全写回的完整示例。
- 07Screeps InterShardMemory 怎么用:跨 Shard 状态同步、版本校验与过期数据Screeps 进阶开发 · 10 分钟阅读
使用 InterShardMemory 在多个 Screeps shard 之间交换版本化状态:安全解析本地和远端字符串、控制 UTF-8 容量、识别 writerEpoch 重启与 revision 回退,并用接收方自己的观察窗口判断远端 channel 是否停滞。
- 08Screeps RawMemory Foreign Segment 怎么用:公开 Segment、下一 Tick 读取与轮询调度Screeps 进阶开发 · 10 分钟阅读
使用 RawMemory.setPublicSegments、setDefaultPublicSegment 和 setActiveForeignSegment 安全发布与读取其他玩家的公开 Segment:处理下一 tick 时序、一次一个 Foreign Segment、覆盖式配置、版本校验、轮询调度和不可信 JSON。
- 09Screeps 全局缓存为什么会失效:重建、过期与对象恢复Screeps 进阶开发 · 8 分钟阅读
解释模块顶层缓存与 Memory 的区别,使用按房间 Map、版本号和过期时间缓存 Source ID,并在全局重置、缓存过期或对象失效后安全重建。