下载 App

开发日志 02|48 关共用一个世界:把关卡写成数据

10/184 浏览 包含 AI 合成内容

《一念万物》有 48 关,分为春夏秋冬,每关还有后续段。如果给每关单独写一套逻辑,类似的水、风、鸟和植物规则很快就会分叉:某一关改好了,另一关仍然沿用旧行为。项目因此把世界演化集中在 World.gd,关卡只描述初始条件和目标。
TapTap
图 1|依据代码绘制的结构示意。关卡、终章与自在园使用同一个引擎,各自通过数据定义条件与目标。

先确定规则与数据的边界

Data/levels.json 保存关卡对象、位置、天气、风、时间线以及可接受的和谐方案。石头能不能拖、植物需要怎样的光照、鸟喜欢什么落脚点,都由对象属性表达。World.gd 负责解释这些属性,推进对象状态。
例如,第一关通过石头阻水改变池塘状态;第二关通过移动遮挡物改变植物受到的光。两关的矛盾不同,但它们没有各自的脚本类。新增关卡时,可以组合已经存在的关系;需要新能力时,再把能力加入世界引擎,并让其他关卡也能使用。
这种边界并不意味着所有设计都能只改 JSON。新的关系仍然需要实现与验证,只是实现后成为公共能力,而不是藏在某一关里。

用局部环境连接对象

世界每步依次推进硬物理、生物需求、表现和稳定检测。对象查询所在位置的风、光、温度与湿度,而不是只读取一个全局天气标签。
屏风背后可以避风,云下光照较低,火会改变附近的温度,池塘水位会影响湿地范围。同样是下雨,屋檐下与雨云外的植物可能没有直接被淋到。这使局部布局真正参与玩法。
第 13 关“荷上雨”的调整体现了这件事。当前数据不再放房屋,局部雨云只淋池上荷叶,雨外的花依靠荷叶送来的水。第二段还要引走多余的水。删掉房屋以后,雨、荷叶和花的关系更集中;局部降雨与荷叶传水仍沿用公共规则。
TapTap
图 2|2026-10-12 第 13 关开场实机截图。当前布局没有房屋,雨云覆盖荷叶,右侧花盆在雨外;雨水传递使用公共规则。

后续段继续使用前一段的世界

48 关都有第二段,其中九关还有第三段。进入下一段时不会重新加载一幅独立场景,而是在前一段的状态上继续演化。
段数据中的 add 可以加入新访客,do 立即改变天气或其他状态,timeline 安排从这一段开始计时的事件,sols 则指定这一段接受的结果。干预次数按段重新计数,发现、念痕和因果记录可以跨段积累。
这里还需要处理恢复逻辑。每段开始时,世界会保存一份状态,“回到清晨”先回到当前段的起点。对于云从画外飘入等开场过程,数据可以通过 arrive 指定开场结束后更新恢复点,避免每次重试都重新等待同一段演出。

自在园检验规则能否脱离关卡成立

自在园使用 Data/sandbox.json,仍然由同一个世界引擎运行。没有 sols 就不进行通关判定;底部架子上的 kit 描述可拿入与放回的物件。
石头放进溪里应该阻水,取走后应该恢复,灯移动后仍然应该影响附近的光。这些行为不依赖“正在玩第几关”。自在园需要的能力也必须加进通用引擎。
它也暴露了布局必须与规则对应的问题。当前溪流矩形是 [332, 520, 56, 300],下游伸进池塘。自检分别检查满水和最低水位时溪口仍在池内,避免画面看起来接通、实际计算却断开的情况。
TapTap
图 3|2026-10-12 自在园实机截图。底部架子提供可拿入世界的物件,溪流与池塘仍由相同的水流规则运行。

集中规则之后,也要集中承担回归成本

所有世界共用规则,一个水流改动可能影响很多关。因此,关卡数据同时保留已知操作路线、替代路线和不操作时的预期结果,自检逐段核对。
当前 JSON 仍是直接维护的运行时数据,没有同时维护另一份策划表。以后如果引入表格,需要确定唯一源表和编译方式,否则两份内容很容易不一致。
这套结构让每关的差异落在关系与布局上,也让开发时的责任更明确:数据描述一个世界,公共引擎负责让它按同样的规则运行。
开发日志 04|一次轻点为什么用掉了唯一机会:试玩带来的修正截图
开发日志 04|一次轻点为什么用掉了唯一机会:试玩带来的修正
2026 年 10 月 7 日的玩家视角检查里,第 12 关出现了一个很直接的问题:轻点溪中石头,没有移动,接着再拖同一块石头,石头却不走了。点击“回到清晨”以后,重新拖动又可以正常恢复水流。 当时画面没有清楚说明机会已经用完,玩家容易把它理解成触摸失效。检查代码后确认,可拖物在按下时就消耗干预,尚未判断有没有发生位移。 图 1|2026-10-07 修复前的浏览器记录。复现步骤为轻点石头后尝试拖
官方
4 赞
开发日志 03|不用贴图,怎样画出一个会变化的水墨世界截图
开发日志 03|不用贴图,怎样画出一个会变化的水墨世界
《一念万物》的水墨画面由程序绘制。树、石头、池塘、鸟和鱼的画法集中在 Paint.gd,四季使用不同配色,再叠加水墨与宣纸着色器。这样做让物件外观能够随着世界状态变化,同时也带来了一个很实际的问题:每帧重新画大量笔触,浏览器能否承受? 从形状到笔触 画面主要使用笔触 stroke、brush 和墨块 wash。它们让边缘、宽度与浓淡有变化,避免所有物件都由等宽线和正圆构成。四季调色板分别控制天空、
官方
4 赞
开发日志 01|怎样设计“一念”引发的连锁变化截图
开发日志 01|怎样设计“一念”引发的连锁变化
《一念万物》的核心循环是“观察 → 一念 → 涌现”。玩家挪动一件东西,世界随后自己发生变化。把这个想法落成可玩的关卡,首先需要回答一个问题:玩家怎样看出,眼前的变化确实来自刚才那一下操作? 第一关“水中石”是一个具体例子。开场时,石头挡在溪里,下游池塘水浅。玩家把石头拖到岸边,溪流恢复,水逐渐进入池塘,鱼有了足够的水,周围植物也受到湿度变化的影响。这里没有一个“移走石头后播放通关动画”的专属脚本
官方
4 赞
【设计】目前游戏内容截图
【设计】目前游戏内容
4 赞
4 回复
开发日志 05|怎样确认世界真的能走通:自动自检与浏览器试玩截图
开发日志 05|怎样确认世界真的能走通:自动自检与浏览器试玩
《一念万物》的关卡依靠世界规则演化。水要往下游走,花要等环境合适,鸟要找到落脚处,天气还可能在时间线上变化。一次手动通关可以确认某条路线有效,却很难保证公共规则改动后,其他关卡与后续段都没有受到影响。 项目因此把验证与关卡数据一起维护,用自动自检检查规则,再用浏览器实操检查玩家面对的流程。 图 1|验证方法示意。自动自检、构建与实操分别提供不同证据,不能相互替代。 用已知操作路线重现结果 关卡数据
官方
4 赞
1001更新日志截图
1001更新日志
1、修复月面自动补建会莫名多建大量卡车的问题:高品位矿层事件的临时增产不再算进运力需求,在建的采矿单元和卡车也会一并计算。 2、优化部分条目显示问题 3、所有月面设施的批量拆除都新增"过剩 N"一键拆除,建设页卡片上会提示可拆除的数量。修复月面自动补建多建机械厂的问题(备件需求被重复计算)。
官方
1 赞
2 回复
0930更新日志03截图
0930更新日志03
1、地月经济圈目标放宽:贸易占比 50% → 40%,近地轨道液氧 20,000 t → 10,000 t,利润连续为正 180 天 → 90 天。 2、进入“地月贸易”阶段时一次性获得 ¥10 亿启动资金。 3、月面电磁弹射研发费用 ¥6 亿 → ¥3 亿;电磁弹射器从地球进口的物资 300 t → 150 t,工期 90 天 → 60 天。 4、聚变示范堆造价 ¥50 亿 → ¥30 亿,工期
官方
1 赞
1005更新日志截图
1005更新日志
1、修复破产危机里“变卖资产”在设施数量极大时卡死的问题,现在按整批出售,一次完成。 2、修复拥有大量闲置拖船时游戏每天卡顿的问题。 3、月面自动补建改为按整批开工,缺口很大时不再卡顿,施工队列也不会被成千上万条记录塞满。 4、月面自动补建的座数现在与建议数量完全一致,并先用本地材料建完再动用地球货物。
官方
1 赞
10月20日更新|方舟之后,在新星系建起独立工业
本次更新把方舟抵达之后的旅程接了下去:在另一颗恒星下,从有限的储备重新建起一套工业体系。实际开放时间以审核后上线版本为准。 新增阶段 XII:新星系拓荒 方舟抵达后,在结局卡片选择“继续经营”,即可进入新星系。勘探不同天体,建设矿井、冶炼厂、电子厂和母机工厂,规划电力与机器人运力,逐步让合金、电子和水冰实现本地供应。 完善殖民地指引与补给 补充建设建议、停摆预警和方舟补给功能,目标卡会说明当前卡在
官方
1 赞
0930更新日志截图
0930更新日志
1、新增深空内容:小行星与 L5、火星发射窗口、戴森群、星际方舟。 2、新增地月贸易:电磁弹射器、再入舱、地月拖船、L1 推进剂站、氦-3 与聚变电站。 3、新增月球高价值出口商品:钛晶、超纯硅、轨道单晶。 4、新增传承与新周目:通关后获得传承点,用来购买永久加成。 5、随机事件减少打扰:事件之间有 20 天冷却,只有重大事件弹出卡片,其余事件汇总到事件中心。 6、修复铝不能生产问题,以及其他已知
2 赞
7 回复