Godot M2:客村 / TIT 与《粥还热》
更新:2026-10-16。M2 可玩候选已落地生产原生工程:客村 / TIT 生活街区、七个订单、阿婆救援、解药主路 / 绕行、祠堂据点和首章收尾均接入同一 monorepo。macOS 原生窗口已跑通连续章节与两条路线;Windows 实机测试按维护者安排后置。
Three.js / Electron 仍是现有入口。M2 功能实现与全平台正式验收分别记录;实体手柄、人工完整游玩、同画质性能、旧 Web / Electron 存档导入、正式签名和 Steam 仍未关闭。里程碑定义见迁移计划,M0–M1 历史结果见迁移进度。
本次覆盖
| 范围 | 原生候选行为 |
|---|---|
| 客村 / TIT | 复用程序美术中的街景、门楼、建筑、树木、车辆与电驴模型;骑手站、云拱门取餐点、TIT 北侧、丽园雅庭和章节任务地点可达 |
| 城市生活 | 两条原有公交线路与站点、停放车辆、24 名步行街坊、路灯、昼夜、晴 / 雨 / 雾、环境音乐、骑行与提示音;城市环境车流(小汽车、面包车、货车、洒水车、环卫车,跟车 / 让行 / 信号灯 / 踢车)、共享单车、接管车辆驾驶与乘坐公交 |
| 操作 | 骑行、刹车、倒车、加速、左右踢、第一 / 第三人称、步行、停车上下车;菜单 / 地图 / 对话释放输入,恢复需松键或摇杆回中 |
| 循环 | 首页剧情 / 自由骑行、登记、接取送、结算、职业累计、任务换装、再接午餐单、存档和继续;车库沿用 1 / 3 / 5 / 8 / 12 单门槛,不发额外奖励 |
| UI | 原生 Control / Theme 映射共享 token,深色方角面板与白色选中态;地图全章 / 附近视图、车库、自动与 1 / 2 / 3 槽、图形 / 音频 / 操作 / 通用设置、对白和通关卡 |
| 存档 | 独立 schema 2,保存订单、位置 / 停车车辆、积分 / 职业、外观、救援 / 路线 / 据点、对白与设置;校验和、数值验证、临时替换和备份,未来版本拒绝覆盖 |
不承担首章作用的室内、全载具目录、经典赛事、完整战斗、其余设施、线上账号 / 购买、多人与手机触控依旧在后续功能台账中。窄窗口显示回归不等于移动平台已交付,手柄合成事件不等于实体手柄验收。
《粥还热》完整流程
- 客村骑手站与陈叔交谈登记,完成
tit-lunch园区午餐;未登记、未取件或不停稳不能越级结算。 granny-first送热粥到熟悉的门口,再接riverside-coffee。靠近目的地触发街角异变后,可按原规则完成或取消咖啡单。granny-second主动轻敲两下;游戏运行两秒后阿婆回应,菜单、地图和交谈不计时。引开或踢退两名感染者,门前 22 米连续安全 1.5 秒,再回门口停稳主动接人;未加载感染者不能自动算清场。chen-antidote到省二医取密封箱,沿实际道路骑到阿杰来电点,选择主路或街坊绕行。主路生成三名感染者;可改选绕行。必须经过所选路口才能到陈家祠南门交付,不新增交付倒计时。chen-food和chen-tools使用祠堂周边实际取件路线,依次让救护棚、厨房、修车点出现。场景由记录派生,读档不重复生成或结算。- 南门收尾对白、通关卡与「街坊骑手」称呼,随后继续探索或重看结尾;不生成未经平台接入的 Steam 成就。
首章感染者继续沿用 Web 的数量、出生半径、追逐速度、接触减速与踢退规则。零生命重试用状态夹具检查安全点和进度保留;当前普通首章不额外加入持续接触扣血,不能用该夹具宣称完整死亡战斗已实玩。
章节流程现已统一为手写 JSON 节点图,编辑与兼容方法见 共享剧情节点图。旧 ADV Markdown 路径仅保留迁移说明,编译程序改由共享 JSON 生成;下述 M2 数值是首次候选的历史记录,后续验证见该编辑说明。
同一内容源与固定章节地图
Web 真正从共享内容包消费章节门槛、据点规则和类型;配送目录、数值、敲门 / 清场 / 来电 / 路口与遭遇参数共用。ADV.JS 仍只有一个对白源,构建校验首章完整节点、表达式、跳转和宿主命令,原生解释已验证的子集;登记、接单和收尾由宿主再次校验。
地图沿用原广州原点 [113.3196, 23.0995]、地点 / 订单 ID 和路径规划。固定章节包含客村 / TIT 主生活圈、陈家祠地标,以及连接全部任务地点和两条解药路线的道路走廊。路网包含 4,855 段道路、872 个建筑轮廓,桥面 / 河岸 / 水域与安全边界同步导出。运行时全部加载;128 米构建裁剪网格不是 M4 分块系统。
现有程序美术在构建期用临时浏览器导出 GLB,源码 hash、大小及 SHA-256 记录在派生清单;游戏运行使用 Godot 导入后的包内资源。静态场景和六套电驴 / 骑手外观来自原源码。原地图静态碰撞及公交 / 行人 / 感染者 / 停放车辆代理由单一 Rapier 查询世界处理,避免 Godot 物理重复求解。
固定原媒体仍经共享 COS 清单恢复;GLB、提取贴图、音频副本、导入缓存、动态库和安装包留在忽略目录,不提交媒体 blob,也没有新建下载器。原生 PBR 材质与原 Web 的 toon / 水面 shader 有差异,尚未通过同画质画面对照。
功能验证
开发机:macOS 26.6.2,Apple M1 Pro,32 GB,Godot 4.7.2 Metal Forward+。这些是功能与包检查,不提供目标机器性能结论。
| 检查 | 结果与边界 |
|---|---|
| 原生基础契约 | 74 项配送 / 物理 / 存档检查;午餐路线通过独立骑行与恢复进程,约 533.41 米、264 分 |
| 首章契约 | 2,353 项检查,包括 256 组 Web 门槛样本、ADV 登记 / 接单 / 对白恢复、取消重接、暂停不计时、未加载清场保护、手动槽与未来格式隔离、重试状态及据点碰撞 |
| 连续章节 | 新档通过真实油门 / 转向 / 刹车和碰撞行驶约 20 公里,完成绕行与收尾;从实际来电存档分叉的主路也完成粮米、工具和收尾,不传送位置 |
| 节点恢复 | 绕行 12 个关键节点、主路后段 5 个节点分别启动独立读档进程核对,随后以新 Session 继续。父渲染进程并非逐节点退出;真正退出 / 重启另由午餐与包测试覆盖 |
| 原生 UI 与输入 | 20 项检查:键盘交谈登记 / 接单 / 步行上下车、合成手柄油门、菜单冻结、按住键恢复防粘键、地图、700×500 / 390×844 窗口和菜单保存退出 |
| 实际 macOS 包 | 在源码目录外通过实际键鼠登记、自由接午餐、骑行约 6.36 米、刹车、菜单保存退出;另一进程读取通关档回到陈家祠,保留 3,056 分和重看结尾选项,正常关窗后再次核对 |
| Web 对照 | 首章、配送和存档 77 个测试,Web / 原生构建工具类型检查、Web 构建、原有资源预算和发布检查通过 |
| 资源 | 33 个固定 COS 媒体 hash 校验通过,派生输出可追溯;保留资源 128 MiB / 完整包 768 MiB 上限 |
渲染章节自动化每帧推进八个 1/60 秒逻辑步,仅验证渲染环境中的功能与路线。没有把自动驾驶称为人工完整游玩,没有把截图、平均 FPS 或局部绘制数当作稳定 60 FPS 验收。既有增强档、300 只压力、P95 / P99 与长帧门槛保持不变,之前的未通过结论继续有效。
本轮原生两包的内容 hash 为 e7e0d467d523f9205d2cab46cd31bf0e3b1de76600948771af067612484530d2。macOS 完整解包应用约 130.28 MiB,PCK 与扩展约 51.13 MiB;Windows 完整目录约 155.50 MiB,PCK 与扩展约 51.43 MiB。两包美术 / 音频存在、架构与开发 helper 排除检查通过。
包内美术 / 音频、内容版本、架构与开发 helper 排除需由每次 godot:export:* 的包证明重新检查。Windows 交叉构建 / 包检查不代替 Windows 启动、离线、输入、升级或关闭写盘验收;macOS 当前也是本地 arm64 测试包,正式签名、公证与 Steam 尚未完成。
开发入口与下一步
源码仓库的 Godot 工程 README 提供完整工具链、按键与缓存说明。常用命令:
pnpm godot:dev
pnpm godot:test
pnpm godot:test:ui
pnpm godot:test:chapter:rendered
pnpm godot:export:mac
pnpm godot:export:win
pnpm godot:freeze原生 M1 正式切片可只读转换到独立 M2 路径,旧文件保留。旧 Web / Electron / 实验档的预览导入、未迁移字段保留和付费权益可信恢复仍在 M3;本轮未扫描浏览器配置或改写旧档。
接下来先做人手完整章节与实体手柄验收、画面与同质量性能对照,按维护者安排补 Windows 实机,再推进 M3 原生发行候选。M4 才把同一内容改成运行时分块,M5 按相邻街区扩城。