type
Post
status
Published
date
Jul 15, 2026
slug
03-seven-games-story-retention-loop-155d040f-d37e-42c9-a2c1-f088a3aded8d
summary
从四个平行小游戏到七游戏轮换、主线事件和伴灵记忆,拆解方寸专注的留存设计。
tags
游戏设计
确定性随机
儿童产品
category
技术分享
icon
password
系列导航:上一篇 · 下一篇
四款小游戏上线后,重复结构很快就被看穿了。问题不在功能数量,一程冒险的节奏已经可以被提前猜到。
数字舒尔特、成语寻踪、诗句归位和目光追踪各自都能玩,但一程冒险始终是熟悉的四件事重新排队。再加几张背景图,只会把内容消耗得慢一点。要让孩子愿意回来,系统需要同时提供三种变化:操作方式不同、故事有后续、上一次的选择留下一点痕迹。
于是玩法从四种扩到七种,冒险也从“路线选择加关底”改成了一个有记忆的故事调度器。
七项自由练习的桌面端练习册
七项自由练习的桌面端练习册

七种玩法不做七套系统

游戏
主要训练
核心操作
数字舒尔特
视觉搜索与注意转换
在 3×3 到 5×5 方格中按指定顺序找数
成语寻踪
选择性注意与语义线索
根据提示按顺序找出四个字
诗句归位
工作记忆与顺序组织
把打乱的诗句片段按原文点回去
目光追踪
平滑追踪与视线跳转
跟随纸鸢,或回忆萤火的起止落点
画中寻物
场景扫描与目标辨认
在画面中找出卷边列出的物件
残卷复原
空间记忆与整体观察
两次点击交换切片,复原同一张场景图
山径推演
路径规划与顺序控制
按山帖经过地标,避开阻断地形并控制脚力
三款新游戏继续使用同一个 `GameShell`、暂停层和结果契约。它们在冒险里可以接收 seed、场景图、规则变体和伴灵修正,在自由练习里则只需要难度与完成回调。
这让“玩法不同”停留在正确的层级:生成器和交互不同,完成后的记录、掌握度与推荐仍然一致。

画中寻物:随机摆放也要像一张构图

画中寻物的三个难度分别是 `4+2`、`6+2` 和 `8+2`,前一个数字是目标,后一个是干扰物。每卷有五个专属物件,另有五个通用物件,总共 30 张透明 WebP。
生成器不会在整个画面上直接取连续随机坐标。它先准备 20 个稳定槽位,洗牌后再给坐标加入小幅扰动和缩放。这样既保留变化,也避免物件互相盖住、贴边或挤在同一区域。
点错目标、干扰物或背景都会记一次错误,但不会让关卡失败。这里的目标是练习扫描策略,不是考验孩子能否在规定错误次数内通关。

残卷复原:不需要第二套图片资源

拼图直接复用当前场景图,通过 CSS `background-position` 把同一张位图切成格子。启蒙是 2×2,并一直保留完整预览;进阶是 3×3,预览四秒;挑战是 4×4,预览两秒。
生成器先做可复现洗牌,如果恰好得到完成态,就把顺序循环移动一格,保证开局不是“什么也不用做”。孩子每次选择两个格子交换。若交换后正确位置的格子数没有增加,系统记录一次错误,但仍允许继续尝试。
这种评分方式比“只要不是标准解就算错”更温和,也更贴近实际策略:一次交换有没有让画面更接近完成。

山径推演:先在引擎里证明它可解

山径推演是三款新玩法里最复杂的一项。低难度使用 5×5 地图和两个地标,中高难度使用 6×6,分别经过三个和四个地标。
地形有明确成本:石径、木桥消耗一点脚力,密林、山坡消耗两点,溪涧和断崖不可通行。孩子必须从山脚出发,按顺序经过“听风松”“问路碑”这类地标,最后抵达山门。提前碰到未来地标或终点会收到反馈,但不会破坏当前路线。
山径推演的地形规划界面
山径推演的地形规划界面
地图生成时,系统先连接起点、所有有序地标和终点,得到一条内部解;这条解上的格子会被保护,之后才放置溪涧、断崖和高成本地形。最后再按每一段的当前可用地形计算加权最短脚力。
内部 `solution` 只用于测试和参考成本,界面从不渲染它。试玩早期曾经把路径画出来,结果孩子只需要沿线点击,规划游戏当场变成了描线游戏。隐藏解以后,地标顺序、地形成本和分支才真正有意义。

用最近两程,约束接下来的三程

七种游戏如果只做随机抽取,短期内仍然可能连续重复。系统因此只保留最近两次普通冒险的游戏集合 `recentGameRuns`,每次三项。
选择新一程时,调度器先找最近两程都没出现的游戏,再按“最久未出现”补齐;同样久的项目用 seed 打散。这个规则保证任意连续三次普通冒险都能覆盖全部七种游戏,同时每一程内部没有重复。
卷末终章使用另一条规则:固定加入本卷的标志性新游戏,再选一个最久未出现的新游戏和两个最久未出现的旧游戏,共四项且互不重复。终章不写入普通三项历史,避免破坏下一程的覆盖约束。
这比权重随机多了几行代码,却把“感觉好像有变化”变成了可以测试的性质。测试会生成连续计划,逐个滑动三程窗口,断言七个 ID 全部出现。

故事不是贴在关卡前后的对白

当前故事内容包括:
  • 5 条卷级故事弧
  • 24 个场景主线章节
  • 34 个可重玩事件
  • 12 条伴灵共同记忆,每条两段
  • 14 个有立绘或叙事身份的角色
每个场景第一次完成时播放完整主线。重玩时,调度器按固定优先级选择内容:先接上已经出现过的连锁事件,再找未见普通事件,然后是当前伴灵的下一段记忆、稀有事件,最后才做确定性重混。
故事计划和游标都存进活动 run。离开页面后再回来,角色、台词、选择、游戏顺序和当前 encounter 不会重新抽取。对话历史最多保留 40 条,跳过剧情也会先把未读台词写进历史,因此“跳过”不是把内容从存档里抹掉。
桌面端全屏故事剧场
桌面端全屏故事剧场

选择有回声,但没有坏结局

每个故事选择都保持道德中性。例如,孩子可以选择先停下来观察,也可以先向前试探。系统记录的是行动倾向,不是“善恶分”。
一个选择最多生成一条持续一到两程的 echo。它可以换一句后续台词、调整一个 encounter rule set,或者让某个连锁事件更早出现。完成一程后,旧 echo 的剩余次数减一;最多只保存四条。
echo 不影响这些内容:
  • 场景是否解锁
  • 奖励和收藏是否获得
  • 主线是否完成
  • 结局是否可见
  • 自由练习是否开放
这条限制是刻意的。儿童叙事里,“系统记得我”很有吸引力,“我三天前点错一个选项,所以永远少一件东西”则没有必要。

试炼也不能改写故事结果

默认故事模式不会失败。第一卷完成后可以在设置中开启试炼,卷末 encounter 会受到墨痕、护盾和伴灵效果影响。即使试炼超出墨痕上限,系统也只重置本次终章的四个 encounter;已经做出的故事选择、对话历史和已解决的卷内事件全部保留。
换句话说,策略层可以改变挑战过程,不能成为叙事裁判。
我现在更愿意把“留存”理解为三件具体的事:下一次操作不完全一样,上一次旅程留下可见痕迹,还有一个尚未说完的角色故事。签到、能量和红点也能让指标发生变化,但它们不是这个产品需要的答案。
最后一篇会写这些系统怎样被磨成一个可以公开访问的成品:生成式素材为什么要先做风格母版,BGM 为什么从“几乎听不见的合成器”改成五套国乐音色,以及测试、响应式和 Cloudflare 部署里真正费时间的部分。
方寸专注(完):把原型磨成成品,图像、国乐、响应式与 Cloudflare方寸专注(二):用纯函数状态机撑住一座本地优先的儿童冒险
Loading...