下载 App

开发者日志 - 第二篇

投票修改于10/166 浏览

【开发者日志】第二篇:涌现到底发生了没有

#聚光灯gamejam开发者日志
我们是新人团队 EmbersStudio,这里是第二篇开发者日志[表情_可爱]

本期进展

Day 3 到 Day 6,规则系统的内核算是跑完了。规则引擎会去扫 data/rules/,把规则牌 JSON 加载进来;它订阅事件总线上的所有事件,按条件筛,再执行动作。动作外面有四道闸门卡着:单牌冷却、单牌每秒上限、每帧全局预算、最大执行深度。默认牌池目前三张:
  • 暴击赏金:暴击时掉 3 枚金币
  • 金币弹幕:拾取金币时发 1 颗子弹
  • 子弹回响:子弹命中时暴击率 +5%,持续 1 秒
外围也做了不少:实体对象池(子弹和金币预生成,命中/拾取后回收复用)、日志系统的文件分片和手动导出、HUD 的连锁表现(数字跳动、边缘发光、边框脉动,还有一段代码合成的占位音,音调会跟着连锁升高),以及当前暴击率的显示[表情_吃瓜]
不过这一期真正想聊的,不是我们做了多少东西,而是另一个问题:涌现到底发生了没有
“感觉挺好玩”不能当答案。为了不靠感觉,我们做了两件事找证据
第一件,自举闭环测试。只装“暴击赏金 + 金币弹幕”两张牌,把玩家自动攻击屏蔽掉,然后手工种一次暴击。这样之后场上唯一还能产生 ON_CRIT 的东西,就是金币弹幕自己发射的规则弹。如果链还能继续转,就说明这个闭环是自己给自己上电,而不是靠设计者把每一环都补齐。结果链没断:暴击赏金触发 3 次以上,金币弹幕 2 次以上
第一版其实是失败的,原因值得记一笔。暴击赏金的冷却设了 0.2 秒,比一个连锁周期还短,第二次暴击会被“冷却中”挡掉,链转一轮就死。后来把玩家和敌人拉开 100 像素,让金币和子弹各飞一段,单轮周期长于冷却,链才稳定自持。这里面的耦合是真的:闭环能不能自持,取决于“一轮周期”和“单牌冷却”的比值
第二件,批量仿真。写了个脚本枚举构筑 × 顺序 × 规则开关 × 随机种子,每局落一行 JSONL,跑了 48 局。crit 指“规则弹能否暴击”这个开关:
构筑crit真实深度执行次数击杀拾取
暴击赏金 + 金币弹幕开12.024.09.521.0
暴击赏金 + 金币弹幕关12.016.07.515.5
暴击赏金 + 子弹回响开 / 关4.015.03.511.0
金币弹幕 + 子弹回响开 / 关12.018.56.56.5
三张牌开12.034.08.517.5
三张牌关12.024.06.512.5
三个能直接读出来的结论:
一,顺序敏感性是 0。同一副牌换任何顺序,六项数字完全相同,连小数都一样。原因在牌池本身:三张牌分别监听 ON_CRIT、ON_PICKUP_GOLD、ON_BULLET_HIT 三个不同事件,而执行顺序只在“同一个事件下挂了多张牌”时才有意义。我们规划里写的“调序影响结果”,在当前牌池下根本体现不出来,得等出现监听同一事件的牌,才会变成真机制
二,决策影响力是显著的。换牌的差异远大于随机噪声:执行次数在 15 到 34 之间,差 2.3 倍;击杀 3.5 到 9.5,差 2.7 倍。至少在这一版牌池下,选牌不是装饰
三,我们差点拿错证据。HUD 上那个“连锁”数字在仿真里能冲到 17 到 19,而真实执行深度只有 12,绝大多数构筑恒等于 12。差出来的那部分,就是被闸门拦下的触发。那个数字可以用来看热闹,不能用来证明涌现
顺带一条前提:同一个参数连跑两次,48 行产物逐行完全一致。如果连确定性都没有,“换牌有差异”这句话就没法成立

问题与风险

最大的风险来自上面第三条。48 局里被拦下的原因只有“深度满”一种,说明当前真正卡住我们的是执行深度 12,实体上限和每帧预算都没碰到。这有两种解释:往好里说,系统健康,闸门在保护性能;往坏里说,我们正在用闸门裁剪涌现,把本来能连下去的东西提前掐掉。现在还没有证据能区分这两者,这是下一阶段必须回答的问题[表情_叹气]
第二个风险是牌池太小。三张牌能证明机制成立,证明不了玩法成立。“顺序敏感性为 0”这个结论,一部分也是牌池小带来的直接后果[表情_豹哭]
接下来是这一阶段最贵的一课:
Day 6 试玩时我们发现,金币一直在掉,但子弹到后面就不发射了。查下来是一个死锁:连锁的空闲计时清零被写在了执行动作之前,于是被深度拦下的触发也算作“有活动”,1 秒的超时永远等不到,连锁深度永久卡在 12,整套规则再也不执行任何动作
真正让人后背发凉的是它怎么溜过验收的:
当时的验收状态是:六套自测退出码全 0,静态检查全绿,真机和 headless 各跑 30 秒游戏时间,0 条 ERROR、0 条 WARNING。看起来无懈可击。但那个死锁在开局约 2.5 秒就已经触发,之后 27.5 秒规则系统一次动作都没执行。不报错,不超时,退出码照样是 0
继续往下查,原因实际上是 test_rules.gd 里限制层的用例没有 await。四组断言(冷却、每秒上限、深度上限、帧预算)全部在第一个 await 处挂起,而紧接着的 _report() 直接调用了 quit()。这些断言是在节点已经被释放之后才跑完的,退出码反映不到任何失败。所谓“六套自测全绿”,其中的 TestRules 实际只验证了三牌闭环,限制层从来没有被真正验证过
修复分两步:把空闲计时清零移到执行成功之后,被拦下的触发不再续期,卡满 1 秒后自动归零恢复;再把四个用例的 await 逐个补上。按真实语义模拟 30 秒做对比,修复前总共执行 12 次动作(正好等于最大执行深度)就彻底停摆,修复后 162 次且持续运转
这件事改了我们看待“测试通过”的方式。现在每加一条断言,先确认它真的会失败一次。一条从没红过的测试,跟没有测试是同一件事
还有两个小一点的局限,也得老实记上。仿真本身是简化的:玩家每帧回满血、敌人死了立刻补一个、暴击率拉满到 100%,它比的是连锁吞吐,不是真实生存压力下的表现。以及,我们还没有跑过一局完整的游戏

下期计划

  • 牌池从 3 张扩到 10 张,然后重跑仿真。顺序敏感性和未预设组合,只有牌池够大才测得出来
  • 重新评估最大执行深度 12 与单牌冷却,判断它们是在裁剪涌现还是在保护性能
  • 进入内容阶段:房间与层数系统接管刷怪,新增规则牌改成只要加一个 JSON
  • 把随机种子写进整局日志,做到按 seed 复现任意一局
  • 等待美术素材准备完善后替换掉占位用内容

开发过程截图

TapTap
连锁 12 顶到执行上限的那一刻。屏幕边缘的发光和边框脉动是这一期新加的连锁表现,测试时我们就盯着这圈光判断连锁还在不在跑
TapTap
连锁 10。注意第四行“暴击率: 20%”,基础暴击率是 10%,多出来的 10% 是子弹回响连续触发叠上去的,说明规则确实在执行,不只是计数在动
TapTap
连锁 11。画面上方红圈里的 0.7 是出生预警倒计时,敌人还没出现

杂谈

涌现 这个主题没有实物,很抽象,老实说我对这个选材没有十足把握,但考虑到时间与水平,也没有什么更好的主意,打算就这样做下去了,你们有什么相关的见解吗?或者有什么改进的建议?[表情_可爱]
至于上期本来说是要替换的 美术素材,截止至这篇日志发布,已经准备了许多,但还不够,所以第二篇发布时仍然没有替换美术素材[表情_豹哭]
关于 游戏名称 嘛,我们还没有确定下来,取名字还是有些太困难了[表情_死机][表情_死机][表情_死机],有什么大佬能给点建议吗?[表情_星星眼]
下一期你最想看哪个? (最多选4项)
10 张牌重跑仿真
0%
执行深度 12 该不该调
0%
房间与层数系统
100%
死锁复盘细节
0%
00:11
【开发者日志】第三篇截图
【开发者日志】第三篇
【开发者日志】第三篇:把无限地图拆回三层房间 #聚光灯gamejam开发者日志 大家好,我们是新人团队 EmbersStudio,第三篇开发者日志来了[表情_酷] 本期进展 Day 6 到 Day 9,我们在做 Plan_3。简单说,就是把一张无限延伸的网格地图,拆成了有边界、有层数的房间。听起来像装修,其实就是装修 现在的结构是:每层 3 个普通房 + 1 个 Boss 房,一共 3 层,也就是
2 赞
00:34
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!截图
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!
- 人类曾因掌握元素合成技术而一度辉煌,又因滥用元素能量而逐渐从内里衰败。 - 30世纪80年代。社会文化充斥着激进乐观主义与庞大机械美学,在这里,污染和能源共生,幸福与痛苦并存。官方广播和宣传画里依旧在宣扬“科学将战胜一切”、“元素能量将再造新农田”的口号,而世界主城却已经因为污染过度而濒临崩溃、空间挤压严重。为了寻找新的生存空间与无污染能源,官方启动了“重构拓荒计划”。 - 玩家将作为前线拓展
17 赞
5 回复
《卡牌工业》开发日志 01|从“涌现”到产线对打截图
《卡牌工业》开发日志 01|从“涌现”到产线对打
大家好,我们正在用 Godot 做一个暂名《卡牌工业》的游戏。目前已经跑通了最小的生产与战斗循环,也做了两轮迭代。这篇先记录一下:面对“涌现”这个题目,我们讨论过什么,又为什么最后收敛到卡牌和工厂。 第一步:头脑风暴,涌现可以是什么? 刚看到“涌现”这个题目时,我们的想法几乎朝每个方向散开了。塔防、物理搭建、探索、解谜、经济系统、叙事,甚至增量游戏,都能让简单规则在玩家的操作中长出新的结果。再想下
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合截图
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合
大家好,我是一个人报名了 2026 聚光灯 21 天游戏创作挑战 的独立开发者。今年主题公布那一刻我就笑出了声——涌现。因为我已经想做这个游戏很久了: 《气味之城》:你不是猫神,你只是一只猫。 先说一个所有养猫人都懂的事实:你永远无法"教会"一只猫任何它自己不想学会的事。但你家猫可能自己学会了——听见冰箱开门就瞬移到厨房;你心情不好时过来踩奶;凌晨三点准时在你身上练马拉松。没人教过它,这些行为是它
3 赞
4 回复
【童谣镇】聚光灯第二次开发日志截图
【童谣镇】聚光灯第二次开发日志
开发进度: 美术 1、主角人物立绘已细化完成 2、所有NPC的QQ人形象与呼吸动画已设计完成 3、大部分UI界面已设计完成 4、面包房建模与树屋建模以及基础房屋、路灯、树木模型已完成。 5、制作过场动效,制作通用动效材质ing 6、广场资产替换、永续桥和植被的资产替换、房屋资产替换,河流制作 7、学校模型的材质完成 8、石墩子、小道具模型制作ing 9、NPC正比胸像绘制ing 策划 1、任务系统
9 赞
6 回复
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?截图
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?
大家好啊,我是官方小编,一位还在学校的独自开发的苦逼带学生 这次算是第二次正式参加GameJam,而这回的比赛主题是【涌现】 嗯…老实说,一开始我还真只是从中文语义上来看,理解成“大量的出现”,直到询问ai哦哦哦我这就才想起来还有英文的“整体大于部分之和”意思来着 说起这个主题的意思,立马想起的类 吸血鬼幸存者 ,或者是 文明 系列的各种爆怪,爆兵的设计,即大量的出现敌人或者单位 而从第二个
4 赞
4 回复
00:30
《失心》游戏开发者日志01|游戏UI迭代及实机演示截图
《失心》游戏开发者日志01|游戏UI迭代及实机演示
进入《失心》之前,玩家首先看到的是我们工作室 UNLOOK 的标识。我们将原来的标识转成 SVG,并让其中的红色瞳点转动、观察,再逐步显露完整字形,希望这个短暂的开场能带出一点好奇和不安。 这次《失心》的开局 UI,我们围绕小灵通(因为游戏的主要交互道具就是小灵通)做了几轮调整,希望玩家从打开游戏开始,就能感受到故事里的年代和气氛(故事年代背景为2000s)。 早期版本先确定了一个方向:把菜单放进
14 赞
10 回复
00:07
雨天決行 开发者日志02-人工智能的自我修养截图
雨天決行 开发者日志02-人工智能的自我修养
又和大家见面啦!第二篇日志,说实话一开始不知道该怎么编排,但团队里惊喜的成果越来越多,我们已经迫不及待把更新的内容端上来给大家啦!那么事不宜迟,快来看看都有什么新情报吧ദ്ദി˶ー̀֊ー́ )✧ 一.美术(重磅升级) 以主美小为的生命力作为燃料(bushi)本次美术组取得了大进程!首先是各个ui界面的优化和细化,上次大家看到时还只是初具雏形的草稿,现在大多都完整起来了哦! 同时,随着配色的补全,手
43 赞
36 回复
00:10
群迹·上取其下,下取其上截图
群迹·上取其下,下取其上
#聚光灯gamejam开发者日志 向大家汇报一下今日进度,目前在和蚁群的默认移动算法进行斗智斗勇。或许是我的AI对蚂蚁有别样的理解,其实最初写出的方案更接近于围绕着恒星公转的行星。 哦我还以为文章里可以插入多支视频视频,想要展示一些其它的运动方式,可惜了。那么就简单在上方传一个比较典型的,有点类似于蟑螂的运行方式。 目前仍在解决蚁群的随机运动,和玩家可操纵性之间的平衡问题。以及如各位所见,目前的
3 赞
1 回复
03:14
开发日志#1:展示玩法特色的开场截图
开发日志#1:展示玩法特色的开场
#聚光灯gamejam开发者日志 绩点卷了科研做了SCI发了顶九Offer拿了但是保研被学院做局后,晚上一直睡不着觉想到的【玩法雏形】。 开题看到『涌现』主题时发现很契合,决定围绕主题把它正式做出来。 目前大家会反应本作特色来得有点晚,所以做了一个像黑猴一样的展示游戏特色的开头。 TO DO:优化新手引导流程,优化过剧情UI等体验,完成Boss战设计
3 赞
8 回复