下载 App

《忆如泉涌》开发日志 #02:涌现是怎么被"测"出来的

修改于10/2012 浏览综合
TapTap
horizontal linehorizontal line
上一篇日志里我立了个 flag:涌现好不好不能靠感觉说,得看数字。 这一篇就是来还债的。
这两天的进度:
  1. 舒尔特方格从文档变成了能跑、能点、能计时、能上榜的完整玩法;
  2. 新增了第二个主玩法色彩辨识——它把"涌现"这个词从抽象概念变成了玩家能直接感知的东西;
  3. 搭了一套无头断言测试,把"手点很难验"的规则边界全部自动化。
下面按顺序讲。
horizontal linehorizontal line

一、涌现的第二种形态:让规则自己制造冲突

如果说舒尔特方格的涌现来自难度的随机分布,那色彩辨识的涌现来自规则内部的冲突。
看这张实机截图。屏幕正中间是一个字:“黄”。但它显示成蓝色。
规则只有一句话:看字的颜色,不看字的意思,点对应的色块。
这一句话制造了一个非常经典的认知冲突——斯特鲁普效应。你读到"黄"字的那一刻,大脑会自动激活"黄色"这个概念;但你的任务要求你忽略它,去报告字体的实际颜色。两条通路打架,反应时间就会被拉长。
这个冲突不是我们额外加的系统,是"字"和"颜色"这两个本来独立的属性,被规则强行绑在一起后自己涌出来的。 我们做的只是把它们叠在一起,剩下的交给玩家的大脑。

为什么选这五个颜色

红、黄、蓝、绿、白。看起来随便选,其实有讲究:
  • 五个选项固定从左到右排列,整局不打乱位置。这样玩家熟悉之后,手指可以形成肌肉记忆,把注意力全部留给"判断"这一步;
  • 白色必须放进选项池。如果只有四个彩色,玩家可能靠"排除法"蒙——看到字是红的、字色不是红,就从剩下三个里猜。加入白色之后,选项池和字义池完全重合,排除法失效,只能真的去看颜色;
  • 每段五种正确答案各出现固定次数(一段各 2 次、二段各 4 次、三段各 6 次)。这保证了不会出现"整局答案全是红"这种偏科题面。

一条容易被忽略的约束

生成题目时有个细节:相邻两题不能出现完全相同的"字义 + 字色"组合。
原因是玩家在快速作答时,靠的是瞬时视觉记忆而不是逐字阅读。如果连着两题都是"蓝字写黄",玩家会以为自己这题没换,产生"卡住"的错觉。所以生成器会在遇到重复组合时重选字义,让每一题在感知上都确实是新的。
但正确答案本身可以连续相同——连续两题都该点蓝色完全允许。因为如果正确答案也不许连续,玩家反而能靠"这题肯定不是蓝"来猜。
一条约束保护感知,另一条约束禁止规律。 这两条方向相反,但目的都是同一个:让涌现出来的东西真的是"颜色判断能力",而不是"背规律"或"被晃花眼"。
horizontal linehorizontal line

二、把"涌现"测出来:5757 项断言

上一篇我说要"抽样验证一千张题面的难度分布"。实际做下来,比抽样更进一步——我写了一套无头断言测试,直接跑真实的生成器和判定逻辑。
在命令行跑一遍:
raw=PASS  lua=0  res=0  engine=0
test_result: PASSED
assertions: {'total': 5757, 'passed': 5757, 'failed': 0}
舒尔特方格:5757 项断言全部通过。
色彩辨识那边:
test_result: PASSED
assertions: {'total': 136, 'passed': 136, 'failed': 0}
这些断言覆盖的正是"手点很难验"的部分:
类别验的是什么
随机约束1,2,3、3,2,1、2,1,3 全被拒绝;1,2,4 允许;斜向不误判;跨行首尾不误判
时间边界恰好 10.000 秒成功、10.001 秒失败,五个段位逐一验过
高亮语义0.999 秒仍亮、1.000 秒熄灭;同格 0.6 秒后重点要刷新到 1.6 秒
计时单调性人为把时间源往回拨,单调值不许变小
点击链路用真实指针事件从屏幕坐标打到数字格,验证进度真的推进了
最后一条我觉得最值得说:测试不是直接调 HandleCellPress(),而是构造一个真实的 PointerDown 事件,用屏幕坐标去砸格子。 因为"逻辑函数调对了"和"玩家手指点下去真的有用"是两回事——中间隔着 UI 布局换算、命中检测、缩放这几层。只有走完整链路,才能证明点击是通的。
顺便说一句,跑这个测试还顺手抓到一个测试脚本自身的 bug:有一处对 table 数组直接做了 table.concat,报 invalid value (table)。断言本身全过,是辅助代码写错了。已记录待修。
horizontal linehorizontal line

三、涌现的边界,必须靠断言守住

涌现最怕的一件事是:规则看起来对,但边界上漏了。 漏一个边界,玩家的成绩就不再反映能力,涌现就退化成运气。
所以那些"刁钻"的边界我全部写成了断言:
时间边界
  • 一段 9.999 秒 → 成功
  • 一段 10.000 秒 → 成功(恰好等于限时)
  • 一段 10.001 秒 → 失败
这三个点如果只靠手测,几乎不可能稳定复现——人手根本按不准 10.000 这个瞬间。但断言可以在毫秒级精确构造,每次都验。
高亮边界
  • 第 0.999 秒 → 还亮着
  • 第 1.000 秒 → 熄灭
  • 0.6 秒时再点一次同一格 → 截止时间刷新到 1.6 秒,不是累计成 2 秒
生成边界
  • 连续生成 11 次 5×5,如果全都一模一样 → 判定为"疑似固定题面",测试失败
最后这条是专门防假装随机的。如果哪天有人图省事写了个固定题面循环,这条断言会立刻报警。
horizontal linehorizontal line

四、色彩辨识的实机问题:字被"撑没了"

这里记录一个真实的 bug,因为它很典型。
色彩辨识刚做完的时候,在部分设备上出现了一个诡异现象:题目区整片空白,只剩下面那行"看字色,不看字义"的提示。
查下来原因很明确:
公共的 Metrics 模块只按视口宽度缩放。在横屏或者高分辨率竖屏下,它会把题目字号算到几百像素。而这么大的字号,在部分设备上根本无法光栅化——文字直接不显示了。
修复方式:
  • 挑战页不再用公共 Metrics,改成同时受视口宽高约束的本地尺寸集;
  • 题目字号设硬上限 160px;
  • 色块尺寸按宽度五等分,且不超过视口高度的 16%,保证五个选项永远完整可见;
  • 题目面板用弹性布局占满剩余空间,其他行设 flexShrink = 0,防止被压扁。
在横屏(800×600)和竖屏(469×1000)两种视口下截图复验,题目单字正常着色显示,连续作答不再空白。
这个 bug 的教训是:字号不能只跟着宽度走。 涌现需要玩家看得见字——字都没了,什么涌现都谈不上。
horizontal linehorizontal line

五、涌现需要"干净"的计分

两个玩法都接上了排行榜,而它们的排序规则故意不一样:
玩法排序依据
舒尔特方格完成用时(越短越好)
色彩辨识错误次数优先,用时次之
为什么色彩辨识要按错误次数排?
因为它测的是干扰抑制能力。一个人可能手速很快但一直点错,另一个手速稍慢但一次不错。如果只比用时,前者反而排前面——那涌现出来的就不是"抗干扰能力",而是"手速"。
所以色彩辨识的通关门槛也定得更严:错误次数必须小于 3。达到 3 次错误,即使在限时内做完也判失败。
这个门槛的意义在于:它把"随便乱点"这条路堵死了。 如果错了也能过,玩家就会变成疯狂连点,不再真的去看颜色——那涌现就彻底消失了。
计分上还有个实现细节:平台的云变量只能按单个整数排序,但色彩辨识需要按"(错误次数, 用时)"这个二元组排。解决办法是编码成一个整数:
score = errors * 1000000 + ms
用时上限 30000 毫秒,远小于 1000000,所以编码不会溢出、解码也能还原。这样单整数排序就等价于"先比错误次数、再比用时"。
horizontal linehorizontal line

六、当前状态

项状态
舒尔特方格✅ 实装完成,5757 项断言通过
色彩辨识✅ 实装完成,136 项断言通过
主菜单双玩法入口✅
排行榜(两玩法独立)✅
本地存档 + 待提交补交✅
多分辨率适配✅ 已验 10 种视口
两个玩法都跑起来了,涌现也真的能被玩家"感觉到"了。但还有两件事没做:
  1. 色彩辨识测试脚本里的 table.concat bug 要修(断言本身没问题,是辅助代码);
  2. 真实设备上的手感验证——断言能证明逻辑对,证明不了"点起来爽不爽"。这个只能上手玩。
本文为《忆如泉涌》开发日志第 2 篇,记录 2026-10-18 的实装与验证进展。
猜你想搜
聚光灯游戏创作挑战 开发日志
00:34
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!截图
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!
- 人类曾因掌握元素合成技术而一度辉煌,又因滥用元素能量而逐渐从内里衰败。 - 30世纪80年代。社会文化充斥着激进乐观主义与庞大机械美学,在这里,污染和能源共生,幸福与痛苦并存。官方广播和宣传画里依旧在宣扬“科学将战胜一切”、“元素能量将再造新农田”的口号,而世界主城却已经因为污染过度而濒临崩溃、空间挤压严重。为了寻找新的生存空间与无污染能源,官方启动了“重构拓荒计划”。 - 玩家将作为前线拓展
18 赞
6 回复
《卡牌工业》开发日志 01|从“涌现”到产线对打截图
《卡牌工业》开发日志 01|从“涌现”到产线对打
大家好,我们正在用 Godot 做一个暂名《卡牌工业》的游戏。目前已经跑通了最小的生产与战斗循环,也做了两轮迭代。这篇先记录一下:面对“涌现”这个题目,我们讨论过什么,又为什么最后收敛到卡牌和工厂。 第一步:头脑风暴,涌现可以是什么? 刚看到“涌现”这个题目时,我们的想法几乎朝每个方向散开了。塔防、物理搭建、探索、解谜、经济系统、叙事,甚至增量游戏,都能让简单规则在玩家的操作中长出新的结果。再想下
1 回复
【童谣镇】聚光灯第二次开发日志截图
【童谣镇】聚光灯第二次开发日志
开发进度: 美术 1、主角人物立绘已细化完成 2、所有NPC的QQ人形象与呼吸动画已设计完成 3、大部分UI界面已设计完成 4、面包房建模与树屋建模以及基础房屋、路灯、树木模型已完成。 5、制作过场动效,制作通用动效材质ing 6、广场资产替换、永续桥和植被的资产替换、房屋资产替换,河流制作 7、学校模型的材质完成 8、石墩子、小道具模型制作ing 9、NPC正比胸像绘制ing 策划 1、任务系统
11 赞
10 回复
00:10
群迹·上取其下,下取其上截图
群迹·上取其下,下取其上
#聚光灯gamejam开发者日志 向大家汇报一下今日进度,目前在和蚁群的默认移动算法进行斗智斗勇。或许是我的AI对蚂蚁有别样的理解,其实最初写出的方案更接近于围绕着恒星公转的行星。 哦我还以为文章里可以插入多支视频视频,想要展示一些其它的运动方式,可惜了。那么就简单在上方传一个比较典型的,有点类似于蟑螂的运行方式。 目前仍在解决蚁群的随机运动,和玩家可操纵性之间的平衡问题。以及如各位所见,目前的
4 赞
1 回复
00:30
《失心》游戏开发者日志01|游戏UI迭代及实机演示截图
《失心》游戏开发者日志01|游戏UI迭代及实机演示
进入《失心》之前,玩家首先看到的是我们工作室 UNLOOK 的标识。我们将原来的标识转成 SVG,并让其中的红色瞳点转动、观察,再逐步显露完整字形,希望这个短暂的开场能带出一点好奇和不安。 这次《失心》的开局 UI,我们围绕小灵通(因为游戏的主要交互道具就是小灵通)做了几轮调整,希望玩家从打开游戏开始,就能感受到故事里的年代和气氛(故事年代背景为2000s)。 早期版本先确定了一个方向:把菜单放进
15 赞
10 回复
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合截图
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合
大家好,我是一个人报名了 2026 聚光灯 21 天游戏创作挑战 的独立开发者。今年主题公布那一刻我就笑出了声——涌现。因为我已经想做这个游戏很久了: 《气味之城》:你不是猫神,你只是一只猫。 先说一个所有养猫人都懂的事实:你永远无法"教会"一只猫任何它自己不想学会的事。但你家猫可能自己学会了——听见冰箱开门就瞬移到厨房;你心情不好时过来踩奶;凌晨三点准时在你身上练马拉松。没人教过它,这些行为是它
3 赞
6 回复
00:07
雨天決行 开发者日志02-人工智能的自我修养截图
雨天決行 开发者日志02-人工智能的自我修养
又和大家见面啦!第二篇日志,说实话一开始不知道该怎么编排,但团队里惊喜的成果越来越多,我们已经迫不及待把更新的内容端上来给大家啦!那么事不宜迟,快来看看都有什么新情报吧ദ്ദി˶ー̀֊ー́ )✧ 一.美术(重磅升级) 以主美小为的生命力作为燃料(bushi)本次美术组取得了大进程!首先是各个ui界面的优化和细化,上次大家看到时还只是初具雏形的草稿,现在大多都完整起来了哦! 同时,随着配色的补全,手
43 赞
36 回复
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?截图
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?
大家好啊,我是官方小编,一位还在学校的独自开发的苦逼带学生 这次算是第二次正式参加GameJam,而这回的比赛主题是【涌现】 嗯…老实说,一开始我还真只是从中文语义上来看,理解成“大量的出现”,直到询问ai哦哦哦我这就才想起来还有英文的“整体大于部分之和”意思来着 说起这个主题的意思,立马想起的类 吸血鬼幸存者 ,或者是 文明 系列的各种爆怪,爆兵的设计,即大量的出现敌人或者单位 而从第二个
4 赞
4 回复
开发者日志#01:涌现!! 披着科幻外衣的涌现式增量游戏!!!!截图
开发者日志#01:涌现!! 披着科幻外衣的涌现式增量游戏!!!!
随着Game Jam 主题公示,我们团队立马着手维持了三天的激烈讨论!决定做一个披着科幻外衣的蚂蚁农场以boids算法为灵感的涌现式增量游戏!!! 至此,方案敲定,我们团队将开发一个可升级的自主群体模拟,并且初步规划了玩家游戏时的体验流程: (1)阶段1(开局30s,触发痛点,会有一次提升,但是游戏仍然艰难):一张地图分布着资源点和仓库,玩家此时只能徒手采集资源点的矿石拖入仓库,矿石可以造机器人;
14 赞
7 回复
00:07
首曝!来《灵栖工坊》探索灵魂和魔法涌现的故事~【开发日志01】截图
首曝!来《灵栖工坊》探索灵魂和魔法涌现的故事~【开发日志01】
【游戏介绍】扮演魔女栖栖,从魔女之家出发,去不同的世界结识不同的友人,学习和组合各种魔法,开办自己的工坊,创造、满足生灵们的需求,体验各种故事~ 是不是想到了Noita? 当然,玩法还没做出来呢,所以,先看看美术吧。这一次,我们实现了2DHD的效果,spine小人的动画也更加丰富了——就是手搓起来好累好累就是了。(策划:累嘛……还有有十几个NPC) 伊迪雅克,一所建造在人和灵两个世界之间位面的魔法
12 赞
6 回复