Files
MemRelay/projects/4111f53b-afa5-48e1-aaf8-d70a7edc0638/Checkpoint 2026-09-04 19-40-44 UTC [185f536cd2].md
T

3.9 KiB
Raw Blame History

title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at, tags
title type permalink stable_id scope project_id memory_type status revision restored_from_commit created_at updated_at tags
Checkpoint 2026-09-04 19:40:44 UTC [185f536cd2] checkpoint main/projects/4111f53b-afa5-48e1-aaf8-d70a7edc0638/checkpoint-2026-09-04-19-40-44-utc-185f536cd2 c3d57a20-2881-4db2-ba98-572d030532ee project 4111f53b-afa5-48e1-aaf8-d70a7edc0638 checkpoint active 1 6a6a895eaf 2026-09-23T14:52:43.417070+00:00 2026-09-23T14:52:43.417157+00:00
release
population
homecity-save
workspace-persist
aoebbs-notes

检查点 2026-09-05 03:40 — 第二轮修正完成并发布

完成内容(提交:58feaff 母城存档 / 64d4b89 人口与持久化 / edb9fa7 验收修正 / 07dbbe1 保存后原始值复位与差异合并 / 501488c 教程校对修正 / 502ae7d 收录教程笔记)

  • 人口机制重做:起始上限 = civs.xml 根级 defaultpoplimit(200) + min(Σ Age0 链 PopulationCapExtra, defaultpopextralimit(50)),读取端防御性识别 PopulationLimit/ExtraLimit/LimitDelta/CapBonus(官方数据无实例)。写入:专属科技就地改;共用 Age0 科技(英国等)新建同形包装科技 Age0XxxXxx 并改 civs.xml agetech;硬上限为全局值。「人口与规则」页删除,人口编辑并入编辑器「人口上限」Tab。
  • 暂存跨会话持久化:WorkspaceState/working.json,LoadAsync 恢复不再 ClearSession;ExportMod 以原版基线快照 + 累计改动导出 Additive Mod;差异页显示跨会话已暂存修改(StagedDiff 按 Key 合并,原版→当前各一条)。
  • 存档编辑页(母城存档 sp__homecity.xml UTF-16LE + -v11.dat):类型 HomeCitySave* 前缀;备份注入写回(xml 校验和保留原值,同时写 .dat);写前整目录备份、恢复最近备份、游戏运行禁写;实验性提示。未实机验证。
  • 保存后 EntityItem.CommitSaved 复位原始值;高级 XML 页与字段页双向刷新;卡牌/技能/战术 MarkSaved。
  • 按钮位限制为 DE 每页 18 格(column 0–17),满则中文报错。FieldDefinitions 补人口子类型,删除幻觉字段。导出后清理与 xml 同名的 .xmb(DE xmb 优先)。
  • 界面:顶栏重排、Ctrl+S、上下文右键菜单、树横向滚动/变体合并、AvalonEdit、按钮随状态启用。
  • 教程笔记:references/aoebbs-tutorial/(16 份章节 md + 00-摘要与校对要点 155 条,标注官方/译文/站方实测/推断/未提及)。

验证

  • Release 0 警告 0 错误;dotnet test 88/88;scripts/publish-wpf.ps1 已发布到 release/。

需用户实机确认

  1. 共用 Age0 科技国家(英国)改人口 → 安装 Mod → 游戏内上限;官方无 civmods 示例, 节点匹配与根级 defaultpopextralimit 合并未验证。
  2. 母城存档写回是否被游戏接受;失败用「恢复最近备份」。
  3. age3-mod-status.json 自动登记是否被识别(教程/官方原文均未提及该文件,实现按游戏自写文件格式)。
  • 验证手段:Startup/user.cfg 加 DebugOutputGameData,游戏把合并后数据写到 %TEMP%/Age of Empires 3 DE/Data,可 diff。候选功能:编辑器集成读取该目录做"验证 Mod 生效"。

给下个会话 / 坑

  • 子代理若被切到 grok-4.6 会因 Other Models 额度停摆,需用 inherit 模型重启。
  • browser-use 子代理无写文件工具;教程站匿名 403,只能走已登录的 Cursor 浏览器;用 CDP Runtime.evaluate 补白到 >26000 字符强制落盘到 ~/.cursor/browser-logs。
  • 旧编辑器进程可能锁 bin/Release,编译用 -p:OutDir 指到 %TEMP%。
  • ExportMod 仍会先删 Mod 的 Data/ 整目录(用户自放文件会丢)。
  • mergeMode:官方只定义 modify/add/remove/replace 名称与缺省规则(匹配到→modify,否则 add);我们对改动节点写完整节点 replace,安全。
  • 待办候选:DebugOutputGameData 验证功能;ExportMod 只删自己写的文件;存档页扩展卡组编辑。