返回编辑器 →

DESIGN MODEL v2 · SPACE TOPOLOGY · 2026.10.11

空间结构参与评分,完整解法保证可完成。

本版将棋盘地面建成图,再结合身体与洞口摆放计算窄口负荷、绕墙距离、长身体的回转余量和连续空地。相同面积、数量和长度的关卡,可以因空间结构不同得到不同设计分。

原作使用固定关卡配置。已从本地配置核查凹口、阶梯、环岛、双厅窄口、折返通道、侧室、柱阵与独立分区等空间思路;没有取得原作编辑器的造关算法或难度公式。本版模板、生成器和评分独立实现。

1. 空间数学:地面图与局面图分开计算

地面图 G=(V,E):每个可走格是一个顶点,四向相邻可走格之间连边。它回答墙体、房间和通道的结构问题。局面图:每个完整游戏状态是一个顶点,每次合法移动一格是边;它包含身体形状、颜色、冰冻、钥匙和剩余洞口,用于判断可解与求最短步数。地面连通不能代替局面可解。

数学工具计算什么怎样影响难度
割点与小规模顶点分隔Tarjan 找单格割点;再检测横向或纵向只含两格的切片。删除后若第二大区域至少占本连通区8%、且不少于3格,记录为显著窄口。结合两侧身体到同色洞口的最低跨区需求,以及已横跨窄口的身体数量,除以通道宽度。取最大负荷,避免同一走廊多个切口重复加分。
图上的最短距离与最小费用匹配BFS 计算绕墙距离;按颜色用匈牙利算法分配不重复洞口,比较其总成本与曼哈顿距离匹配成本。身体和洞口在墙的哪一侧,比地图外形复杂度更重要。差值越大,墙体带来的绕行越强;同色洞口不能反复当作同一个最近目标。
局部二维空间统计哪些地面格属于至少一个完整可走的2×2方块,再看长身体有多少格落在这类空间之外。同样的通道对短身体与长身体影响不同;按长度加权。这只是局部回转余量指标,不能单独证明某次转弯可行或不可行。
空地连通分量暂时把身体和未使用洞口也视作障碍,计算空地总数、分块数与最大连续空地。20个碎空格与20格完整空地不能等价;最大空地相对最长身体越小,临时停放越受限。真正能否挪动仍由实际规则搜索验证。
局面图上的全局 A*枚举所有身体头尾的合法单步,完整回放碰撞、彩衣、冻结和钥匙。提供有解证书与步数上下界。完成最优性证明才显示最少步数;搜索预算耗尽只表示未确定。

诊断还保留连通区数量、图直径、平均绕行倍率、2×2覆盖率与回路秩 E−V+C。回路可能增加路线选择,也可能提供让路空间,所以不把“回路越多”简单计为更难。

同一个地图也会有不同的空间压力

双厅只有两格宽的门:若每条身体的同色洞口都在本厅,跨厅负荷可以为0;若多条身体必须穿门或已经占住门,负荷会上升。测试使用相同墙、身体、长度和颜色数量,只交换洞口颜色位置,确认空间分发生变化。

2. 参数与空间模板

参数约束
空间模板混合、开阔庭院、凹口与侧湾、阶梯轮廓、十字收腰、环岛绕行、双厅窄口、折返通道、梳齿侧室、柱阵回廊、独立分区。最后一种保留两个独立区域,各区颜色供需必须匹配。
列 / 行 / 有效格数列2–18,行2–24,有效格4–400;含外围墙不超过600格。自动推荐会按模板调整尺寸;关闭推荐后列、行、有效格数全部固定,容不下模板会拒绝候选。
身体 / 长度 / 总节数1–16条,每条2–40节,总计2–350节;总节数位于数量×最短长度与数量×最长长度之间。连续、自避、身体间不重叠。
颜色 / 彩衣外层1–15色且不超过身体数量;彩衣每条额外1–3层,共享原有身体路径。每一层配一个同色目标。
冻结 / 钥匙冻结按累计退出层数解锁;银色1钥匙1锁,金色2钥匙1锁。先取得空间解,再安排合法依赖,最后完整回放。
难度 / 步数 / 预算设计分0–100,默认±7;步数范围约束当前完整解法。候选、快速分支、单身体寻路、精确状态数与精确耗时分别设预算。

当前覆盖机制为彩衣共享路径;独立身体叠放、立交穿越和原作多棋盘联动尚未实现。原作独立分区思路在本版同一地面坐标系内实现。

3. 难度公式

clip(x)=min(1,max(0,x))。七项贡献相加、保留一位小数;总权重100。它是结构设计分,尚未用玩家数据拟合。

指标权重归一化值说明
空间占用18clip((占用率−0.25)/0.60)占用率=(初始身体格+洞口格)/可走格。
身体规模12clip(身体节数/70)同时显示身体数量、均长与最长身体。
完成步数18clip(完整解法步数/100)缩短解法后重新评分,禁止用绕圈凑分。
空间阻挡141−潜在出口上界/身体数量取消冰冻与锁,允许走过自身,但保留其他身体、墙和洞口。
机制依赖12clip(额外层/(数量×0.7)+冻结门槛总和/(数量×5)+(钥匙身体+挂锁身体)/(数量×1.1))只计已经实现并完整验证的规则。
腾挪需求80.55×开局潜在出口为0+0.45×clip(腾挪步数/max(4,身体节数×0.2))解法中的腾挪量不等于最少必要腾挪量。
棋盘空间18sqrt(0.45B²+0.25D²+0.20N²+0.10F²)加权均方根使严重单项约束不被其他低值过度稀释;具体权重仍需试玩校准。
B = clip(最大窄口负荷 / 2)
窄口负荷 = (最低跨区需求 + 横跨窄口的身体数) / 窄口格数
           × min(1, 第二大区域占比 / 0.25)
D = clip((绕墙匹配下界 − 曼哈顿匹配下界) / max(2, 曼哈顿匹配下界))
N = clip(2 × 长度加权的窄空间身体格占比)
F = clip((1 − 最大连续空地 / 空格总数)
         × min(1, 最长身体 / max(1, 最大连续空地)))

窄口与空地指标会相互影响,当前使用分项与阈值保持可解释,不声称它们统计独立。后续应以首通耗时、失败次数、提示使用和腾挪次数校准权重,特别要区分操作难与思考难。

4. 生成、筛选与固定主线

条件检查→ 空间模板与尺寸→ 连通区域检查→ 长身体与洞口→ 空间求解→ 机制依赖→ 完整回放→ 七项评分→ 精确搜索与再次筛选→ 去重与认证
  1. 模板按公式生成新坐标,镜像与边界小变化增加布局变化;仅移除边界格并保持预期连通区数量,直到达到精确有效面积。不复制原作坐标。
  2. 从长到短放置自避身体;同色目标避开初始端点邻格,并放在匹配连通区。
  3. 快速搜索寻找退出顺序与让路动作。失败候选丢弃;成功后安排彩衣、冰冻与钥匙依赖,并调用实际游戏规则回放。
  4. 解法按完整状态去掉绕圈;检查难度、步数、腾挪条件。全局搜索缩短解法后再次检查,未达请求范围不冒充合格候选。
  5. 编辑器固定参数绝不自动放宽。主线批量构建可在多次失败后更换空间模板,同时保留该关身体规模、空格与教学要求。每25关保存完整进度,允许续跑。
  6. 主线2000关已按本版模板重建,玩家进入关卡时读取固定布局。前期仍引导头部、尾部、连续转弯,12/18/24/30关分别教授彩衣、冻结身体、冻结洞口与钥匙。

5. 可解证书与最少步数

一步是某条身体一端移动到相邻格;一次拖动可能包含多步,进洞动画不计步。所有认证关卡都有完整合法动作序列,最后要求全部身体完成、全部洞口使用。任何编辑会使旧证书失效,导出前再次回放。

状态依据可导出
已验证有解完整合法序列回放成功;生成批次还须满足指定范围。是
已证明无解连通区颜色供需不匹配,或全局搜索穷尽全部状态。否
预算内未确定达到状态或时间上限,没有完整解。否;不等于无解
有解但未达范围解法正确,设计分或步数不符合请求。仅可查看与试玩,不进入合格批次

A* 的可采纳下界也已经纳入墙体。按每种当前外层颜色,为身体与不重复的剩余同色洞口做最小费用匹配:

成本(身体w, 洞口h) = max(1, min(头到h的绕墙距离, 尾到h的绕墙距离) − 1)
下界 = 各颜色最小匹配成本之和 + 所有剩余内层数
上界 = 已经完整回放成功的解法步数

下界保留静态墙体,忽略其他身体、冰冻、锁和活动洞口的临时阻挡,所以是必要成本而非完整解法。每层至少需一次移动。所有待搜索状态的成本下界都不小于已知完整解时,才证明最优;否则显示下界—上界与“最少步数未证明”。小局面用独立穷举BFS校对,匹配算法用独立穷举分配校对。

6. 编辑、试玩与批量接入

  1. 在编辑器选择空间模板与目标难度;自动推荐按模板分配尺寸。关闭推荐后可固定所有布局与机制参数。
  2. 点击对象改属性,石块工具修改空间结构,画身体工具按相邻格重新绘制;支持导入JSON和主线1–2000关。
  3. 验证后查看窄口负荷、绕墙下界、最大连续空地、七项贡献和完整解法;回放或进入游戏试玩。
  4. 导出认证JSON保存批次。浏览器草稿与同源试玩不改变主线进度。
npm run design:levels -- --target 70 --count 10 --seed 123 --out output/batch.json
npm run design:levels -- --spec my-spec.json --out output/custom.json
npm run design:levels -- --verify output/custom.json --out output/certificate.json
npm run check:designer
npm run generate:levels -- --resume

自定义JSON可设置 topology: "twin" 等模板ID;其余为 courtyard、notched、stepped、cross、island、winding、comb、pillars、split、mixed。浏览器与命令行共享相同模块。下载本版认证样本。

源码:designer/topology.js 图、匹配与空间评分;templates.js 模板;generator.js 生成与认证;analysis.js 规则与总分;exact.js 全局最短搜索。完整主线图鉴及原作空间依据保存在本地设计报告。

本版分档认证样本

目标10、30、50、70、90各两关,种子20261011;容差±7。候选预算6000,高档16000;精确搜索2000状态、10秒。本轮10关全部通过。100分档尚未完成稳定生成验证,不能宣称所有档位或任意参数都在预算内成功。

目标设计分模板完整解法最少步数
1014.1独立分区3步3步
1013.2环岛绕行7步7步
3034.6折返通道22步22步
3025.3双厅窄口19步19步
5054.2折返通道71步未证明;下界57
5049.4双厅窄口39步未证明;下界36
7072.7折返通道98步未证明;下界87
7063双厅窄口54步未证明;下界29
9087.7双厅窄口128步未证明;下界87
9087.4双厅窄口112步未证明;下界82

7. 目前的边界