日期:2026-08-02 | 项目:M-382 / P581(第二批)| 在线试:https://metazero-terminal.pages.dev/maptext/
入口:模板选「⭐ 大都市」或「⭐ 港岛老街」→ ▶渲染 → 🚶走进去 | 立面挑号看「🏢 楼房图鉴」
主席点的 A/B/C/D 四件事全做完了,共 17 项新检查 + 55 项旧检查全绿,本地跑一遍、把线上文件下载回来再跑一遍。
其中 A 多格建筑是上一份报告自己点名的头号结构缺陷,这次补上了。
span=2x3 —— 头号结构缺陷补上了@legend 新增 span=2x2(最大 8x8)。写上它,一栋楼就吃掉一整片地块——不是四栋楼挤在一起,是一栋楼占四格。
`
S super h=200..340 span=2x2 facade=glass color=#cfeaff win=.9
`
最容易写错的做法是"从左上往右下扫,谁先占谁算数"。这在这个系统里必崩,原因是:
> 大图只渲染镜头附近的一个窗口。人一走,窗口就搬家,扫描的起点跟着变 ——
> 于是同一栋楼上一秒是 2×2、下一秒变 1×1,走一步城就抖一次。
正确做法:锚点判据 = 对齐到自己那套跨格网格 + 整片 footprint 合法,这是一个只看 (x,z) 的纯函数,跟从哪儿开始扫毫无关系。
两条硬规矩:
road_every 算出街区内边界)只登记锚点那一格的话,人能从楼的另外三格直接走进去。现在整片 footprint 每一格各登记一个"以自己为中心"的实心圆,拼起来就把长方体铺满了。
| 检查 | 结果 |
|---|---|
| 跨格楼真的长出来 | 1,092 栋楼里 27 栋是 2×2,最高 645m |
| 整片都是硬的 | 2×2 的每一格中心都被推开(886–932m),人在楼里=false |
| 窗口搬家不抖 | 8 次挪窗口、重叠区比对 17,248 格,不一致 0 处 |
| 挂墙上 | 摆地上 |
|---|---|
bigsign 沿街伸出来的大竖招牌(歌舞伎町那一笔) | pole 电线杆 + 电线 |
acbank 外挂空调机阵(一整面墙密密麻麻挂一排) | vending 自动贩卖机(货柜面会亮) |
vent 外墙排风管(从地面爬到楼顶,中间几道箍) | standsign 立式灯箱招牌 |
ladder 外挂逃生梯 | bin 垃圾桶 · bikes 一排自行车 · cone 施工锥 |
电线的一个细节:电线杆固定放在格子边中点(不随机),只有下一格也有电线杆时才拉线——否则会有一根线吊在半空。实测 479 根杆里 212 对是紧挨着的,只有这些之间连线。
实测:10 种里 9 种在大都市图里真的出现了(cone 只在广场上、这一窗恰好没广场)——pole×318 vending×174 standsign×177 bin×95 bikes×108 bigsign×351 acbank×270 vent×74 ladder×59。
| 号 | 名字 | 长什么样 |
|---|---|---|
| 10 | 香港唐楼 tonglau | 铁窗花(井字格)+ 密密麻麻的晾衣杆 + 横伸招牌 —— 九龙那种叠得满满的老楼 |
| 11 | 上海石库门 shikumen | 清水红砖错缝 + 石门框 + 十字窗棂 —— 里弄老房子 |
| 12 | 迪拜金玻璃 goldglass | 金色反光幕墙 + 竖向金线 —— 海湾那种一整栋发亮的塔 |
新模板「⭐ 港岛老街」演示这三套:785 栋楼,唐楼×376、石库门×232、金玻璃×54。
🏢 楼房图鉴现在给每张贴图编了号(01 号东京密集窗 … 12 号迪拜金玻璃),主席看中哪张直接报号就行,不用记 slim prewar 这些英文。
整批复用知识城市的 street.js,一句台词、一个模型都没重写(Rule-DEDUP-001)。
| 检查 | 结果 |
|---|---|
| 8 款车全用上 | 80 辆车用满 8 款(悬浮跑车 / 磁悬浮出租 / 货运卡车 / 巡逻机 / 单轮环车 / 三轮送货 / 双层巴士 / 泡泡舱) |
| 8 款机器人全用上 | 60 个机器人用满 8 款,名字也带过来了(守卫 G-1 / 搬运工 K-17 / 服务生 S-6…) |
| 是真模型不是四根线 | 平均每个活物 519 个顶点(原来车 12 个、机器人 8 个) |
| 三套配色都用上 | 3 套 |
| 撞上去会说话 | 街头 J-4(6号·悬浮乐手):「这首曲子只有一个音,重复到你听出第二个音为止。」它停 3.5 秒 |
| 对话是多步 + 带岔路 | 连点 3 步,中间真出现了带选项的岔路口 |
性能上仍然只占 1 次 draw call:车和机器人是刚体(只有一个绕 Y 的偏航角),所有顶点写进同一条缓冲,每帧用 cos/sin 转成世界坐标——不是给每辆车建一个 mesh。
这一步同时是剧情层的地基:一幕 = 一串步骤,步骤要么是一句话、要么是一个带选项的岔路口。以后加剧情只改 street.js 的 DIALOGUE,渲染这边一行都不用动。
主席多次说「地面是黑的」。默认路面色 #14223a 实在太深,两套新模板的路面/人行道色提亮到 #2b3446 / #3c4557,配上这轮加的地面颗粒贴图,站在街上低头终于有东西看了(对比见截图)。
| 套 | 项数 | 内容 |
|---|---|---|
| A/B/C/D 新增 | 17/17 | 跨格生成/整片实心/窗口不抖 · 8车8机器人/真模型/对话岔路 · 10种杂物/电线成对 · 3套新立面/图鉴编号/无空白贴图 |
| 楼房系统 | 25/25 | 四档分布、12 种立面、贴图真挂上、随机拼接、同种子可复现、老模板不受影响、7 套材质 |
| 第一人称 | 18/18 | 走/看/飞/碰撞/窗口跟人搬/车不上人行道/活物不重叠 |
| 材质+小地图 | 12/12 | 9 套模板 0 报错、7 套材质逐像素互不撞脸、FPS、小地图、随机传送 |
性能没退步:同一张 512 大城,走贴图 vs 老写法 = 帧率 106%,光点省 5.1 倍,draw call 6→15。
⚠️ 帧率在 swiftshader 纯 CPU 软渲下测,绝对值无意义,只有比值可信。
最强反对:「多格建筑是头号缺陷」这个判断,这轮的数据其实没证实。
27/1092 ≈ 2.5% 的楼是跨格的,比例这么低,主席看截图很可能根本注意不到差别。如果真是这样,那说明上一份报告把它排在第一位是排错了,真正的瓶颈另有其人。
回应:比例低是权重设的低(weight=4 vs 低层的 7),不是能力问题——把权重调高,跨格楼立刻遍地都是。但我故意先给低比例:一座城里"整个街区一栋楼"本来就该是少数,多了反而假。这一条主席一句话就能检验:如果您说"跨格楼太少、看不出来",我把权重调上去就是了。
诚实列缺口:
span 只支持长方形,做不了 L 形街区、内院、带停车场的地块bigsign 挂在楼的随机一面,不保证挂在临街那面(要真做得判断哪一面朝路)*支撑文件:web/terminal/maptext/buildings.js(12 种立面 + 零件池)· maptext.js(span 锚点算法 + 两套新模板)· index.html(跨格渲染 + 街道杂物 + 活物模型 + 对话引擎)*