TIT · 客村街区自由骑行
入口:首页「自由骑行」,或 /district.html。与通勤比赛分别加载。
新港中路/赤岗路口新增东侧绿化人行天桥,细化红瓦住宅、蓝色非机动车过街带和街角设施;地图与照片依据、模型精度及通行说明。
幸福社区西门旁新增可导航的7号电动车新港中路店,红色招牌、玻璃入口和展车工位支持进店换肤、涂装和购买头盔;地图影像依据与门店服务。
自动恢复与存档
街区每 5 秒,以及暂停、打开地图、切到后台、返回首页和正常退出时保存探索快照。再次进入先恢复位置、朝向和相机视角,欢迎页显示「继续上次探索」;玩家确认后才继续移动和配送计时。恢复时车辆停稳,正在生效的加速和输入按键释放。
地图中的「存档与读档」提供自动存档和 3 个独立手动槽位,显示探索方式与保存时间。暂停界面的「存档 / 读档」直接滚动并聚焦到存档区;覆盖已有槽位或读取前在面板内确认。读档先保留当前进度到自动存档,再恢复选中的快照,保持暂停。鼠标、触屏、键盘和标准映射手柄共用原生按钮与焦点行为。
快照包含骑行里程与时间、导航目的地、正在取件或配送的订单与计时、已完成订单与分数、骑手登记与制服选择、步行和停放电动车、PANZER 载具及降落状态、广州塔内位置与电梯、观景相机、巡逻追逐状态和手动时间天气。导航按当前路网重建,付费皮肤仍验证当前账号权益;已完成的配送恢复后不再重复结算。路过的行人、炮弹和临时建筑破坏会重新初始化。竞速比赛的中途状态不在街区存档范围内。
网页版保存于当前浏览器同源的本地存储;清理网站数据会删除这些存档。桌面版同时写入各 Steam 用户或离线用户的文件存档,关闭窗口前捕获最后一帧状态;恢复数据也纳入现有 Steam Cloud 进度白名单,正式 App ID 的云同步仍待验收。
存档带有版本、城市 ID 和地图坐标原点,写入前及读取时校验数据,并保留上一个有效版本作为备份。损坏主档可从备份恢复,不会用损坏内容覆盖备份;不兼容的坐标原点拒绝载入。户外位置或载具在新地图中无法安全放置时退回可通行路面,桥梁与下穿道路保留各自高度层。存储不可用、容量不足或场景加载失败时显示错误,不提示保存成功。
2026-10-09 存档保护补充:启动时自动档损坏、主档 / 备份声明其他版本或恢复失败,会保留原档并暂停覆盖该自动槽;仍可将安全的当前探索保存到手动槽。其他版本原档存在时,可从可读 v1 副本恢复探索,但保持原自动档保护;明确读取可用手动槽后恢复自动保存。恢复函数返回失败或抛错都会尝试回滚;回滚也失败时禁用保存并提示重新读档 / 进入街区,避免把部分恢复的状态写回原档。定时保存不会覆盖读档结果和手动保存反馈。
覆盖损坏的手动槽也必须确认,确认区默认聚焦取消,Esc 取消并恢复原按钮焦点。确认绑定主档与备份的原始内容;其他标签页改写后要求重新确认。客户端手动保存等待磁盘确认,读档也先确认读档前快照已落盘;写入失败时显示错误,超过 10 秒仅显示「尚未确认写入完成」,不声称取消了尚在处理的写入。浏览器仍使用同步 localStorage,旧 v1 格式、自动槽及三个手动槽 ID 保持兼容。
2026-10-09 本轮验证:39 项街区存档单测、客户端存储 / Steam 28 项单测、完整类型检查与双 profile 构建 / 预算检查通过;最终原配置的 12 项浏览器存档回归全部通过,包含未来版本保护、失败重试、320 px 手机与模拟手柄。实际重新打包的 macOS 应用手动存档确认落盘,关闭后损坏临时测试主档再启动,备份恢复与原稿隔离通过。完整发布验收记录实际范围,未提高预算。
2026-10-08 验证:592 项单测、完整类型检查、生产构建与发布产物检查通过;17 项 Chrome 浏览器回归覆盖保存恢复、配送、加载失败重试、上下车和 320 px 界面,包含模拟手柄操作。macOS Electron 原生关窗后重新启动的文件恢复用例通过,确认最后一次移动、导航、职业和手动槽位均写入文件。正式 Steam Cloud、实体手机与手柄未在本轮验收。原 300 KiB 入口与 11.25 MiB 总量预算的两项超限,随后按用户授权改用网页 / 客户端预算:最新街区入口 304.2 KiB gzip、完整资源 11.84 MiB,两套体积检查均通过;本轮预算调整未重测手机弱网首次可玩时间。
场景加载界面
进入街区立即显示深绿色城市路线加载页,HTML 与轻量 CSS 先于游戏脚本显示。bootstrap.ts 负责加载主模块,loading.ts 统一控制状态;Vue 骑行界面仅在场景就绪后显示。
进度对应地图读取(客村、滨江、琶洲三份数据)、路网连接、场景构建、骑行物理准备和首帧绘制等实际完成节点,是阶段进度,不是下载字节比例。同步构建前主动让出一帧绘制加载文案;没有定时假进度或强制最短等待。首帧成功绘制后才到 100%,并在 300 ms 内淡出;减少动态效果偏好会取消装饰动画和退场延迟。
加载期间骑行界面与画布不可交互,失败时保留加载页、重试和返回首页入口。主模块下载、地图请求、场景初始化和首帧绘制错误均可进入失败状态;地图请求设 45 秒超时。重试刷新页面,避免复用未完成的场景或物理世界。e2e/district-loading.spec.ts 覆盖慢加载、首屏展示、失败恢复及移动布局。
2026-10-07 加载界面验证:Chrome 开发环境与生产产物各通过 4 项专项浏览器测试,包含主模块与地图失败后的刷新恢复、等待期间禁止开始、375 / 320 px 竖屏与 812 px 横屏、减少动态效果。生产加载器静态 JS gzip 为 2.4 KiB,完整街区入口(含动态加载的必需主模块)为 273.5 / 300 KiB;构建、类型检查、体积预算与发布产物校验通过。无缓存 Fast 3G(1.6 Mbps、150 ms 延迟)与 4 倍 CPU 限速下,首个可玩帧为 12.47 秒,低于 15 秒预算;这是浏览器模拟结果。
统一城市入口
首页以「自由骑行 · 广州城市地图」作为广州内容的统一入口。广州塔漫游、丽园至腾讯通勤、客村与琶洲探索共用城市路网、导航、碰撞和昼夜设置;地图内的出发地点与活动按钮继续保留。旧 canton 环线与 commute 压缩竞速从首页移除,历史纪录与诊断接口保留兼容。
云港环线和随机地图保留为街机竞速;道具赛与两圈计时共用这两种赛道,经典直线与弯道练习保留各自的玩法规则。
地图依据与精度
采用 OpenStreetMap 的 WGS84 路网和楼栋轮廓。数据快照时间为 2026-10-06T20:58:23Z。范围为 113.3155–113.326 E、23.094–23.105 N,约 1.32 km²。
包含 180 段道路、638 个道路节点、276 个楼栋轮廓。真实节点负责路口连通,建筑保持非矩形边界和院落空洞。地面、三维建筑、物理碰撞、地图和导航使用同一份以米为单位的局部坐标;没有把上一版压缩通勤线的坐标混入这份地图。
这是基于公开资料的街区模拟,不属于完整实测数字孪生。公开数据可能遗漏楼栋、出入口和小路;未标注的楼高根据类型估计,外立面、树木与路灯是风格化制作。已支持两座滨江桥梁的坡道骑行及广州塔室内游览;地下通道与实时交通尚未模拟。地图选点为地点附近的可骑行路段,专属建筑与公园根据公开影像制作;未声称实测每个门牌、窗位或树木位置。滨江扩展范围与两座桥详见文末。
保留原始单行和禁行字段,游戏探索导航使用双向连接;标注禁止骑行或私有的道路不会参与导航。路线不是现实道路导航,也不用于判定现实道路通行规则。广州大桥、海心桥另外加入游戏骑行桥面;其他楼梯和立交层级暂未开放。
TIT 官方图集 提供红砖厂房、低密度园区与玻璃窗口的风格参考。上一版精修南门、微信楼与炉体仍在通勤场景保留;自由骑行版优先服从公开地图的实际楼栋轮廓,没有把游戏化缩放园区直接覆盖到真实路网。
步行、上下车与视角
- 桌面和触屏均显示「上车 / 下车」与视角按钮。按 X 停车下车;旁边被墙体阻挡、位于深水或落差过大时拒绝下车,并显示原因。步行离车过远或不在同一层时,上车按钮显示距离 / 楼层状态。
- 户外默认第三人称,可以看见骑手与电动车;按 V 或视角按钮切换第一 / 第三人称。B 控制后视镜。步行与骑行各自记住视角选择,保存在当前设备;不改动现有探索存档格式。坦克继续使用既有战斗镜头,室内与观景游览保持专用镜头。
- 桌面点击场景捕获鼠标,无需按住即可连续环视;Esc 释放并暂停,继续后再次点击场景重新捕获。地图、暂停、剧情、窗口失焦与后台会释放鼠标并清理移动输入。浏览器不支持或拒绝捕获时仍可按住拖动;触屏保留拖动观察。
- 步行 W / S 前进后退、A / D 左右横移,方向以镜头为准;斜向不会加速。骑行保留 A / D 转向。上下车保留镜头朝向,释放上一状态的按键,避免刚上车就意外加速。
- 第三人称镜头使用现有 Rapier 世界的球形扫掠避让墙体和设施,遮挡时立即缩短距离、离开障碍后平滑拉远;过近时隐藏本地角色以免遮住画面。移动端按钮保留原生触控与键盘可访问行为。
僵尸突围
「僵尸突围」作为自由探索中的可选玩法接入:欢迎页、暂停菜单及地图的城市游览分类可直接开始,首页快捷入口也进入同一座城市。单人无需建房、准备或联网;挑战借用已加载的地图、街景和画布,从暂停或结算菜单退出后恢复原来的骑行、步行或游览位置。挑战从附近可通行的地面道路开始,探索模拟暂停;室内、配送、追逐和拦停期间不可开启。战斗规则、武器、HUD、音效、触屏与手柄操作复用城市合作实现。
「邀请好友一起玩」沿用城市联机大厅和房间同步,切换前保存探索位置,退出后返回街区。同一对局中可以寻找电动车、上车驾驶或双人共乘,停稳后下车继续步行战斗;1–4 人沿用同一房间和独立个人状态。旧固定路线房仅保留历史兼容。详见僵尸突围。
骑行和导航
探索快捷键统一为 V 视角、F 上下车(兼容 X)、B 后视镜、I 外卖箱、Z 加速道具;移除 B 倒车别名,避免同键触发两个动作。比赛骑行仍使用 F 道具,标准手柄保留既有操作,户外增加方向键上切换视角。
客户端调参入口为 apps/dayun-kicker/src/config/:district/ride.ts 管理街区速度、加减速和道具,district/patrol.ts 管理巡逻限速、点位、追逐与拦停;竞速、渲染、输入与音频按功能分别管理。街区速度以 km/h 配置后自动换算供物理模拟使用;界面提示与限速牌共享配置。单位和调整方式见配置目录的 README.md。
- W / ↑ 按住加速,S / ↓ 按住先减速、停稳后继续倒车,Shift 或触控刹车可完全停车,A / D 转向;没有自动前进、计时结束或赛道横向锁定。
- 硬质铺装极速 120 km/h;Z 使用极速电池道具,6 秒内上限 150 km/h,从使用起计 18 秒冷却,过期平缓回落。草地上限 72 km/h,进入草地平缓减速。倒车极速 25 km/h,极速电池不提高倒车上限,前后换向先刹停;同时按加速与倒车时停车。高速转向角速度随车速降低,倒车按车轮几何反转转向,HUD 和车内仪表显示倒车状态与绝对车速。
- Q / E 左右踢,Space 智能选择附近行人或停放车辆方向;保留踹腿动画、能量与冷却,近距离命中时行人短暂踉跄,停放车辆会被踹飞。触控界面提供左右踢、智能踢和加速道具按钮。
- B / 后视镜按钮开启或关闭后方视图,默认关闭。256 × 88 缓冲,桌面最多 20 Hz、触屏最多 12 Hz,不重复渲染座舱或更新阴影图;镜头刷新帧包含额外场景绘制成本。
- 三处游戏巡逻点有警用摩托与 25 标牌。70 m 内超过 25 km/h 持续 0.45 秒会被发现,警车沿导航路网追逐;低速停车且警车到达 4 m 内,拦停 3 秒;拉开 110 m 并维持 6 秒可脱离,结束后给予 12 秒重新出发的缓冲。限速与追逐均为游戏规则。
- 新港中路与赤岗路、江海大道的游戏交警会检查地面电动车:靠近蓝色检查位、刹车停稳后检查头盔与号牌,有问题时整改并复查放行。装备可在地图中的安全装备面板调整,状态同步模型和存档;违规骑手拒不配合会衔接追逐拦停。步行、坦克、上层高架和水域不触发,详细规则见 路口电动车检查。
- 移动端五个独立触控按键,可同时按住前进/倒车与转向;释放、取消、切后台、暂停或打开地图会清理按键。
- M 打开地图;可点任意街道,也可选 TIT、麦当劳艺苑路创意园店、丽园雅庭、两处花园、广州艺术博物院、客村、艺景路和赤岗西路。
- 地图支持放大、缩小、拖动、全图和定位,适配触屏拖动。
- 路径从当前所在路段的实际位置规划,显示小地图、转弯距离与道路箭头;偏航后重算,可取消导航继续探索。
- R / 掉头按钮:低于 9 km/h 掉头;「回到路面」用于从绿地或墙边恢复。
- 日间、黄昏、夜间支持反射玻璃、窗灯、路灯和车灯。
- HUD 和地图实时显示虚拟车辆对应的 WGS84 经纬度、当前道路与附近地标,可打开 OpenStreetMap 查看同一点。坐标是原始地图投影的逆变换;无需获取玩家现实位置,不把附近地标当成精确门牌。
运行边界
模拟与渲染分离,60 Hz 固定步长,HUD 约 10 Hz 更新。Rapier 球形扫掠按真实建筑边界阻挡;地图边缘有可见围栏。地面把道路、路口、路边和园区铺装绘制到不重叠的共享表面,消除路口叠面闪烁。入口精修地块使用独立细节材质,外围地面留下对应空洞,不叠加共面网格。建筑按 120 m 网格合批保留视锥裁剪;共享玻璃纹理、树木模型和标牌图集。普通建筑离地块包围盒约 260 m 后切换为无窗饰的真实轮廓体块,保留至 1,900 m;切换带 24 m 缓冲,避免在边界来回闪跳。古塔与博物院超过 650 m、街道设施网格超过 190 m 时隐藏。无逐窗灯光或实时反射捕获。
街道精修与光照
不改动公开地图的道路和建筑边界,增加建筑底座、檐口、玻璃入口、雨棚和通用店面标牌。园区红砖以米为单位重复铺贴;墙面底部用顶点色增加贴地层次。路面使用共享的细颗粒法线及粗糙度纹理,保持同一高度的不重叠地面,避免叠面闪烁。
路边配置按所有道路的完整宽度、路口和建筑边缘计算净距,也纳入窄的园区服务道路。行道树、路灯、树池和长椅是美术配置,花园内还增加种植与休憩点位,不是实测设施位置。树池、树干、灯柱和长椅使用同一份布局生成 Rapier 碰撞。树冠保留卡通切面和投影,关闭树冠接收自身阴影,消除条纹。
街道设施按 80 m 网格合批。夜间灯头和地面光池使用共享材质与实例,最近两盏无阴影点光源照亮墙面和树木;按距离降低灯光强度,复用固定灯源,避免重建着色器。昼夜同时调整天光、月光、雾及反射强度;手机不支持浮点帧缓冲时使用直接渲染。
街区为独立生产入口,与首页共享已有车辆和渲染资源;地图数据进入街区时才请求,游玩不访问地图供应商 API,也不需要地图密钥。
数据与授权
地图数据 与 数据说明 随静态产物发布,按 ODbL 1.0 提供。三维界面和地图均显示可点击的 OpenStreetMap 署名。导入脚本为 scripts/import-district-map.mjs。
验证
地图连通、单向约束、路段内起终点、刹停、自由转向、导航抵达和凹形建筑轮廓有单元测试;真实 Rapier 碰撞通过浏览器测试,以避免 Node 测试环境的 WASM 导入限制。 浏览器覆盖桌面及 320 px 多点触控、地图选点、横屏、暂停和 WebGL 恢复。手机浏览器模拟不能替代真机帧率验证。
2026-10-07 验证记录:304 项单元测试通过,桌面和手机骑行、碰撞与首页中英文窄屏共 5 项浏览器回归通过。75 秒骑行中切换 24 次地图与主题,无运行错误;预热后几何体、纹理数量均无增长。所采样最高绘制调用 204 次、三角形 83,026。生产入口 gzip:游戏首页 269.9 KiB、街区 239.7 KiB,保持原有 270 KiB 预算。
生产弱网测试采用无缓存 Fast 3G(1.6 Mbps、150 ms 延迟)、4 倍 CPU 限速:街区首个可玩帧 9.07 秒,原通勤赛道 9.99 秒,均低于现有 15 秒预算。
2026-10-07 街道精修验证:306 项单测和 5 项街区浏览器回归通过,覆盖真实树池碰撞、重复视角与主题切换的资源稳定,以及无浮点帧缓冲的夜间渲染。固定街道视角最高绘制调用 206 次、三角形 46,617;75 秒移动骑行切换 24 次主题与目的地,无运行错误,所采样最高 176 次调用、40,249 三角形。重复相同视角预热后几何体与纹理数量无增长;探索新网格会首次上传已创建的几何体,移动测试中上传计数随可见范围增加,纹理数量保持稳定。
生产预算验证:首页入口保持 269.9 KiB,街区入口 243.4 KiB(gzip)。Fast 3G 与 4 倍 CPU 限速下,街区首个可玩帧 10.67 秒,原通勤赛道 10.00 秒,仍低于 15 秒预算。
TIT 入口 270 米精修
范围沿实际入口至北侧路线的前 270 m,楼栋以距这段路线 65 m 内的园区建筑为主。坡屋顶将每个原始屋顶三角形沿屋脊分割,保持凹形轮廓与院落,新增封闭山墙、分段工业窗、窗框窗台、壁柱、檐口与落水管。未改动 OSM 占地或建筑碰撞边界,屋顶形态与窗位为美术演绎。
园区墙砖使用 256² 颜色与灰缝高度贴图,四块横砖 × 八层,重复尺度 0.96 × 0.68 m(单块含缝约 24 × 8.5 cm);墙根和檐下增加顶点色暗部。黄昏减少橙色偏色,用偏冷天光填充阴影,泛光保持现有轻量配置。
铺装由共享的 surfaces.ts 数据驱动地面绘制和固定步长骑行判定:主通道沥青、部分园区支路和人行侧带为砖铺装、园外人行侧带为石铺装,两片入口前场为风格化砖铺地,不声称实测每块铺装。交叉处沥青优先;所有硬质铺装目前普通上限为 120 km/h、道具上限 150 km/h,草地上限为 20 m/s(72 km/h),用 2.4 m/s² 阻力逐渐消除超速,不在切换地面时瞬间截断速度;刹车与反向踏板均以 24 m/s² 减速至零,120 km/h 约 1.4 秒停稳。独立刹车优先于油门并保持停车,反向踏板在停稳后继续按住会倒车。下列早期验证记录中的 90 km/h 是当时版本的上限。
入口地块使用约 2K 的地面颜色/材质分类图和共享 256 × 1024 细节图集,包含沥青细粒、40 × 20 cm 编织砖和石板的颜色变化、法线与粗糙度。少量材质钩子在原生 MeshStandardMaterial 中按米坐标混合细节,保留 Three 的 PBR、阴影、车灯、雾与无浮点缓冲降级;地面总共两个不重叠网格,没有全图增加几何细分或每块砖的网格。
2026-10-07 入口精修验证:310 项单测、类型检查、6 项街区浏览器回归通过,包括砖铺前场正常加速、自然驶入草地、独立刹停、真实建筑和树池碰撞、320 px 多点触控、横屏、WebGL 恢复和无浮点缓冲的夜景。四个固定视角 × 三个主题截图无控制台错误,最高 211 次绘制调用、76,625 个三角形。重复相同视角预热后,几何体与纹理上传计数均稳定。
约 75 秒的 390 px 移动浏览器模拟持续骑行、24 次主题与目的地切换,无运行错误,最高 184 次调用、55,695 三角形;三个主题预热后纹理数量保持 30,继续探索新网格时几何体首次上传计数增加 34,未将它误称为无增长。生产预算检查通过:首页 269.9 KiB、街区 245.8 KiB(gzip)。无缓存 Fast 3G 与 4 倍 CPU 限速:街区首个可玩帧 10.92 秒、通勤赛道 10.07 秒,低于 15 秒预算。实际手机帧率仍需真机验证。
TIT 周边地标与两处花园
2026-10-07 按公开地图、卫星影像和历史街景继续核对,地标元数据保存在 places.ts,与原始 ODbL 地图数据库分开。没有更改 180 段道路与 276 个原始建筑边界,也没有把高德、百度地图瓦片或商业三维模型打包进游戏。浏览器运行不依赖这些地图服务。
- 麦当劳采用 广州艺苑路创意园店,百度地点页地址为新港中路 397 号自编 56 号,与麦当劳官方餐厅公示中的店名交叉核对。店铺位置对应园区西侧的 OSM 475115790 厂房;透明玻璃双门、拉手、门内取餐柜台、深色招牌、黄色双拱和钢架雨棚为风格化演绎,门和柜台尺寸不是实测数据。选择“园区午餐”或“滨江咖啡”,沿导航到玻璃门前 1.25 m 取餐范围内,以不超过 1.2 m/s 的速度连续停稳 1.25 秒即可领取。路线包括最后一段人行道进出;门前预留空地,玻璃门保持关闭并保留建筑碰撞。
- 丽园雅庭百度地点页确认新港中路 409 号、A–E 五栋住宅;可用入口全景采集于 2020 年 3 月,不将它当作 2026 年实景。修正此前偏南的导航点,在 OSM 1075555248 的凹形共同底座内表现五栋住宅、粉砖与米色立面、阳台、门架。楼高、楼栋间距和门架细节为近似。
- 赤岗塔官方外观与介绍:使用 OSM 1336813586 的占地与高度,制作九层八角塔、逐层收分、对齐窗洞、叠檐和塔刹。赤岗塔公园的范围、步道与种植为公开影像启发的近似布置;园内铺装可自由骑入,树池、长椅与告示牌支柱有对应碰撞。
- 广州艺术博物院官方建筑介绍:保留 OSM 847909993 不规则轮廓,增加向上外张的玻璃外壳、鱼鳞状光伏幕墙、金属收边、穹顶与入口,夜晚调整为暖色背光。真实建筑的 21,008 片幕墙以一张共享 256² 程序纹理表达;并非逐片几何复制。
- TIT 入口小花园和赤岗塔公园两处都纳入地图。入口花园放在现有南门前场,是对用户所说小公园的景观近似,正式名称、精确边界与种植仍待实景校准。保留红砖步道、两片绿地和休憩区域。花园与博物院前场的铺装和车速判定共用
surfaces.ts,不因走上石板或砖路被当作草地减速。
地图参考能力:本次观察到高德网页的卫星、3D 图层以及百度网页的「地球」卫星和「全景」入口;高德地点检索出现登录要求,最终使用可公开访问的百度地点页、卫星与历史全景,结合 OSM 和官方照片。百度经纬度与墨卡托坐标不是 WGS84,离线将参考点由 BD09 转为 WGS84 后与道路/轮廓核对,仍视为近似入口点。
模型合批并按距离隐藏;阳台玻璃采用带原有占用 UV 的共享单面窗,薄窗台不单独产生阴影,楼体仍正常投影。反射沿用昼夜缓存的天空环境,未增加逐窗灯光或透射渲染通道。地图中的地点列表独立滚动,关闭按钮保持可见,避免新增目的地把手机地图挤出屏幕。
本轮验证:314 项单元测试、类型检查及 7 项街区浏览器回归通过;最后补充古塔独立目的地和花园路径边缘判定后,手机地图、砖路/草地和地标导航碰撞三项再次通过。覆盖 320 px 多点触控、独立滚动的地点列表、门柱碰撞、无浮点帧缓冲设备上的地标夜景及 WebGL 恢复。六个地标视角 × 三个主题无控制台错误,最高 160 次绘制调用、83,469 个三角形;预热后重复视角的几何体和纹理数量不再增长。
69 秒的 390 px 手机浏览器模拟骑行,切换 13 次主题与目的地,无运行错误或页面横向溢出,最高 189 次绘制调用、62,644 三角形。首次访问不同场景单元时几何体上传计数从 211 增至 322;第二轮起重复游览维持 322,三种主题预热后纹理保持 32。生产发布检查与资源预算通过:首页 269.9 KiB、街区 250.5 KiB(gzip)。Fast 3G(1.6 Mbps、150 ms 延迟)和 4 倍 CPU 限速下,街区可玩帧 11.64 秒,原通勤赛道 10.14 秒,均低于 15 秒预算。未进行实体手机帧率验证。
2026-10-07 倒车与提速验证:320 项单元测试(四个 worker)、类型检查、Chrome 的 8 项街区浏览器回归通过。覆盖 90 km/h 加速及刹停、墙边倒车退出、倒车撞墙的 Rapier 扫掠、失焦时清理 B 键、320 px 倒车与转向双指操作、触控取消和地图打开时清理按键,以及横屏五键完整显示。修正倒车按钮按下时的文字对比度后,手机回归与截图再次通过。生产构建、性能预算与发布产物检查通过:首页 267.9 KiB、街区 250.2 KiB(gzip)。此轮未重复弱网加载和真机帧率测试。
珠江 · 广州大桥与海心桥
自由骑行加载原始 kecun.json 与离线 riverside.json,以同一原点合并 OSM 节点。范围扩展至 113.3085–113.326 E、23.094–23.1185 N,地图包围框约 4.9 km²。原始园区路网与建筑占地保留,增加滨江道路、珠江岸线、二沙岛与海心沙的水域空洞和 49 个滨江楼栋轮廓。
扩展数据于 2026-10-07 获取,Overpass 返回的路网快照为 2026-06-01,河面及建筑快照为 2026-05-31,没有将这些缓存快照称为十月实测数据。两个源查询、时间与 ODbL 署名随数据发布,玩家可分别下载街区与滨江 JSON。运行时不请求在线地图瓦片。
- 广州大桥:参考广州市住建局的全面通车资料,新旧两桥并行,官方总长约 1,000 m、总宽约 48 m。三维沿两条真实桥曲线表现混凝土连续梁、桥墩、梁帽、双桥面、侧带与栏杆。游戏中梁高、墩距及灯带属于近似美术布局。
- 海心桥:参考广州市政府的建筑介绍及照片,保留曲线梁、侧倾拱的识别特征。官方拱跨度 198 m、总长 488 m;三维沿 OSM 步道曲线表现弯曲木质桥面、单侧白拱、吊杆、拱脚、支承与护栏。地图中步道中心线与完整桥体边界并非同一数据,因此桥形和尺寸仍属于风格化近似。夜间使用缓存的白拱与暖色边缘自发光,无逐灯灯源。
- 珠江用带岛屿孔洞的真实多边形生成水面,陆地移除相同水域,避免草地覆盖河面。共享 128² 波纹法线缓慢滚动,沿用已有昼夜环境反射;无实时倒影、透明水面或额外渲染通道。
- 岸墙和护栏沿水域边界布置,Rapier 阻挡与可见岸线一致;两处带标识的游戏下水坡道同时在模型与碰撞中留口。树木与道路装饰不在水上生成。新增广州塔轮廓作为滨江方向地标,避免通用楼体把塔的占地渲染成长方体;塔架与高层外观为程序模型近似。
- 全图与小地图显示河面、岛屿和两座桥。南岸观景点保留,另增两桥「南岸上桥」及「北岸出口」导航。桥面、坡道和护栏现已开放游戏骑行,使用独立高架节点,只在桥头连接地面路网。海心桥现实源数据的禁骑字段仍保留在离线数据中,模拟通行不代表真实许可。
桥体、河岸按距离隐藏;结构合批,共享杆件几何,移除连接处看不见的端盖。昼夜仅修改既有材质,水面不在每帧分配几何或纹理。
桥梁本轮验证:324 项单元测试、类型检查、9 项 Chrome 街区回归通过,覆盖桥梁地图图层、两条观景路线、岸边 Rapier 阻挡、320 px 双指控制与两座桥目的地选择,以及原有 90 km/h、倒车、暂停、WebGL 恢复与无浮点缓冲夜景。移动观景点调整后对应两项回归再次通过。五个滨江视角 × 三种主题的实景截图无控制台错误,最高 78 次绘制调用、71,867 三角形(建筑预览视角,不含骑行座舱)。
弱网检查曾超过 15 秒预算,性能追踪定位到街道布局中的全量间距遍历及重复临时数组分配。改为附近网格精确距离检查、缓存园区步道段,不改变碰撞布局。在 Fast 3G、4 倍 CPU 限速下,布局阶段由约 5.6 秒降到约 0.46 秒;独立生产预算测试首个可玩帧 12.65 秒,低于 15 秒预算。生产资源检查通过:首页 267.8 KiB、街区 254.3 KiB(gzip),总产物约 10.9 MiB,保持原有预算;实体手机帧率未测试。
广州塔夜间照明
参考广州市文旅局的广州塔介绍与照片,夜间塔架使用六组共享彩色自发光材质,观景层与塔尖同步亮灯;黄昏弱亮,白天恢复中性金属并关闭自发光。彩色灯光按骑行时间缓慢插值,一轮约 96 秒,暂停时停止变化。这是风格化灯光演绎,不模拟现实日期的灯光节目。
补足塔架水平环带,使远处的细腰轮廓更易辨认。只对发光塔架减弱雾的衰减,保留建筑遮挡及昼夜环境;没有新增逐灯光源、纹理或渲染通道。街区相机远裁剪扩大至 2.2 km,普通建筑与街道设施继续沿用距离隐藏;天空绘制到远平面,修复原有 700 m 天空球遮住远塔及塔尖的问题。
本轮 4 项滨江单元测试、类型检查和 4 项 Chrome 浏览器回归通过,覆盖昼夜开关、暂停时颜色稳定、重复切换资源复用、夜间无浮点缓冲渲染、WebGL 恢复和滨江导航。两个塔景视角 × 三种主题 × 桌面 HDR / 390 px 手机降级渲染共 12 张截图无控制台错误;预热后重复切换几何体和纹理计数稳定,预览最高 96 次绘制调用、76,224 个三角形(不含骑行座舱)。生产构建、资源预算和发布产物校验通过:街区入口 254.7 KiB(gzip),首页保持 267.8 KiB。此轮未重复弱网加载,也未测实体手机帧率。
草地、远景与广州塔精修
全区草地与入口铺装共用按米平铺的细节图集,草坪增加细叶纹理、低对比度斑块及粗糙度变化。细纹与法线按屏幕像素覆盖范围一起淡出,避免远处闪烁;图集边缘留白与显式纹理导数避免相邻材质串色。草地与铺装按分类图原有边界重建颜色,收紧低分辨率贴图的绿色晕边,保留屏幕像素抗锯齿和道路黄线。入口地块边缘的颜色和材质分类同步过渡到外围贴图,继续使用两个无重叠地面网格及原有水域孔洞。骑行的草地减速和铺装判定不变。
相机远裁剪扩展至 4.2 km,配合较轻的昼夜雾;远处普通建筑用真实占地的简单不透明体块保留街区层次,无远距窗饰和额外投影。广州塔保留至 3.4 km。这里的数字是绘制边界,不代表所有物体在雾中都同样清晰,也没有补造地图范围外的城市。
广州塔参考广州政府公开建筑介绍,以 24 根连接扭转椭圆的主柱构成收腰外形,增加环梁、错列斜撑、观景层、倾斜塔冠、泡泡舱、阶梯塔基及分段天线。内部玻璃采用不透明材质和结构留空表达通透,昼夜复用既有材质,不增加逐灯光源、透明渲染或额外后处理。夜间彩灯降低自发光强度并保留更自然的雾衰减;暂停仍冻结灯光演变。这些结构、比例和灯光属于程序化美术近似。
广州塔采用共享材质的分组细节:330 m 内显示全部环梁、斜撑和泡泡舱,370 m 外隐藏细小部件,保留主体格栅、观景体量与天线。远景模型约 1.07 万三角形,近景约 1.79 万;切换只修改组可见性,不生成新资源。
为维持原有渲染预算,丽园雅庭相邻楼层的连续竖柱由 600 段合并为 40 根,保持原位置和外形;桥面标线与木板接缝只保留可见顶面。夜间光池仍只有一个实例绘制批次,但只提交可见路灯所在网格,避免路灯已隐藏后远处草地上还留着光斑。普通楼和广州塔的远景切换、主题修改及光池更新均复用现有资源。
2026-10-07 本轮验证:331 项单测、应用类型检查、生产构建、资源预算与发布产物检查通过。采用本机 Chrome 的 Metal 渲染完成 9 项街区浏览器回归,覆盖移动触控、草地减速、碰撞、昼夜、资源复用、无浮点帧缓冲及 WebGL 恢复,维持每个断言视角少于 300 次绘制调用和 90,000 三角形。默认 headless-shell 的 SwiftShader 软件渲染曾造成操作超时,该轮未作为通过结果。
9 张最终预览涵盖草地近景、远近塔身昼夜与黄昏、滨江及高位视角,无控制台错误;最高 145 次调用、71,213 三角形(独立建筑预览,不含座舱)。生产街区入口为 257.8 KiB、首页为 267.8 KiB(gzip)。无缓存 Fast 3G 与 4 倍 CPU 限速下,街区首个可玩帧 14.004 秒,通过 15 秒预算;本轮未测实体手机帧率。
丽园雅庭 17 层与楼栋关系修正
住宅从原模型的 15 层改为 17 层;公开房源页面也记载总层数 17。ABCDE、C 居中、D 在左上、D/E 奇数层连廊、C 前圆形花园和地下车库信息来自用户补充。暂按北朝上的地图理解左上:D 西北、E 西南、C 中北、B 东北、A 东南。A/B/E 的具体方位与尺寸没有可靠的公开平面图交叉确认,仍属于待实景校准的布置;本轮公开检索未取得可用的新卫星或街景画面,不将旧 2020 年全景当成最新实测。
getLiyuanLayout() 统一生成五栋占地、17 组窗带和 1/3/5/7/9/11/13/15/17 层共 9 处连廊。实体碰撞改用五栋轮廓,移除原模型把整片凹形共同底座当作实心建筑的处理;楼间通道与院落可骑行,连廊最低层保留地面净空。C 前设置四段环形绿地与径向铺装,中央直径约 9 m 留空,不摆树木或其他障碍。五栋有字母与层数标牌。
地下停车入口位于 E 栋南侧,包含 B1 标志、入口框及关闭提示;这次没有实现地下楼层、下坡与垂直碰撞,入口不可通行。车库位置、花园半径和连廊尺寸属于美术近似,原始 OSM 文件保持不变。
D 栋 201 阳台照片校准
用户提供的院内照片注明拍摄于 D 栋 201 阳台,并补充圆形空地周围有树、地面有彩色地砖、住户有阳台和空调外机。本轮以照片里的米色小瓷砖立面、灰白小方砖与暗红砖带、金属阳台栏杆和空调风扇面校准程序化模型。五栋的四面均补上 17 层逐户阳台与外机;这些重复模块表示住宅立面节奏,不据此推断真实户型或住户数量。
圆形花园现有四段环形绿地内增加棕榈、阔叶树与低矮绿篱,保留中央铺装和径向通道。院内树木使用树干碰撞,取消普通街树才有的方形花池碰撞;地面继续采用原有石质铺装判定。照片的彩砖颜色和小砖尺度使用原有地面材质绘制,不增加铺装网格或地砖实例。
getLiyuanLayout().photoView 保存接近 D 栋二层阳台、看向圆形花园的参考机位,随地图原点一起重投影。楼栋位置、201 的具体朝向、层高、树木数量和铺装尺寸仍是美术近似;单张照片不足以确认完整总平面,未改动原始 OSM 数据。照片本身未作为游戏贴图或发布素材。
阳台窗、楼板、栏杆和外机合为四个绘制批次,根据观察位置只提交朝向玩家的立面。栏杆与外机在 105 m 内恢复、125 m 外隐藏,复用同一批几何体与材质;远景保留窗带和阳台楼板。新楼板已提供层间边缘,移除原来被楼板遮住的整面装饰条,继续执行默认视角 300 次绘制和 90,000 三角形预算。
2026-10-07 验证:街区 98 项单测、应用类型检查和生产构建通过,资源预算与发布产物检查通过。Chrome 的门柱、中央花园与 D/E 通道三个位置分别检查白天、黄昏和夜间,共 9 个实际骑行视角,最高 247 次绘制、86,956 三角形,含座舱与行人。桌面 1440 × 1000、手机 390 × 844 预览无控制台错误或横向溢出;5 项浏览器专项通过,覆盖 320 × 568 多点触控、院落与连廊通行、门柱碰撞、昼夜预算及无浮点渲染目标的夜景。浏览器验证使用 Playwright 与本机 Chrome;临时开发服务关闭文件监听并隔离依赖缓存,避免其他开发进程的热更新与依赖优化干扰。机位预览采用二层高度作视觉校准,未实现住宅室内漫游。
自由骑行互动
路边 NPC 与停车
路边人物覆盖客村、TIT、滨江与琶洲已加载街区,包含短距离步行、停步转身和站立待机,以及多种服装、肤色与背包。当前以本地几何和关节运动适配方块风格,后续动作精修可参考 Mixamo。步行速度约 0.85 m/s,往返范围为出生点前后各 3 m;整段路径检查建筑、路面、树池、灯柱、水域和停放车辆,暂停、地图和切后台时冻结,游览时按游览镜头显示附近人物。
新增路边停放的汽车与电动车。汽车只安排在保留至少 5 m 中央通行空间的宽路路缘,电动车放在人行道有净空的位置;整车范围避开交叉道路、建筑、街道家具和水域。停放车辆使用与外观尺寸一致的 Rapier 碰撞体,玩家步行和骑行都不能穿过车身。骑行时可近距离踹飞停放车辆,复用赛道的侧踹、翻滚与前翻计算;目标判定按车身表面距离,并检查墙体遮挡。车身与旋转碰撞体一起移动,扫掠碰撞阻止穿墙,落地后可再次踢击;暂停和地图打开时冻结。正在运行的公交仍按线路行驶。
丽园雅庭、丽影广场和7号电动车门店附近各增加三辆固定停车电动车,共九辆,位置与僵尸突围的可驾驶车辆共用 CITY_SCOOTER_PARKING_SITES。固定车位先检查整车净空并预留占位,再补足随机路边停车;普通街区继续使用原有 96 辆总池、14 辆可视上限,以及车身、车轮和接地软阴影批次。所有静止的路边电动车均可上车骑走,借车时隐藏同源停车模型并禁用其碰撞体,下车后更新同一辆车的位置及碰撞,不复制车辆。原电动车和之前借过的车留在各自停车位置;借用过的电动车使用稳定 ID 随探索存档恢复。汽车、公交和被踢飞中的车辆仍沿用原有街景与碰撞;突围中的车辆和双座共乘由本局权威管理。
路边车辆还包含 10.4 m 标准城市公交与 7.2 m 短轴电动接驳车,各有木棉红、日落橙、暖阳黄、榕荫绿、珠江蓝、晚霞紫六种涂装。标准公交使用前后双门与车顶空调,接驳车使用单门与电池舱;两种车型都有窗带、轮毂、后视镜和数字线路牌。配色与虚构线路号维护在 src/config/district/streetActivity.ts,模型部件维护在 src/render/busModel.ts。公交在原有 96 辆停车池中最多占 12 辆,沿宽路路缘确定性布置,完整车身检查与碰撞使用同一尺寸,保留至少 5 m 中央通行空间;另有新港中路「社区接驳 01」运行车辆与六个公开坐标站台,丽园雅庭附近使用「赤岗路口②/①」分站;发车、靠站、信号与来源记录见公交站与运行机制。十二套停车模型在街区模块加载时缓存,并复用原有车身、车轮和软阴影批次,不增加独立车辆绘制批次或模型下载。
路边停车加入短车头紧凑面包车和方头轻客面包车,分别以五菱宏光、金杯一类的日常轮廓为灵感;车型为原创风格化几何,使用瓷白、银灰、米金、雾蓝、墨绿五种配色。两类车长分别为 4.42 m、5.08 m,完整外观、停车净空和 Rapier 碰撞共用 STREET_VEHICLE_SIZE。十套模型在街区模块加载时缓存,复用现有车身、车轮和软阴影批次,65 m 外保留车身、窗带、灯与轮胎,省略门缝、雨刷、轮毂等细节;仍在原有 96 辆停车池内确定性布置,两类面包车合计最多 16 辆,保留 12 辆公交上限和至少 5 m 中央通行空间。
面包车验证(2026-10-09):车辆模型、停车布置、配送和公交逻辑共 42 项单测通过;本机 GPU 浏览器回归 5 项通过,覆盖桌面 1440 × 900/手机尺寸 390 × 844 的四种公交及面包车外观、原有 300 次绘制/90,000 三角形预算、人物暂停/地图冻结,以及六种停车车辆的碰撞和中央通行空间。应用类型检查、生产构建、资源体积预算、发布产物与 Git 资源策略检查通过。
面包车、公交、货车与工程车辆的外观和玩法用途可在车辆建模图鉴集中查看;文档站提供分类筛选与模型大图。
彩色公交验证(2026-10-09):公交模型、街道布置与配送逻辑共 24 项单测通过,覆盖十二套模型的碰撞范围、三角形上限与贴面重叠,以及确定性停车和中央通行空间。系统 Chrome 的 8 项浏览器回归通过,覆盖桌面 1440 × 900/手机尺寸 390 × 844 的两种公交外观与默认渲染预算、人物暂停/地图冻结、四种车辆停车碰撞及四条配送路线;线路牌朝向调整后复测两项公交外观回归通过。应用类型检查、生产构建、资源预算和发布产物检查通过。
配置集中在 src/config/district/streetActivity.ts:全图最多 192 名路人、96 辆车,每个 100 m 区域限制密度;165 m 内只提交最近的最多 28 名路人与 14 辆车,人物姿态最高按 30 Hz 更新。人物和车身、车轮、接地软阴影共三个共享批次,切换地点复用资源。回归入口为 streetActivity.test.ts、e2e/street-activity.spec.ts 和含停车碰撞的配送路线回归。
新增路边活动验证(2026-10-07):应用类型检查、街区 157 项单测、生产构建和发布产物校验通过。系统 Chrome 的 7 项回归通过,覆盖四条配送路线、踢击、上下车、游览、桌面 1440 × 900/手机尺寸 390 × 844 的步行与暂停/地图冻结,以及汽车和电动车的碰撞。琶洲同一路边视角显示 7 名路人与 3 辆车;桌面为 185 次绘制/48,669 三角形,手机尺寸为 170 次/40,623 三角形,均在默认渲染预算内。新增场景模块延迟加载,生产街区入口为 297.5 KiB gzip,低于当前 300 KiB 门槛。当前整个项目产物约 11.71 MiB,仍高于 11.25 MiB 总量预算,发布前需处理;此次浏览器尺寸仿真未替代实体手机和弱网启动验收。
新的行人、巡逻点与追逐是游戏布置,不代表现实中居民或交警的位置。行人和摩托用共享材质的实例批次绘制,近处才提交;踢中行人表现为短暂踉跄。巡逻参数与侧向踢击距离在 patrol.ts 独立验证;追逐路径来自已有离线路网,最后 30 m 可在 Rapier 球形扫掠确认无障碍后接近路边车辆,避免只追到道路中线。捕获前再确认没有墙体阻隔;无法到达且路径耗尽、停滞 6 秒时解除追逐。后视镜缓存刷新与主视图共同计入渲染诊断,关闭时不进行额外绘制;默认关闭以保持原有街区渲染预算。
2026-10-07 验证:355 项单测、类型检查、生产构建、资源预算与发布检查通过。Chrome 完整 14 项骑行回归通过,追逐末段修正后又通过原警情、5 m 路边停车及丽园通行 3 项专项(共覆盖 15 个不同用例)。覆盖真实键盘 120/150 km/h、Shift 刹停、↓ 连续倒车、左右与智能踢实际命中、警情与拦停、丽园院落及通廊、320 px 多点触控、主题切换与图形恢复。
后视镜额外检查采用 DPR 2、390 × 844、夜间且禁用浮点渲染目标:开关 8 轮后几何体/纹理计数保持 285/24,强制图形上下文恢复后画面正常,无控制台错误。采样刷新帧 343 次绘制/112,816 三角形,缓存帧 203 次/66,114;没有将开启镜头的双场景绘制误计为默认 90,000 三角形预算内。丽园建模预览包含座舱的 9 视角峰值为 253 次绘制/86,236 三角形。生产街区入口 265.2 KiB gzip、首页 267.8 KiB,均低于 270 KiB。无缓存 Fast 3G 与 4 倍 CPU 限速下首个可玩帧 14.343 秒,通过 15 秒门槛;未测试实体手机帧率。
2026-10-07:丽园—省二医—腾讯自由骑行扩展
此前 riverside.json 东界为 113.326,广东省第二人民医院与腾讯广州大厦在其外。旧通勤赛道中的地标并没有加入自由骑行。现入口并行加载三份离线地图;新数据沿新港中路、新港东路、海洲路、科展街、鼎新路延伸至琶洲。具体来源和精度见 琶洲地标说明 与 public/maps/README.md。
- 新增 155 个公开 OSM 建筑轮廓,合并后共 480 栋;不压缩道路节点间距。新地图保留车行方向、已知道路宽度、桥与隧道层级。无宽度标签的道路宽度仍由道路类型/车道数估算。
- 新增「回到丽园南门出发」入口,从现有模型南门旁的道路开始,以有向路网规划到腾讯。该起点至目的地参考点约 3,605 米;不是对现实导航时长、精确门址或道路开放情况的保证。普通自由选点仍沿用原自由骑行行为。
- A/B、D/E 两对楼之间各有 1/3/5/7/9/11/13/15/17 层连廊,共 18 座,保留地面通路。地图的丽园标记和起点统一对齐模型门,避免旧标记与模型相差几十米。
- 丽园位置仍待用户实际出入门的分享点核对。政府公开环评附图支持现模型所在街区,但不能证明无名称的 OSM
1075555248就是全部丽园边界;旧通勤 AMap 起点反算也存在冲突,不将其强行套用。 - 水面重新获取并合并完整珠江/黄埔涌关系后,在联合覆盖范围裁切;不沿原东界造岸墙。短桥在真实平面线形上提供可骑桥面,岸墙只按桥宽开口,侧栏与物理防护一致。高度仍采用平面骑行模型,没有宣称复原实际桥坡。
- 真实涵洞和新版广州塔路短桥修复旧路网与新水域的冲突。磨碟沙涌仅有中心线,缺少水岸数据,未虚构一份「精确」水面。
- 地面采用 512 米分块,附近细节分辨率 0.5 米/像素,最多 4 块,离开后释放;远景地面只一次绘制。普通窗带保留外侧面与窗檐,远楼按 360 米区块合批,仍保持各原 120 米区块的细节切换。
- 地标模块与街区场景按需分包并与地图、物理引擎并行下载。首屏 JS 270 KiB 和移动弱网 15 秒门槛保持不变;完整离线琶洲数据增加约 99 KiB,产物总量预算明确从 11 MiB 调为 11.25 MiB。
这里的「实际地图尺度」指局部投影的米制距离与公开轮廓。建筑立面、部分楼高、院内铺装、景观、丽园分栋尺寸仍为参考重建,本次并未达到全场景 1:1 实景复刻。
腾讯与欢聚前庭增加独立石材铺装,医院铺装使用公开院区边界,并剔除道路、建筑和水域。入口连接与草面分类使用同一数据;六处浅花坛同时进入物理碰撞。景观布局仍属参考设计。大地图改为桌面左右布局,手机保留纵向滚动。
扩图后的追逐回归修复:Rapier 大尺寸地板可能在水平 capsule 查询中产生数值误命中,令警车误认为回道路的短路段被阻挡。canTraverse 只排除支撑地板和玩家自身,继续检测楼墙、河岸和家具;未修改 25 km/h、追逐或拦停规则。四组真实物理复现均在路边停车后约 3.87 秒拦停。
最终验证:377 项单元测试、类型检查、生产构建、资源预算与发布产物校验通过。16 个 Chrome 街区用例全部覆盖通过:整套运行中 15 项通过,手机地图出现真实布局故障,修正后手机多点触控和完整通勤 2 项专项再次通过。手机地图固定标题和页脚,主体独立滚动,地点按钮不再互相遮挡。通勤回归沿约 3,605 米路线每 0.8 米检查一次真实 Rapier 碰撞,未遇到岸墙或建筑阻断,并验证起步与到达提示。此前的倒车、踹人、加速、追逐、后视镜与图形恢复行为保留。
最终生产街区入口为 247.3 KiB gzip,首页为 267.8 KiB;完整产物 11,320.7 KiB,低于明确调整后的 11,520 KiB 预算。无缓存 Fast 3G(1.6 Mbps、150 ms 延迟)、4 倍 CPU 限速下首个可玩帧 13.270 秒,通过 15 秒门槛。最终医院、腾讯前场和塔楼四个预览视角无控制台错误,最高 153 次调用、63,605 个三角形(独立建筑预览,不含座舱);整套浏览器回归继续检查原有默认场景预算。实体手机帧率未测试。
用户卫星图:会议中心西南广场与丽园西侧道路
依据用户本轮提供的卫星截图及文字确认,将会议中心(OSM 1075536925)西南、丽园雅庭西侧的空地改为浅色石铺广场。用户确认浅水池是白色广场内部的深灰三角形,不是右侧的大块黑色屋顶;建筑 1494635891 及所有原始楼栋轮廓完整保留。
titSite.ts 集中管理广场、浅池、入口步道、路旁树列和新增连接道路。布局按现有地图轮廓对齐,边长、树距和池深根据图片估算,不视为测绘。浅池水面低于铺装约 3.5 cm,池底约低 20 cm,低池沿约 16 cm;地面按真实三角边挖孔,水面采用深灰、不透明环境反射材质,池沿碰撞沿同一三角边生成,包围框内的池外区域仍可绕行。没有实时倒影或新增光源。
西侧支路补上原离线路网缺失的园区连接,北端共享既有节点 4073352766,南端在原 1458929947 的线段内插入共享节点;不是只把两条路画到彼此附近。支路与原有南段贯通到新港中路,北侧楼间窄段不种树,较宽段两边增加树列。截图路名为「丽岗街」(用户文字称「丽港街」);只为该南部接入段标注此名,丽园住宅环线保留原未命名状态。「丽园西侧路」为游戏描述名。
补充数据通过 withTitSiteObservations 在内存加入,使用负数节点/道路 ID,并记录用户图来源;不回写或冒充原始 OSM 提取。小地图和大地图使用同一份补充道路、广场、水池与树位。广场铺装分类、树木碰撞和渲染保持一致。
本轮验证:387 项单元测试、类型检查、生产构建、资源预算和发布检查通过。新增广场与西路、完整丽园—腾讯通勤两项,以及手机触控、地面材质、夜景降级、图形恢复、街道预算、丽园院落六项浏览器回归,共 8 项通过。真实 Rapier 沿西路、丽岗街至新港中路连续移动,不跳过阻挡;广场两条路径通行,池三边阻挡、斜边外侧与三角包围框空角可绕行,18 处树位全部进入实际场景。新道路使用灰色沥青,原园区红砖路保留。
四个昼夜/俯视预览没有运行错误;预览最高 218 次绘制调用、84,829 三角形(独立场景,不含座舱),浏览器的原有默认整帧预算断言仍通过。最终街区入口 248.6 KiB gzip,完整产物 11,328.1 KiB,均在既有预算内。本轮未重跑弱网启动或实体手机帧率测试。
用户西侧照片:彩色人物装置与入口道闸
按用户提供的 TIT 西侧街道照片,在艺苑路旁的既有西门北侧加入红、橙、黄、绿、青、蓝、紫七块人物镂空钢板,保留斜向排列、薄板厚度和矮砖砌基座。人物轮廓使用真实几何开孔,正反面都能透过装置看到街景;不将照片作为贴图覆盖模型。入口补充高立式「T.I.T 创意园」导览牌、停车牌、两台抬杆道闸、金属隔离柱与摄像头,并将设施所在区域及门口连接处铺成石铺前场。导览牌的「时、科、创」文字面沿艺苑路朝南,面向南侧来人的方向;牌体没有朝西正对车行道。
titSite.ts 记录 user-west-photo-2026-10-07 来源、设施尺寸、朝向与前场范围;titWestEntrance.ts 负责静态模型。位置、人物姿势和尺寸根据照片与现有路网近似重建,不声称实测。此处是艺苑路西门,与丽园西侧补充道路和会议中心西南广场分别布置。原始道路与楼栋轮廓不改写;自动树木、路灯和路缘避开装置位置。基座、导览牌、道闸机箱、隔离柱及杆件共用布局生成 Rapier 碰撞,抬起的闸杆位于骑手上方,现有西门通道保持可骑入。
模块按材质合批,最多 5 个静态绘制网格、少于 4,500 个三角形,复用昼夜几何体和材质,不增加实时光源。只生成一张导览牌图集,场景销毁时统一释放几何体、材质及纹理。
2026-10-07 本轮验证:街区 110 项单测、应用类型检查和生产构建通过;4 项 Chrome 浏览器回归通过,覆盖实际骑入西门、基座和导览牌阻挡、石铺地面、昼夜绘制预算、390 px 画面、既有树池碰撞、草地减速、无浮点缓冲夜景及图形恢复。9 个桌面街景截图及手机预览无运行错误。独立构建输出的预算检查通过:首页入口 269.8 KiB、街区入口 269.7 KiB gzip,完整产物 11,408.0 KiB;本轮未重跑弱网启动或实体手机帧率测试。照片和验证截图保存在忽略的 artifacts.local/tit-west/。
西侧照片补充:树列、弧形路灯与旧住宅立面
titWestStreetLayout.ts 将照片所见的两侧树列和弧形挑臂路灯加入同一街道布局:8 处较高阔叶树、5 处约 8.6 米路灯。自动布置设施让开这些位置,建筑、道路与西门通道保持净空。渲染、灯杆及树池碰撞、夜间灯头位置与地面光斑使用同一布局,继续复用两盏局部实时光源。
艺苑路西侧四栋住宅沿用地图中的 1311481056、1311481055、906981398、1311481054 原始轮廓。原来无高度标记时统一采用的 28 米住宅体量,按照片改为约六至七层;已有明确高度标记仍优先使用。米黄旧墙、灰粉色方砖裙墙、卷闸、独立窗户、凸出阳台、防盗网及少量空调外机由 titWestStreet.ts 建模,不使用连续办公楼玻璃窗带。照片只用于判断外观,楼高、层数、窗位和树灯尺寸均是视觉估计,未声称取得新的实测街景数据。
四栋楼合计 5 个绘制网格,近景朝向可见部分少于 6,000 三角形;背向、相机后方及远处细部收起,真实楼形保留。裙墙与窗栏各使用一张 256 px 程序纹理。修正立面合批中单个网格未烘焙变换的问题,并统一处理顶点索引与共享资源释放。
2026-10-07 补充验证:121 项街区单测及最终涉及模块复测通过;应用类型检查、生产构建和资源预算通过。西门真实骑入、13 处树灯碰撞、人物基座阻挡、手机预览,以及丽园通行回归通过。9 张昼夜街景与 390 px 预览无运行错误,西侧取景最高 265 次绘制、86,877 三角形。首页入口 270.6 KiB、街区入口 278.3 KiB gzip,完整产物 11,251.0 KiB。
本次整帧回归仍记录两处超限:全场景街灯测试约 91,703 三角形,广州塔附近无浮点夜景测试约 102,064 三角形,超过原有 90,000 限制。临时隐藏本轮住宅模型后,远广州塔视角的三角形数不变;这些结果未被标记为通过。未重跑弱网启动或实体手机帧率测试。对照照片、截图及审计记录位于忽略的 artifacts.local/tit-west/。
广州路牌、路口信号及桥梁通行修复
trafficFacilities.ts 沿真实路网放置双面路名牌及主要道路交叉口的信号设施。路名使用原始地图中文及大写拼音;蓝底白字参考广州市南沙区民政局对 DB4401/T 56—2020 的说明。牌面 1.18 × 0.36 m、立柱总高 2.26 m,尺寸依据广州公开道路工程文件的路牌设计说明。双面分别绘制文字,背面不镜像;牌面沿街道方向安装,端部方位根据地图北向生成。
信号模型使用 300 mm 灯面、镀锌立杆、悬臂、黑色灯壳、弧形遮光罩、LED 点阵、左转箭头及红色站立/绿色行走的人行灯图案;灯面规格参考制造商公开产品规格。每个模拟路口的两个通行轴各分直行、左转两个受保护相位,直行绿灯 30 秒、左转绿灯 12 秒,每相位随后有 3 秒黄灯和 2 秒全红清空;左转放行时,对向直行和人行灯为红灯;人行绿灯末段闪烁。暂停或打开地图时模拟时间与信号一起冻结。斑马线和停止线沿对应道路方向绘制,灯杆及路牌杆碰撞位于车行道外。静态硬件按网格合批,四组实例化灯面按距离裁剪,不增加逐灯光源。
这些设施按广州样式与米尺度制作。现有数据没有现场路牌坐标、具体灯组型号或真实配时表,因此部署点位、杆件细节及周期是参考重建,不能称为逐处实测的一比一复刻。
大桥骑不上去的旧原因是:景观桥没有可通行路网和高度支持,车辆高度一直锁定地面,桥头有悬空落差,河岸碰撞墙及最低 2 m 的桥墩碰撞还会封住低坡道。bridgeDecks.ts 统一桥面高程、横截面、坡道和导航;桥头从地面平顺起坡,岸边路径先连接桥头外 3 m 的平整落脚点,再由正面进入坡道,避免侧面撞上第一根栏杆柱;落地端护栏后退 1.5 m,保留骑手胶囊进出所需净空。南岸观景目的地仍吸附到地面道路。广州大桥中段高程 15.84 m,海心桥 8.925 m,两座桥的高度属于游戏近似。车辆、镜头及导航箭头随同一高程升降。低坡道所在岸线精确留口,高架桥下保留岸栏;桥墩碰撞止于可见桥墩顶面,海心桥合流段不保留内侧拦路护栏。车辆在桥下通行时不自动吸附到上方桥面。
回归入口:bridgeDecks.test.ts、trafficFacilities.test.ts 与 e2e/bridge-facilities.spec.ts;覆盖桥头与两岸导航、高处支线接续、相位互斥、设施净距、坡道双向通行、护栏阻挡、桥下通行、四条真实桥线及真实键盘上桥操作。截图保存路牌、路口信号与上桥视角。
2026-10-07 最终验证:125 项街区单测、应用类型检查、生产构建及资源预算通过;4 项桥梁与道路设施浏览器专项全部通过,覆盖真实四条桥线双向通行、三个桥头连接、护栏、桥下通道、暂停配时、地图跨河导航和实际键盘上坡。既有骑行与 WebGL 恢复、手机多点触控、广州塔完整电梯游览与窄屏塔内布局回归也通过。蓝白路牌正面、路口灯组和上桥画面已保存预览,路牌杆不穿过文字面。
现有 TIT 西门街灯整帧性能回归仍为 91,703 个三角形,超过 90,000 预算;暂时隐藏新增道路设施后仍为 91,631,未将此项标为通过,也未放宽该断言。最终生产街区入口 279.7 KiB gzip、首页入口 270.6 KiB,完整产物 11,264.4 KiB,均在资源体积预算内。本轮未重测弱网启动与实体手机帧率。
水池与珠江水中骑行
TIT 会议中心西南广场的三角形浅水池现可沿任意一条边骑入、骑出。低池沿按可跨越台阶处理,车辆进入池中后跟随约 -0.2 m 的池底;池沿、三角形轮廓与水面高度沿用原布局,包围框内的池外铺装仍可正常通行。
珠江水域支持缓慢浮行。在海心桥、广州大桥南岸各增加一处宽 6 m、长 8 m、带「下水坡道 · 水中慢行」标识的游戏坡道。地图目的地新增对应下水入口,岸边连接步道接入导航;这些新增通道是游戏设计,并非现实中已确认的下水设施。坡道、河岸开口与车身高程共享 waterTravel.ts 的布局;其余岸栏和桥上护栏保持阻挡。地面短桥与高处桥面优先于水域判定,已在水中的车辆可从桥下通过,岛屿孔洞保持干燥。
水中正向及道具加速均受 50 km/h 上限约束,倒车保持 25 km/h 上限,入水后的超速以阻力逐渐减下;松开加速后车辆更快停下。浅水池可自行骑出,珠江可沿下水坡道返回岸上,也可使用已有「回到路面」按钮恢复至地面道路。HUD 与仪表显示水中状态,水域探索时暂停道路偏离重规划,上岸后恢复原导航。水花本身采用 24 个回收复用的实例圆环,最多一次绘制,不新增光源、纹理或离屏渲染;陆地不绘制水花,暂停与地图开启时其模拟时间冻结。
2026-10-07 初版水域版本验证(当时限速 18 km/h):最新 135 项街区单测、应用类型检查、生产构建与资源体积检查通过。6 项水域/桥梁浏览器回归通过;最终水域输入用例再次覆盖 390 × 844 手机画面、暂停冻结、18 km/h 限速和干燥道路恢复。两处河岸道路到下水坡道的导航连接另以真实 Rapier 连续扫掠复核通过。生产街区入口 287.3 KiB gzip、首页入口 274.9 KiB、完整产物 11,295.7 KiB,未调整体积预算;未重测既有 TIT 三角形超限视角、弱网启动或实体手机帧率。
50 km/h 水中限速与场景水面
水中正向限速现为 50 km/h,道具加速也不能突破水中限速;倒车保持既有 25 km/h。入水超速继续逐渐减速,上岸后恢复道路速度规则。HUD 从同一配置读取上限。
reflectiveWater.ts 使用 Three.js Reflector / Refractor 的镜像相机、投影采样与斜近裁剪面。珠江的五块多边形共享一对离屏纹理,TIT 浅水池独立使用其水面高度;每次仅刷新最近可见的水面高度,捕获时隐藏全部水面及水花,避免递归。反射捕获保留建筑、桥梁和广州塔的主要轮廓,省略小窗构件、交通及粒子;折射层仅包含池底、池沿、坡道、河岸及水下桥墩。主画面保持自身细节层级。
水面按空气/水界面的约 0.02 法向反射率计算 Fresnel,低视角加强倒影,俯视浅池可以看清程序生成的池底网格。深度纹理由实际斜投影的逆矩阵还原水下位置,再按厚度衰减透射颜色,避免直接使用普通近远裁剪公式造成错误。三组不同波长、方向的波纹代替原有平行条纹;水花明确在透明水面后绘制。
采样配置位于 config/render/district.ts:桌面 512²、最高 20 Hz,手机 256²、最高 10 Hz,固定视角降至 5 Hz。波纹使用游戏时间;静止暂停画面不重新捕获,移动的漫游相机及 FOV 变化仍可刷新投影。渲染目标使用无多重采样的字节纹理,兼容缺少浮点帧缓冲扩展的设备。捕获关闭额外阴影更新,恢复 HDR 目标、viewport、scissor、背景、雾、XR 和所有临时可见性;显卡恢复使缓存失效并重新捕获。
参考:Three.js Water 官方说明、维护者对 Water2 内部反射/折射目标的说明、维护者关于旧手机浮点目标兼容性的建议。共享捕获、细节筛选及暂停缓存是针对本街区的实测优化。
2026-10-07 验证:145 项街区与整帧渲染单测、10 项相关浏览器回归通过;最终缓存调整再次通过 5 项水域测试。覆盖真实键盘加速到 50 km/h、两处坡道 Rapier 连续扫掠、实际倒影像素、水下物体透视与裁剪、暂停冻结、390 × 844 手机布局、禁用浮点目标及显卡恢复。相关检查使用当前已安装的工具运行。
完整帧计数包含反射、折射、主画面、阴影及骑手层。90 帧采样中,移动河面视角峰值由直接整场捕获时的 150,073 三角形降至 67,099,156 次绘制;浅池峰值由 241,626 降至 116,926,349 次绘制。浅池反射额外开销约 19,562 三角形 / 63 次绘制,已增加增量回归断言。既有 TIT 主画面该视角仍约 97,364 三角形,超过原 90,000 预算;未隐藏捕获成本或放宽旧断言,未重测实体手机帧率或弱网启动。
最终类型检查、生产构建与资源体积检查通过:街区入口 294.6 KiB gzip、首页 282.8 KiB、产物总量 11,338.1 KiB,保持原预算。水花排序与夜间车灯调整后,真实水域输入及无浮点目标 / 显卡恢复两项用例再次通过。
立交桥与上下层骑行
2026-10-08 校准江海大道/新港中路路口:双幅三车道高架增加箱梁、矩形桥墩和连续边线,桥面高采用 6.8 m 估值;补全石榴岗路地面段、转向支路、医院服务入口和行人等候岛。当前立交提取共 139 段道路,其中 53 段具有独立高程;参考来源、模型精度与通行验证。
2026-10-07 补充 interchanges.json:保留客村立交和江海大道/猎德大道高架的 OSM 道路走向、原节点、单行方向及层级,生成 53 段桥面、匝道和下穿道路。客村立交分为下穿道路、地面跨越、环岛和上层新港路跨线桥;地形挖出下穿开口,桥下可以独立通行。桥面高度使用 −5.8 / 0 / 5.8 / 11.6 米的分层估算,匝道从原地面连接处连续起坡;这些高度与护栏、桥墩尺寸属于模型估算,未取得现场测绘数据。
桥面渲染、连续高度采样、护栏和挡土墙碰撞共用 bridgeDecks.ts。上下层相交处保留各自节点,导航根据骑手高度选路,并在对应桥面绘制箭头;只通过实际共享节点连接匝道。护栏分叉开口按骑手净空裁剪,桥墩避开下层道路宽度。下穿挡土墙延伸至地面,地面跨越处留出开口。普通高架不再铺成重复的地面道路,也不生成地面信号灯或地面家具。
地图新增「客村立交 · 环岛上桥」与「客村立交 · 上层跨线桥入口」,游览视角新增客村立交。江海大道/猎德大道高架按实际中心线建模,其地面入口可以自由骑行进入;未新增未经验证的导航捷径。水中仍使用既有 50 km/h 上限。
实测还修复了街区键盘油门被继承的竞速输入提前消费的问题:街区自行处理移动键,竞速模式保持自身绑定。新增桥面和下穿路共 106 次双向 Rapier 骑行通过,含实际桥墩、家具与护栏;地面骑手无法从侧面跨过下穿开口围挡。客村立交真实键盘上坡与导航、广州大桥/海心桥及路牌信号回归通过,保留页面截图。游览视角符合 90,000 三角形 / 300 绘制调用的既有预算;既有 TIT 超限视角未在此更改,未测实体手机帧率或弱网启动。
最终验证:145 项街区与整帧渲染单测、8 项桥梁/立交/水域浏览器回归通过,包含 390 × 844 手机游览画面与水中 50 km/h 回归。应用类型检查和生产构建通过;街区入口 299.7 KiB gzip,产物总量约 11,501 KiB,未提高已有资源预算。生产预览继续使用原本的 43187 端口。
电动车上下车与步行
当前电动车支持独立停放。骑行时按 X、手柄 RB 或点「下车」,车速不高于 1.5 m/s 时在左右两侧及前后寻找有净空的落脚位置;保持当前桥面层级,避开护栏、建筑和超过 0.65 米的高差。车辆继续停在原位置,骑行外观复用已装备的电动车模型、几何体与材质;停车模块在首次操作时加载。停放车辆有独立 Rapier 碰撞体,行人无法穿车。停放时仪表保持零速,步行输入不驱动车辆油门和刹车灯;坡道上保留车身坡度。
步行使用 W / ↑ 前进、S / ↓ 后退、A D / ← → 横移;桌面点击画面后移动鼠标环顾,触屏拖动环顾。移动速度为 2.8 m/s,沿观看方向行走,使用相同的建筑、家具和桥面碰撞;步行不增加骑行里程,不启用踢击、加速电池、后视镜或骑行车灯。浅水池可下车和步行,珠江深水处需先沿坡道靠岸。车与人的状态分别保留,暂停、地图、城市游览和入塔不会带走停放的车辆。
靠近停稳的车辆至 2.8 米内、高差不超过 0.65 米且路径无遮挡,可按 X、手柄 RB 或点「上车」进入原车或就近可达的路边电动车,返回该车的位置及朝向。远离时提示最近车辆距离,大小地图继续标记个人原车的位置。普通街区与僵尸突围共用上下车规则和操作;切换后需释放之前按住的移动输入,再重新加速。街区手柄 LT 刹车,左摇杆后推倒车;Y 保留入塔/出塔等情境交互。触屏前进、后退和转向按钮随步行模式更新。
路边借车验证(2026-10-11):138 项相关单测与 9 项浏览器回归通过,包含完整广州地图下九个固定车位的实际骑出、停车和存取;浏览器覆盖三处借车、连续换车、原车保留、步行及骑乘刷新、挑战返回、320 px 触屏与 RB 单次上下车,以及操作图示与原有层级/入塔交互。生产预览的启动、按需加载与上下车烟测无页面异常。完整类型检查、生产构建、文档及发布产物校验通过;街区入口通过 349.8 / 350 KiB gzip 预算,未提高限制。城市合作入口仍有既存超限(374.6 / 350 KiB),发布前需继续缩减。
生产封面 PNG 的 IDAT 流已无损重新压缩,323,854 → 273,323 字节;解压后的像素流逐字节一致,保留图片元数据,用于抵消新增交互代码的资源体积。
2026-10-07 验证:156 项街区与整帧渲染单测逐项通过,街道穷举检查单独运行通过;9 项相关浏览器用例覆盖上下车、真实步行输入、车辆碰撞、−5.8 / 5.8 / 11.6 米立交层级、浅池与深水、暂停、显卡恢复、触屏、手柄、入塔与原有桥梁/水域骑行。应用类型检查、生产构建及原 43187 生产预览上下车烟测通过,无页面运行异常;截图保存在工作区的 vehicles 目录。
最新整体资源检查未通过:街区入口 305.9 / 300 KiB gzip,总产物 12,008 / 11,520 KiB。当前产物同时包含新增的版本化 PWA 图标,后续仍需压缩整体资源;未调整现有预算。检查前同步了本次构建的清单,避免读取旧构建哈希。
PANZER 坦克彩蛋(2026-10-07)
户外探索时连续输入 PANZER(大小写均可),原创履带坦克会从附近的空中落下。地图里的“彩蛋代码”折叠面板也可输入,适用于触屏。落稳后先按 X 下车步行,再靠近坦克按 X 上车;W / ↑ 前进,S / ↓ 倒车,A / D 原地转向,Shift 刹车,X 下车。驾驶时使用第三人称跟随视角,桌面点击后移动鼠标、触屏拖动可环顾。
- 同时保留一辆坦克和原电动车,停车后均可重新驾驶,地图分别标记两者。刷新或使用地点传送可重置。
- 坦克最高 60 km/h,倒车最高 20 km/h,水中仍限速 50 km/h。车辆碰撞使用 2.8 × 5.2 × 2.5 米的 Rapier 形状,转向和摄像机也检查障碍。
- 降落只选择同一层、避开建筑/护栏/玩家的开阔区域;桥面支持保持高度,上方有立交桥或地面的落点会被排除。落地前重新检查占用,暂停、地图打开和图形设备中断均会冻结降落。
- 输入识别会截获代码里的暂停、转向、踢人和掉头键;单独按 P 仍可暂停/继续(900 ms 识别窗口)。输入框和组合快捷键不触发彩蛋。
- 模型使用原创程序几何、材质和标签,无新增图片或 3D 下载资源。模型与触屏面板均按需加载,最多保留一个模型,地点重置会释放资源。
验证:38 项相关单元测试、6 项 PANZER/电动车浏览器回归通过;实测覆盖暂停降落、触屏输入、上下坦克、原地转向、倒车、换回电动车、设备恢复,以及 5.8 / 11.6 米桥面行驶和实际墙体碰撞。类型检查、生产构建和生产页面彩蛋冒烟检查通过。街区入口 299.5 / 300 KiB gzip;项目总产物 12049.2 / 11520 KiB,整体包体预算仍超限,未调整预算。
坦克炮击与场景破坏(2026-10-07)
驾驶 PANZER 时,桌面点击画面后移动鼠标、触屏拖动可旋转炮塔、调整炮口仰角;按 Space、点击画布、触控“开火”或按手柄 LB 发射(LT 刹车,RB 上下车)。Space / LB 可按住连发,每发装填 1.25 秒。炮口闪光、后坐、炮弹、爆炸、弹坑和碎片使用程序模型,最多保留 4 发炮弹、96 块飞散碎片、128 块坍塌碎石及 32 个命中印记。
- 桥栏杆按不超过 4 米的小段击毁,局部爆炸影响附近设施;路牌、信号灯、路灯和长椅一发击毁,树木两发。普通街区楼房需要三发直接命中,击毁后留下碎石。
- 破坏同时更新模型、远景、水面倒影和 Rapier 碰撞;损坏路灯不再投光,信号灯灯头熄灭。广州塔、专门制作的地标、桥面/桥墩及河岸护墙保留。
- 炮弹连续扫过每个物理步的轨迹,炮口被墙遮挡时立即撞墙;爆炸使用遮挡查询,不会隔墙击毁设施。炮弹按游戏抛物线运动,弹坑与碎石是视觉表现。
- 暂停、地图和图形设备中断会冻结炮弹与装填;下车后不接受开火输入。图形恢复保留本局破坏状态;刷新、地点传送及载具重置恢复场景。炮击资源随坦克延迟加载。
验证包含炮口遮挡/连续扫掠/装填暂停、楼房耐久、批量模型局部移除及恢复的单元测试;浏览器使用真实 Rapier 验证高层墙面、三发后可通行、局部栏杆缺口,实际输入瞄准拆除地图楼房、键盘/手机开火、暂停及图形恢复。截图见浏览器测试产物。
最终验证:40 项相关单元测试与 18 项相关浏览器回归通过;追加炮击测试覆盖真实广州大桥栏杆缺口、隔墙爆炸遮挡、键盘/手机/手柄开火、装填冻结及图形恢复。栏杆按 120 米网格显示细节,客村立交远景维持原有 < 90,000 三角形 / < 300 绘制门槛。类型检查、生产构建和生产页面实际召唤/上车/开火冒烟通过,无页面错误;炮击与模型请求在 PANZER 前为 0,召唤后各为 1。街区入口 299.5 / 300 KiB gzip;整体产物 12078.5 / 11520 KiB,总量门槛仍超限,预算未调整。
地铁入口与线路传送
当前街区接入客村、广州塔、赤岗塔、赤岗、磨碟沙五站,共17个有公开坐标的出入口。地图中的地铁目录可导航到入口;停稳后按 E 或点击「进入站厅」,电动车会留在站外,玩家可在站厅步行。入口或站厅的「线路图」可选择目的站与出口,包括本站另一出口;确认后从所选出口步行回到街区。地铁弹层打开时暂停操作,进行中的配送需先完成或结束后才能传送。存档保留站外安全位置与车辆位置,站厅内保存后重新加载会回到站外。
站点/入口位置来自 OpenStreetMap,线路依据公开资料;入口形制和站厅为简化模型,尚未按各站街景或竣工图精细还原。线路地图依据官方站序、换乘及图上坐标重新绘制完整矢量线网,采用 GTA 风格的深色底、清晰站点标记、分级站名与行程高亮,可缩放、拖动、展开,并定位当前/所选站点。传送目的地仍对应已有街区,APM、18号线在地图内各有一站。来源、版本和扩展规则见 广州地铁资料。
外卖箱开合反馈
I、顶部「外卖箱」按钮和地图「外卖箱」标签打开同一背包。面板使用约240ms的短展开/收起过渡,关闭中不接受物品操作;重复开关从当前显示状态衔接,按住快捷键不会重复切换。减少动态效果偏好下直接切换,不播放位移或箱盖动画。
面板内的3D背箱预览和骑手身上的箱盖随背包打开/关闭;铰链与锁扣独立于静态箱壳,不再把可动箱盖合批。步行角色也携带同一背箱外观并同步铰链姿态。预览仅在动画进行中请求新帧,关闭卸载时取消帧请求并清理GPU资源;世界箱盖跟随既有场景循环,不增加独立定时器。使用/丢弃物品仍以数量和提示反馈,没有新增拿取物品或飞入格子动画。