← 全部文章

Outland 开发日志 ①:队列收口的一周

这是开发日志第一篇,按周记流水。之前发的那批技术笔记(时间系统、测试门禁、物品实例、存档持久化)是从坑里提炼的,这篇反过来——不按坑讲,按天讲,这一周实际发生了什么。

先交代背景:10 月初的时候,项目里有一支”选中实例”的长队列没清完——物品从堆栈升级成实例(见那篇《两把相同的枪》)之后,每个操作动词都要逐个改到”操作选中的那个”。这一周就是清完这支队列、然后开始下一件事的一周。

10-08:持久化周

这一天的提交密度是整周最高的一档,而且几乎全是 fix: persist…:

  • 代谢小数余量进了存档(六个池子的 float 余数,空胃不再预支消化量)
  • 世界疾病池跨存读档保留
  • 可变代谢状态持久化
  • 体征池按经过的回合数恢复,分数部分持久化
  • 世界机制结算改成按”活跃世界时间”走,不再按墙钟

战斗侧修了一条躲闪:碰撞判定钉在玩家所在地板层。

UI 侧开始动”选中实例”的队列:wield(手持)选中实例的 preflight 通过,wear 候选验证完。

这一天的特点是”把欠的债集中还”——存档那篇技术笔记里讲的余数问题,大部分就是这几天补进格式的。

10-09:身份与界面

  • 铁变异状态(iron mutation)持久化并加了读档校验
  • cultivation identity(修行身份)和心魔状态持久化
  • 力量系统页面暴露了 demon refinement(炼魔)入口

战斗这边,combat launcher 和队列审计的阻塞项过了 review。这一天是”状态类”的收尾:凡是”玩家身上挂着、存读档后不能丢”的东西,这周基本都过了一遍。

10-10:队列开始加速

  • wield、wear 两个动词的选中实例正式落地(fix: wield the selected complete inventory instance / fix: wear the selected inventory item instance)
  • 物品菜单的动作行修到标题栏以下(之前菜单动作被标题栏压住)
  • D2c 的 native 控制矩阵和 SDL 正式门禁验证完

从这天起,队列进入了”一天一个动词”的节奏。

10-11:截图修复

  • charshot(角色截图)历史修复:读角色捕获要发生在呈现帧之前(fix(render): read character capture before presenting frame)
  • D4 观测证据记录在案

这条看起来小,但它卡了几天——截图功能是全自动化试玩链路的眼睛,它不修好,后面的验收截图全是错的。

10-12:队列过半

  • drop(丢弃) 选中实例
  • 容器清空(drain) 选中实例
  • FOV 归一化:chunk 加载后重建 FOV,归一化瞬时可见性

容器那条要单独说一句:容器是实例身份最刁钻的场景,因为”存进容器的东西”和”容器本身”都有状态,而且可以嵌套。修完之后,两把完全相同的装配枪存进同一个货舱,能保持两个 count 1 的独立个体,不再合并成 count 2。

10-13:队列清完,快照开工

这一天队列全部收口:

  • eat:吃掉的必须是选中的那个完整可食堆栈(新门禁 verify_e3_eat_selected_instance.py)
  • use:使用的必须是选中的那个完整实例(verify_e3_use_selected_instance.py)
  • special:消耗选中的完整特殊物品实例
  • skillbook:读取选中的完整技能书实例

wield / wear / drop / drain / eat / use / special / skillbook,八个动词,一支队列清完。

下午开始下一件事:把世界快照的捕获和恢复抽成独立函数。这条重构线当天就推进了两层——世界实体快照、NPC 快照,各自抽完、各自过门禁。

10-14(今天):快照线继续

  • 车辆(vehicle)快照捕获/恢复抽出
  • 尸体(corpse)快照抽出并发布
  • 下一站:陷阱(trap)快照

这一周学到了什么

  1. “队列”是对付长尾的正确形态。 选中实例这件事如果当成一个大重构来做,早该两周前就完了(或者一直没完)。拆成八个动词、每个动词一个门禁、绿一个结一个,它反而在八天内清完了——因为每个单元小到”不会改错”。
  2. 截图是自动化测试的眼睛。 charshot 那两天卡住的真正成本不是修它本身,是后面所有依赖截图的验收都在用错的眼睛看世界。
  3. 重构线要接在收口线后面。 队列没清完就动快照抽取,等于在流动的地基上搬砖。先收口、再抽取,这一周的提交顺序里能明显看到这个节奏。

下一篇日志预计写快照抽取的收尾和陷阱/世界机制那一档。技术笔记那边,下一篇是 UI 重做(多 agent 那篇结尾预告的)。