日期:2026-08-02 | 项目:M-383 / P582(第二批 A/B/C)| 在线试:https://metazero-terminal.pages.dev/maptext/
上一轮我在红队里押了一句话:"这一轮解决的是荒唐,不是逼真。如果主席说'车太机械',说明瓶颈已经从路径转到节奏。"
主席点了 A(红绿灯节奏)、B(真地形)、C(设施动起来)—— 这一轮就是把那三块补上,每一件都有独立的机器判据。
| 做了什么 | 怎么做的 | 实测 |
|---|---|---|
| 红绿灯 | 路口 = 四个方向都是路的格子(宽主干道中段只有三面是路,所以不会被误判)。16 秒一周期,两向轮流绿 + 全红间隙;相邻路口错相位形成绿波 | 窗口里 133 个路口 · 266 颗灯珠;一周期采样 320 次:东西向绿 148 · 南北向绿 148 · 全红 24 |
| 跟驰 | 目标速度 = √(2·减速度·可用车距) —— "我以最大减速度能不能在这段距离里停住" | 4,800 次采样:停住 1781 · 慢行 449 · 中速 1544 · 全速 1026 |
| 拥堵波 | 加减速有上限(7 / 16 m/s²)= 反应有延迟 → 队尾的车被前面"传染"减速,停走停走的波自己往后跑 | 平均车速 10.4 m/s,标准差 10.04(全匀速的话会趋近 0) |
1. 线性插值会追尾。 第一版目标速度用 (gap-SAFE)/(FREE-SAFE) 线性插值 —— 但减速有上限,等插到"该停了"时已经刹不住。改成物理判据后同轴穿模从 140 帧降到 0。
2. 两格宽主干道 = 两条并排车道,车能在半路拐进旁边那条再拐回来 —— 又变成"短距离来回开"(实测残留 3 辆就是这么来的)。加了只在路口拐弯(真车就是这样),归零。
3. 拐弯那一瞬间车道偏移会突变。 旧方向的"右边"≠ 新方向的"右边",车会瞬间闪 9 米,刚好闪到别的车身上。改成前半格内平滑过渡(车头朝向也一起平滑转,不然会瞬间打横)。
4. 出生点随机抽会抽重 —— 两辆车一出生就叠在 4 米内。这不是开车开出来的毛病,是发牌发重了,在出生环节一次性去重。
`
掉头 0 · 跑错地 0 · 同轴穿模 0 · 原地打转 0 辆 · 净位移占路程 92%
`
上一轮的"小山"是画在平地上的一个体块:看着有山,走上去还是平的。主席直接点了这个。
terrainH(x,z) 高度场:每座山是一个平滑鼓包 h·(1-d²/r²)²(边缘导数为 0,不会有棱)| 检查 | 结果 |
|---|---|
| 高度场对不对 | 山顶 11.33m · 半坡 6.39m · 山外 0m(半径 55m) |
| 人能不能走上去 | 山外眼高 1.7m → 山顶眼高 13.03m,抬升 11.3m(正好等于山高) |
城区仍然是平的 —— 全图地形要牵动道路、楼基、车流,那是另一个量级的工程,这一轮不碰。
整座城是合并成几块的静态几何(所以几万个三角才只用十几次 draw call)。会动的东西不能待在里面。所以单开两条小缓冲:
| 缓冲 | 装什么 | 实测占用 |
|---|---|---|
| 设施(线) | 摩天轮 / 过山车车厢 / 旋转木马 | 432 顶点(上限 4096) |
| 灯珠(点) | 每个路口两颗红绿灯 | 266 顶点(上限 1024) |
每帧只重写这两条,静态那几万个三角一个字节都不用碰。
这一轮有三次是判据本身错了,不是代码错了。都改了,并写清为什么:
| 原判据 | 错在哪 | 改成 |
|---|---|---|
| "净位移小" = 原地打转 | 绕街区一圈回到原点也是净位移小 —— 那是正常交通 | 量"离起点最远到过多远"(在一格内蹦的车永远出不了 45m) |
| 两车 <5m = 穿模 | 垂直方向两辆在路口拐角相距 3m 是真实的 | 只算同一条轴上的;垂直方向的另计一个数,分开报 |
| 全画面平均色差 = 有没有动 | 细线在转,一平均就淹了 | 改成"有多少比例的像素真的变了" |
> 第三条在改完之后,判据值从 0.28(测不出)变成 1.43%(清清楚楚)。前两条改完之后,被误判的"毛病"归零,真正的毛病(同轴穿模 140 帧)反而暴露出来并被修掉了。
| 套 | 项数 | 内容 |
|---|---|---|
| A/B/C 新增 | 15/15 | 红绿灯 6 项 · 真地形 3 项 · 动起来 3 项 · 车流不退化 1 项 · 无报错 |
| A–G 综合 | 28/28 | 跨格建筑 · 车和机器人 · 街道杂物 · 新立面 · 车流 · 设施 · 贴图尺度 |
| 楼房系统 | 25/25 | 四档分布、12 种立面、随机拼接、老模板不受影响、7 套材质 |
| 第一人称 | 18/18 | 走/看/飞/碰撞/窗口跟人搬/车不上人行道/活物不重叠 |
| 材质+小地图 | 12/12 | 9 套模板 0 报错、7 套材质逐像素互不撞脸、FPS、小地图 |
最强反对:「拥堵波」这个说法可能是过度包装。
我量到的是"速度标准差 10.04"和"停/慢/中/全四档都有"。但速度分散 ≠ 存在拥堵波。真正的拥堵波是一个沿车队向后传播的时空结构(stop-and-go wave),要证明它存在得看"减速事件的传播速度是负的"。我没测这个。现在的证据只能支持"车流不再匀速、有排队和起步",不足以支持"有拥堵波"。
回应:机制上是对的 —— 加减速上限 + 跟驰确实是 stop-and-go wave 的标准成因(这是交通流理论里的经典结果)。但我量到的东西比我说的弱,所以这份报告里"拥堵波"三个字应该读作"具备产生拥堵波的机制,且速度分布确实不再均匀"。
可证伪锚:下一轮如果去测"减速事件沿车队的传播速度",测出来是负值(约 -15~-20 km/h,交通流理论的经典值),才算真证实。如果测出来是 0 或正的,那说明我这套只是"随机快慢"不是"波",需要重做。
诚实列缺口:
*支撑文件:web/terminal/maptext/index.html(车流引擎 v2.1 + 地形高度场 + 动态层)· facilities.js(设施内部布局)· maptext.js(道路/设施/span)· buildings.js(12 种立面)*