1. 本册用途#
这一册管什么:框选 / 复制 / 剪切 / 粘贴、跨楼镜像、蓝图库与蓝图书、粘贴选项浮窗、导出导入、以及与 Steam 创意工坊的衔接。
这一册不管什么:蓝图里的内容本身(房间见 SYS-02、核心筒与承重柱见 SYS-01);创意工坊的接入与治理(见 BIZ-02);界面框架与输入规范(见 SYS-11);悬空结构的合拢规则(见 SYS-02)。
2. 档期与优先级#
| 项目 | 内容 |
|---|---|
| 档期 | P1 |
| 被谁依赖 | SYS-11(交互入口)、BIZ-02(创意工坊分发)、悬空结构的跨楼镜像 |
| 上游依据 | SYS-01 / SYS-02 / SYS-15 |
3. 机制规则#
本系统的核心规则。本节是蓝图与编辑工具的唯一真值源。
3.1 为什么需要它#
网格化(见 SYS-15)之后,玩家在 40 格宽的楼层上逐格摆放房间,点击量会迅速失控。
更关键的是悬空结构(见 SYS-02)要求「一侧建一半、另一侧镜像复制」——
没有镜像与蓝图能力,这个玩法在操作上不成立。因此本系统不是便利功能,而是某些玩法的前置条件。
3.2 编辑操作#
| 操作 | 作用域 | 说明 |
|---|---|---|
| 框选 | 任意矩形区域 | 在剖面视图内框选;可跨层,一条选区可同时覆盖多个楼层高度。选择以格为单位 |
| 复制 | 选中区域 | 复制区域内全部内容:房间、核心筒、承重柱、悬挑构件。生成一个蓝图对象 |
| 剪切 | 选中区域 | 复制 + 清空原区域(清空同样受结构校验约束——若清空后楼层失去支撑,拒绝执行) |
| 粘贴 | 目标位置 | 按粘贴选项(§3.5)挑选内容后落位;落位做结构可行性校验 |
| 镜像粘贴 | 目标位置 + 镜像轴 | 水平镜像后落位。服务于悬空结构「另一侧」与对称布局 |
3.3 存储与粘贴是两件事(v2.2 核心口径)#
复制时全量存储,粘贴时按需投影。
复制生成蓝图时,区域内的一切都被记录——房间、核心筒、承重柱、悬挑构件、格坐标。 蓝图是一份完整快照。而粘贴是一份投影:玩家通过粘贴选项决定这次只贴哪几类内容。 这样同一张蓝图可以用于不同意图——贴全套、只贴房间、只贴柱网,都不需要重新框选。
3.4 粘贴的宽容模式(v2.2 明确)#
粘贴校验不因「与目标不匹配」而拒绝。具体要求:
- 允许覆盖:目标位置若已有内容,按粘贴选项直接覆盖,不弹「位置被占用」的拒绝。
- 允许不对称:悬空结构两侧长度可以不一致——多出一格是合法状态,不是错误。
- 覆盖必须可见:落位前显示半透明预览,将被覆盖的部分高亮标红,并给出覆盖计数。 “允许覆盖”不应变成“手滑删掉一层”。
- 唯一的硬拦截:结构不可行(超限、失去支撑、越出地块)仍然拒绝,并给出诊断。这与覆盖无关。
3.5 粘贴选项浮窗#
粘贴时,界面右上角出现一个浮窗,内含可勾选项:
| 勾选项 | 含义 |
|---|---|
| 房间 | 粘贴房间及其布局 |
| 核心筒 | 粘贴核心筒(含分段与多筒) |
| 承重柱 | 粘贴承重柱网及其级别 |
| 悬挑构件 | 粘贴悬空结构的半侧体量 |
| 地面用途 | 粘贴公园 / 广场等地面用途标注(若选区包含地面层) |
默认全选。浮窗在粘贴前一直可见,勾选变化即时反映到预览上。 浮窗位置固定在右上角,不遮挡选区——这是为长距离拖拽粘贴所做的让步(选区常在视图左下,浮窗在右上,二者不重叠)。
3.6 镜像#
v2.2 只做水平镜像。理由:它是悬空结构「两侧各半」的刚需,而垂直镜像与旋转在本作的空间语义里几乎没有使用场景(楼不会倒过来盖)。
镜像的基准点按以下优先级取:
- 若选区落在某塔内且该塔有核心筒 → 以核心筒中轴为镜像轴
- 否则若该塔有地基 → 以地基中轴为镜像轴
- 否则以选区自身中轴为镜像轴
以核心筒为中轴的意义在于:两侧建完再合拢时,镜像过去的体量能与对侧自动对齐,不需要玩家手工微调格数。
3.7 蓝图库与蓝图书#
蓝图库是本地的蓝图集合,形态参考 Factorio(异星工厂):
- 蓝图:一次框选存储的产物,含名称、图标、格坐标快照、内容清单
- 蓝图书:蓝图的分组容器,可嵌套;一本书可以是一整套生产区的蓝图
- 取用:从库中选中蓝图 → 光标带蓝图 → 在目标位置落位
- 管理:重命名、换图标、移动、复制、删除
- 导出 / 导入:蓝图可导出为字符串(含完整快照),在玩家之间传递
3.8 与创意工坊的衔接#
蓝图库与 BIZ-02 的创意工坊生态天然衔接:蓝图可以发布为工坊物品,也可以订阅他人蓝图。
治理边界沿用 BIZ-02:蓝图不得修改全局唯一系统(时间、财务口径、存档格式)。
4. 参数与数值#
蓝图系统本身不引入玩法数值(它不产生收入与成本)。下表为容量与限制口径。
| 项 | 建议值 | 说明 |
|---|---|---|
| 单张蓝图最大选区 | 整塔全高 × 全宽 | 不设人为上限;超过内存阈值时提示分段 |
| 蓝图库容量 | 本地 500 张 / 蓝图书 50 本 | 软上限,超出提示归档 |
| 导出字符串长度 | 随内容 | 压缩后存储,与创意工坊物品上限对齐 |
| 粘贴覆盖的撤销栈 | ≥ 20 步 | 覆盖是破坏性操作,须支持撤销 |
| 镜像轴容差 | 0 格 | 镜像必须精确;不做“近似对齐” |
5. 数据字段#
蓝图对象与蓝图书的 Schema。跨系统共享的基础容器见 TECH-03。
Blueprint { // 一张蓝图
id: String,
name: String,
icon: String, // 图标资源路径
origin_ref: String, // 镜像基准参照:core_tube:<id> / foundation:<id> / self
size: { w: int, h: int }, // 选区尺寸(格)
cells: Array[CellSnapshot], // 格坐标快照(相对 origin_ref)
manifest: { // 内容清单——供粘贴选项过滤
rooms: int,
core_tubes: int,
columns: int,
overhangs: int,
ground_uses: int
},
tags: Array[String],
created_at: String,
version: String // 全库版本号,用于导入时的兼容判断
}
BlueprintBook { // 蓝图书
id: String,
name: String,
entries: Array[String], // Blueprint.id 或子书.id
parent: String // 支持嵌套;根为 null
}
CellSnapshot { // 单格快照
dx: int, dy: int, // 相对基准的格偏移
kind: String, // room / core_tube / column / overhang / ground_use
payload: Dictionary // 按 kind 解释;如 room 存 template_id 与跨层高度
}6. 边界与不做的#
不作蓝图内的脚本化(纯数据);不做云同步(本地 + 创意工坊两处即可);不做数字键快捷取用;不做跨存档自动迁移。
完整的「不管什么」见第 1 节;相邻系统的职责划分见第 7 节。本节是防止分册无边界膨胀的关键——任何新需求如果落在这里,一律拒绝。
7. 相邻系统接口#
本系统的依赖关系以 IDX-03 为准。
| 方向 | 对象 |
|---|---|
| 上游(本册依赖) | SYS-15 格坐标与全域坐标系;SYS-01 承重柱与核心筒;SYS-02 房间与建造校验 |
| 下游(依赖本册) | SYS-11 交互入口;BIZ-02 创意工坊分发;SYS-02 悬空结构的跨楼镜像 |
SYS-xx,不复述对方内容。8. 待办与风险#
TECH-03 对齐(尚未定稿);② 粘贴覆盖的冲突高亮规范待补;③ 悬空结构「两侧合拢蓝图」的镜像基准点需在悬空结构定稿后回填。