异文第二章关卡设计:对读
状态:关卡方案已完成,游戏内未实施。 设计与规则原型验证日期:2026-10-26。
第二章接在现有七张实验卡与门侧铭牌之后,新增 08–14 七张卡 + 一块双面铭牌。 只增加一枚新符号「丙」,含义为镜映;沿用甲、乙与一层框。玩家要逐渐分清: 图案的位置、箭头的朝向、复制的单位,是可以分别处理的三件事。
现有规则以 src/games/yiwen/engine.ts 为准,第一章内容在
src/games/yiwen/levels.ts。本方案中的镜映尚未接入执行器。
1. 本章要发生的发现
第一章让玩家发现「框会改变操作的作用范围」。第二章让这条理解再经受一次检验: 同样一枚新符号,在整张纸上会交换左右位置,在格内只改变图形自身。 随后用同一底稿的不同目标拆开两种效果,再把它们接回旋转和复制。
本章仍然自由选卡、自由运行,没有步数评分,也不按完成数量发放符号。 第二章从新存档也能直接打开;进入本章时,甲、乙、丙与加框全部可用。 第一章保留现有符号盘,两个章节都可随时返回。
预计首次游玩约 15–25 分钟,这是节奏目标,尚未经过玩家实测。 08–10 用相同底稿形成对照;11–12 用另一份底稿比较操作顺序与方向; 13–14 换底稿检查迁移;铭牌检查同一句子能否解释多个例子。
2. 丙的完整语义
下表中的符号名供设计和实现使用。游戏的按钮仍只写「甲 / 乙 / 丙」, 不直接把操作含义印在按钮上。
| 设计记号 | 游戏符号 | 作用 |
|---|---|---|
R |
甲 | 整张纸顺时针转 90°,格子位置与箭头朝向都转 |
D |
乙 | 把整张纸在右侧再接一份,逐行得到原行 + 原行 |
r |
带框的甲 | 每格箭头顺时针转 90°,格子位置不变 |
d |
带框的乙 | 每格在右侧复制一次,空白格也复制 |
M |
丙 | 整张纸左右镜映,每行倒序,箭头同时左右镜映 |
m |
带框的丙 | 每格内部左右镜映,格子位置不变 |
镜映时 > 与 < 互换;^、v、o 与空白都不改变自身形状。
因此丙不会让上箭头朝下,也不是把所有箭头转半圈。
M 的位置映射为 (x, y) → (width - 1 - x, y);m 的位置映射为恒等。
二者都保留纸张宽高、格子数和空白,不裁边,也不扩张纸张。
镜映永远相对于当前纸张的左右方向。仍是一层框,不新增嵌套、颜色、 可选区域或自动补偿。纸张上限继续为 8 × 8,句子上限继续为 8 枚。
丙采用与甲、乙相同的原创笔画方式绘制,笔画不直接画成镜子或翻转箭头; 有框与无框版本共用同一字形,框与已有符号完全同形。
3. 七张实验卡
3.1 底稿与目标清单
下面的 ^ > v < 分别是上、右、下、左箭头,o 是圆点,. 是占位置的空白。
/ 分隔纸张的行,不是指令,也不是纸上的字符。
例如 >o / ^. 表示两行两列,第二行右侧的空白必须保留。
句子从左到右执行。参考解供开发验收,游戏内不展示。
| 编号 | 卡名 | 底稿(逐行) | 目标(逐行) | 一种参考解 | 最短枚数 |
|---|---|---|---|---|---|
| 08 | 新符 | >o / ^. |
o< / .^ |
M |
1 |
| 09 | 原位 | >o / ^. |
<o / ^. |
m |
1 |
| 10 | 只换位置 | >o / ^. |
o> / .^ |
M m |
2 |
| 11 | 先后 | >o. / ^.. |
v< / o. / .. |
R M |
2 |
| 12 | 上下 | >o. / ^.. |
v.. / >o. |
R R M |
3 |
| 13 | 逐格拓印 | ^. / >o |
^> / ^> / o. / o. |
m d R |
3 |
| 14 | 合句 | >o / v. |
.o.o / .o.o / >^>^ / >^>^ |
M d R D m |
5 |
最短枚数只用于校对难度,不转成星级、奖励或通关条件。 只比较完整输出,接受任意等效写法。
3.2 08「新符」——整张纸发生了什么
希望发现: 新符号改变左右关系,也改变横向箭头的朝向。 圆点从右侧移到左侧,上箭头保持朝上,右箭头变成左箭头。 圆点、空白和两种朝向共同排除了「只是旋转」的猜测。
两层提示:
- 「先看圆点到了哪里,再看两种箭头各自的朝向。」
- 「先试一次丙。比较每一行的左右关系。」
典型错误:用甲反复试转。反馈仍是现有输出与轨迹,让玩家自己比较圆点位置; 不额外弹出规则解释。
3.3 09「原位」——框的含义仍然成立
希望发现: 底稿没有变,目标却只改变了一支箭头。 把第 05 张卡发现的范围规则迁移到丙:每格自己的镜映与整张纸的镜映不同。
两层提示:
- 「圆点和空白的位置都没变;两种箭头也没有一起转向。」
- 「比较带框与不带框的丙。框仍然表示分别处理每一格。」
典型错误:用两次带框的甲。它会让上箭头也朝下,当前底稿能直接显示这个区别。
3.4 10「只换位置」——把两种效果拆开
希望发现: 想交换位置,却保持每支箭头原来的朝向,可以先处理整体, 再在每格里抵消箭头自身的变化。两次操作的作用范围必须不同。
两层提示:
- 「目标交换了左右位置,但每支箭头的朝向和底稿相同。」
- 「先用丙交换位置,再用带框的丙修正箭头。也可以试试反过来。」
这里允许发现 M m 与 m M 等效,不把设计答案的顺序写成唯一正确顺序。
连续两个 M 或两个 m 都会回到底稿;可用于主动试验,但不给这种原样返回另设一关。
3.5 11「先后」——转纸与镜映不交换
希望发现: 整体旋转与整体镜映的先后会改变结果。 这次纸张不是正方形,玩家还能用行列数跟踪纸的方向。
两层提示:
- 「对照是三行两列。先让纸张的方向与它一致,再比较圆点的位置。」
- 「比较甲、丙和丙、甲的执行轨迹。本卡需要先甲再丙。」
M R 得到 .. / .o / >^,与目标 v< / o. / .. 明显不同。
这里讨论的是甲与丙的次序;不推广成「任意两个符号都不能交换」。
3.6 12「上下」——用已知规则表达另一条轴
希望发现: 丙只有左右镜映,但把纸先转半圈,再左右镜映,可以得到上下镜映。 目标中右箭头仍朝右,上箭头变成下箭头,能区分上下镜映与单纯转半圈。
两层提示:
- 「这次宽高没变,第一行和第二行交换了位置。右箭头却仍然朝右。」
- 「先让整张纸转半圈,再用一次丙。比较它和只转半圈的区别。」
参考解为 R R M,M R R 也通过。
注意 R M R 会回到一次左右镜映的效果,不会得到上下镜映;
设计说明与提示都不使用「两边各转一下」这种含糊说法。
3.7 13「逐格拓印」——新符号接回复制
希望发现: 先把横向箭头镜映,再按格成双,最后把纸转成纵向排列。 不再复用前三卡的底稿,检查玩家是否能把规则用于另一幅图。
两层提示:
- 「相同图形在上下方向相邻。先回想两种成双方式的差别,再检查箭头。」
- 「带框的丙只修正横向箭头;带框的乙逐格成双;甲把排列转到竖直方向。」
m d R 与 d m R 都通过。镜映和复制在这里可以交换,
不因交换后仍能通过而给出错误反馈。
3.8 14「合句」——两种复制单位同时出现
希望发现: 目标有两层重复:相同行相邻,同时一整段列又出现了两遍。 需要分别使用逐格复制和整张复制,再安排镜映的位置与范围。
两层提示:
- 「先分开看:哪些是相邻的相同格子,哪些是整段图案重复?最后再核对箭头。」
- 「一种写法是:丙、带框的乙、甲、乙、带框的丙。逐步查看两次复制分别做了什么。」
参考轨迹如下;每一处空白都参与下一步:
底稿 M d R D m
>o o< oo<< .o .o.o .o.o
v. .v ..vv .o .o.o .o.o
<^ <^<^ >^>^
<^ <^<^ >^>^
这是本章主要的组合题,不再用更多箭头或更大的底稿提高阅读负担。
d M R D m 也是五枚解。
4. 章末:双面铭牌
4.1 从照读刻痕到解释图例
第一章铭牌展示一句已写好的话。第二章铭牌提供两组底稿 → 拓印的图例, 没有写好的句子。玩家需要写一句话,同时解释两组图例;第三张底稿等待补出拓印。 这块铭牌同样从进入第二章起就可尝试,不检查七张卡的完成数。
它复用本章已经发现的规则,新增的只是「同一句用于多个例子」的检验方式。
| 图例 | 底稿(逐行) | 已知拓印(逐行) |
|---|---|---|
| 一 | >o / ^. |
..oo / ^^>> / ..oo / ^^>> |
| 二 | .v^ / >o. |
..^^ / oovv / >>.. / ..^^ / oovv / >>.. |
| 待补 | o<. / .^> |
游戏内不展示目标;正确输出见下方 |
一种参考句子为 M D R d m r,最短为六枚。
它与 14 的句子不同:两种复制的使用位置互换,末尾还要分别调整箭头。
第三张的输出是:
>>..
^^<<
..oo
>>..
^^<<
..oo
两层提示:
- 「同一句要解释两组图例。先看整段重复出现在哪个方向,再看相同格子怎样相邻。」
- 「一种写法是:丙、乙、甲、带框的乙、带框的丙、带框的甲。两次复制使用不同范围。」
4.2 操作与判定
铭牌占用独立的句子草稿。工作台用「图例一 / 图例二 / 待补底稿」切换观察对象, 三张底稿共用一句话,切换时不能变成三个独立草稿。 每次运行都把当前句子从头应用到三张底稿;轨迹展示当前选中底稿的每一步。 两个已知图例旁分别显示「一致 / 未一致 / 超出纸张」,便于定位问题。 待补底稿显示实际输出,不显示隐藏对照。
「放入当前拓印」在运行后可用。成功条件为:
- 三张底稿均运行完整,没有容量错误。
- 同一句在两个已知图例上的最终输出分别与给定拓印一致。
接受所有满足条件的句子,不比较指令列表,也不依赖玩家当前点到了哪一步轨迹。 第三张用于展示这句话的推断结果,不另加一条玩家看不见的判错条件。 原型验证已确认,在本章六种指令和八枚上限下,满足两个图例的句子对第三张 产生同一输出,因此这里的推断没有多解歧义。
编辑句子后,上次运行的结果和可提交状态立即失效,必须重新运行; 查看旧轨迹不等于改变提交用的最终输出。
现状提醒(2026-11):第一章现有实现是
Yiwen.tsx的output = trace?.[step] ?? input, 提交铭牌时直接比较这个output—— 查看中间轨迹后提交,用的就是当前那一步的输出。 第二章实现时要么按本节改成「始终用最后一步 / 运行结果」,要么先把第一章的提交口径 一并修正;不能照搬现有submitPlate。 放入错误拓印时保留句子,反馈「两组图例还未同时一致。」; 有容量错误则显示该错误,不显示为普通不一致。 成功后展示第三张完整拓印,短句「两组图例使用同一句话。」即可。
5. 后续实施范围
本次交付为设计文档。实施时需要处理下列关联,不把它们提前视为已支持:
| 落点 | 需要的改动 |
|---|---|
src/games/yiwen/engine.ts |
增加 mirror 指令;明确无框镜映位置和图形、有框只镜映图形 |
src/games/yiwen/art.tsx |
增加丙的原创字形;避免现有二选一绘制分支把丙画成乙 |
src/games/yiwen/levels.ts |
保留 01–07 与原铭牌;登记本章七卡、第二铭牌图例及手写目标 |
src/games/yiwen/Yiwen.tsx |
章节切换、按章计数、丙的名称与符号盘、多底稿运行与轨迹、提交失效处理 |
src/games/yiwen/progress.ts |
旧存档迁移、新指令白名单、第二铭牌独立草稿与完成状态 |
src/lib/game-catalog.ts |
在真正交付后更新七张卡与单铭牌的现有介绍 |
tests/unit/yiwen.test.ts |
镜映语义、等效解、独立目标可达性、铭牌多例判定、旧存档迁移 |
tests/e2e/yiwen.spec.ts |
保留第一章路径;新增跨章续玩、共用句子、最终输出提交与窄屏验证 |
章节与卡片只按内容分组,第一章的编号、底稿、目标、铭牌 ID plate 均不改变。
新铭牌使用独立 ID plate-02。各章显示各自的 0 / 7,不会把第二章进度算成
第一章「七张实验卡已完成」。原来的「Demo 到这里结束」在实施后换成章节状态与下一章入口。
存档建议继续使用现有键 yiwen-demo-v1 读取旧记录,内部结构升级到 version: 2:
保留 selected、drafts、completed,把单个 opened 改为 openedPlates: string[]。
读取 v1 时完整保留第一章草稿、完成卡片与所选对象;opened: true 映射成 ['plate']。
读取 v2 时校验三个 rune 名、布尔框标记、八枚上限,以及合法卡片和铭牌 ID。
第二章新增内容不通过清空本地存档来实现。
6. 校对依据与待验收
6.1 已完成的规则原型验证
临时验证器调用现有 engine.apply 执行 R / D / r / d,只额外实现本章定义的
M / m 原型。先运行参考句子,再以广度优先搜索独立寻找最短解,搜索深度为 0–8,
包含全部六种指令,遵守每一步 8 × 8 的限制。
搜索按完整纸张的宽、高与格子内容去重;格子数超过目标就剪枝,因为本语言没有缩小操作。
验证结果:
- 七个底稿都不等于各自目标;表中参考句子全部完整运行并准确命中目标。
- 最短枚数依次为 1、1、2、2、3、3、5,与第 3 节一致。
- 只使用旧四种指令时,七个目标在八枚以内全部不可达。
- 单独移除
M或m后,10 和 14 都不可达,确实需要理解两个作用范围。 - 08/11/12 需要无框丙,09/13 需要带框丙;没有因底稿对称而绕开教学意图。
- 铭牌的共同最短解为六枚;已发现等效写法
D r M R d m,它与参考句同样通过。 - 铭牌用三张输出构成联合状态搜索,避免按前两张去重时丢掉第三张的不同预测。 深度 0–8 共访问 768 个不同联合状态;符合两组图例的第三张输出只有一种。
这些结果验证图案和规则的关系,不代表镜映已写入游戏,也不代表玩家已经理解这些关卡。
6.2 实施后必须验证
- 镜映两次还原;无框与有框都保留尺寸、圆点和边缘空白,不修改输入对象。
- 同一底稿上
R M与M R不同;M m与m M相同;逐格复制与逐格镜映可交换。 - 目标独立手写,不能由参考解运行生成后再拿来验证同一个执行器。
- 铭牌在前两例仅有一个匹配、第三例容量溢出、编辑后未重跑、查看中间轨迹时,都按第 4 节判定。
- 第一章旧存档升级后,七张卡的草稿、已复原状态和原铭牌状态均保留;禁用存储仍可游玩。
- 从新存档直接打开 14 或第二铭牌,无需完成第一章,也无需按提示才能拿到丙。
- 320 / 390 / 768 / 1280 宽度和明暗主题下,逐格图案、共用句子和当前图例身份都可分辨。 三组铭牌图例用切换查看,窄屏无需同时挤下三块完整纸张。
- 至少观察一轮玩家试玩,重点记录:09 是否被误认成转半圈、12 是否误用
R M R、 14 是否能看出两种复制单位,以及铭牌是否理解为三张共用一句。根据结果调整提示与排序。