KNOWLEDGE MODULE 01

Memory 与代码工程

保存跨 tick 状态、恢复对象引用、清理过期数据,并逐步理解模块拆分、segments、跨 Shard 状态、公开 Foreign Segment 与全局缓存。

9 篇文章3 个学习阶段1 / 8 模块

WHO IT IS FOR

适合谁学习

已经完成新手路线,准备从固定名称代码进入可维护结构的玩家。

LEARNING GOAL

完成后能解决什么

理解哪些数据应该跨 tick 或跨 Shard 保存、怎样安全恢复对象,以及如何把不断增长的主循环拆成清楚的代码模块。

SYSTEM MAP

从 tick 到可维护代码的状态链

先区分每 tick 重建的运行对象和需要跨 tick 保存的数据,再进入角色状态、缓存和模块边界。

  1. 01Tick

    主循环重新执行

  2. 02Game 对象

    读取当前世界状态

  3. 03Memory

    保存跨 tick 状态

  4. 04角色与缓存

    减少重复判断与计算

  5. 05模块边界

    让系统可维护和隔离

01

LEARNING STAGE

状态基础

先理解 Memory、死亡数据清理和工作状态切换。

  1. 01Screeps Memory 是什么:跨 tick 状态、JSON 边界与使用成本Screeps 基础工程 · 8 分钟阅读

    解释Game对象、模块全局变量和Memory的生命周期差异,演示Creep角色状态、版本迁移、对象ID保存和Memory体积控制。

  2. 02Screeps 如何安全清理死亡 Creep 的 MemoryScreeps 基础工程 · 6 分钟阅读

    比较Game.creeps与Memory.creeps,删除已不存在Creep的残留数据,并同步清理受控任务索引、限制日志频率和避免误删其他模块状态。

  3. 03Creep 如何在取能和工作之间稳定切换状态Screeps 基础工程 · 10 分钟阅读

    用 Creep.store 边界和 memory.working 建立稳定两阶段状态:空载取能、满载工作、中间值保持,并正确区分 Store 状态与 harvest() 返回值。

02

LEARNING STAGE

对象与模块

学习通过 ID 恢复对象,并用 require 拆分代码。

  1. 04Game.getObjectById() 怎么配合 Memory 安全恢复目标Screeps 基础工程 · 7 分钟阅读

    把对象ID和目标房间写入Memory,每个tick重新取得实时对象,并区分目标消失、ID损坏和远程房间暂时没有视野。

  2. 05Screeps 如何用 require 和 module.exports 安全拆分代码Screeps 基础工程 · 8 分钟阅读

    把角色行为、Memory维护和房间逻辑拆成Node.js风格模块,统一导出契约、错误隔离、角色分派和global reset后的可重建状态。

03

LEARNING STAGE

高级存储与缓存

继续了解 segments、InterShardMemory、Foreign Segment 与全局缓存的使用边界。

  1. 06RawMemory segments 怎么跨 tick 安全读取和写回Screeps 进阶开发 · 7 分钟阅读

    解释 RawMemory.setActiveSegments 的下一 tick 时序、0–99 ID 与同时激活上限,并提供空内容、损坏 JSON、版本字段和安全写回的完整示例。

  2. 07Screeps InterShardMemory 怎么用:跨 Shard 状态同步、版本校验与过期数据Screeps 进阶开发 · 10 分钟阅读

    使用 InterShardMemory 在多个 Screeps shard 之间交换版本化状态:安全解析本地和远端字符串、控制 UTF-8 容量、识别 writerEpoch 重启与 revision 回退,并用接收方自己的观察窗口判断远端 channel 是否停滞。

  3. 08Screeps RawMemory Foreign Segment 怎么用:公开 Segment、下一 Tick 读取与轮询调度Screeps 进阶开发 · 10 分钟阅读

    使用 RawMemory.setPublicSegments、setDefaultPublicSegment 和 setActiveForeignSegment 安全发布与读取其他玩家的公开 Segment:处理下一 tick 时序、一次一个 Foreign Segment、覆盖式配置、版本校验、轮询调度和不可信 JSON。

  4. 09Screeps 全局缓存为什么会失效:重建、过期与对象恢复Screeps 进阶开发 · 8 分钟阅读

    解释模块顶层缓存与 Memory 的区别,使用按房间 Map、版本号和过期时间缓存 Source ID,并在全局重置、缓存过期或对象失效后安全重建。