广州游览、时间天气与活动边界
街区入口 /district.html 的欢迎页可进入「游览广州」,也可以从地图切换观景点。游览模式隐藏电驴与骑行操作,使用独立镜头;WASD / 方向键平移,拖动环顾,底部滑杆调整 1.8–500 m 高度。基础观景点包括广州塔、海心桥、广州艺术博物院、TIT、腾讯广州大厦、欢聚大厦;有对应数据时可追加其他特色地点。
骑行、巡逻、配送和塔内电梯在游览期间冻结,原位置和状态保留;返回后从原处继续。如果从欢迎页进入游览,返回时回到欢迎页。选择通勤、广州塔起点或骑行导航则进入对应骑行流程。游览时的地图与暂停仍冻结镜头移动;跨地点切换会清空已按下的方向输入。
时间天气
地图中的「时间与天气」支持 24 小时滑杆、清晨 / 日间 / 黄昏 / 夜间快捷按钮,以及晴朗 / 阴天 / 小雨 / 薄雾。天空、环境光、太阳/月亮方向、光照、阴影与雾随时间和天气变化;灯光、地标夜景和反射缓存仍使用既有三种主题。昼夜流转可选开启,1 秒对应游戏中 1 分钟,地图或暂停时停止流转。
小雨复用 220 条雨线和一个材质;不创建额外灯光、物理碎片或网络请求。入塔时隐藏雨线,prefers-reduced-motion: reduce 下关闭雨线运动与显示。天气是表现系统,当前不改变骑行抓地、巡逻规则或配送奖励;现实气象接入、湿路手感列入待办。
「跟随本机时间」默认关闭,开启后按玩家设备当前时区同步城市时钟和昼夜,包含系统时区与夏令时偏移。地图与暂停期间也跟随真实时刻;切回窗口时读取最新时间。同步时禁用手动时间和加速昼夜流转,关闭后恢复之前的手动时间 / 流转选择。天气仍独立设置,改变天气不会覆盖保留的手动时间。
首页「骑行时段」在白天、黄昏、夜骑之外提供「跟随系统时间」,按设备当前时区自动选择竞速氛围,刷新后保留选择。同步时仅系统时间选项显示选中态;直接点击任一固定时段即可退出同步并保存该手动选择。
竞速设置的画面 Tab 提供同一开关,按城市的昼夜规则选择白天、黄昏或夜间氛围。首页、竞速设置与城市地图共用本机偏好 dayun-kicker.time.v1,Electron 将它保存到 preferences.json,离线也可使用,不上传为 Steam Cloud 成绩。
手动时间、天气与昼夜流转偏好保存在本机 dayun-kicker.district-environment.v1,兼容原有日间/黄昏/夜间设置;存储不可用时本局仍能切换。游览位置不跨刷新恢复。
范围与扩建
广州塔中心的第一批现有街道补全已接入,包含新增道路、共享节点刷新、步道铺装、单行车道标线和广场通行;来源、复现方式与未通过的手机启动性能记录见中心街区更新。
首期规划为以广州塔模型中心为中心、半径 5 km 的圆形,直径 10 km,面积约 78.5 km²。地图「半径 5 km」按钮展示圆形范围、现有内容和「小云重工 施工中...」标识。圆形边界用于骑行位置保护、导航选点校验和游览镜头限制;实际骑行由现有开放边缘的 Rapier 碰撞墙约束,并保留 0.4 m 胶囊余量。斜向移动按与广州塔中心的直线距离校验,下载包围盒的四角不属于规划范围。
施工围栏分别沿半径 5 km 的规划圆周、现有数据与规划范围的交集边缘设置,重复标注「小云重工 施工中...」;当前骑行碰撞边界位于现有开放区域,防止进入尚未建设的空白区域。约 78.5 km² 内的其余街区需要分批补齐,开放边缘随新地图数据扩建,不将空白区域当作真实建模;导入范围、坐标与数据来源见资料索引,扩建和破坏系统见待办。
半径 5 km 范围与施工围栏验证(2026-10-08)
35 项相关单元测试和 4 项范围浏览器回归通过,覆盖圆形范围、16 个方向的真实 Rapier 移动/重置、原方形四角限制、现有街区完整保留、圆周及开放街区围栏,以及桌面/手机概览。圆周使用 512 段围栏近似,渲染与碰撞共享裁剪轮廓;单测检查斜向接缝和不包含广州塔中心的扩展片区。320 × 568 手机仿真的五个地图按钮仍至少 44 × 44 px,说明、画布和工具条无遮挡。应用类型检查、生产构建、资源体积预算和发布产物校验均通过,预算未调整。
此前方形方案与施工围栏验证(2026-10-08)
此前 10 × 10 km 方形方案的 32 项相关单元测试、应用类型检查、生产构建、资源体积预算和发布产物校验通过。13 项相关浏览器回归覆盖当时的范围概览、真实 Rapier 四边及四角的移动/重置/通行查询、南北边缘施工围栏、导航与通勤、配送和存档恢复。320 × 568 手机仿真的范围说明、地图和工具条分开排列,五个地图按钮均至少 44 × 44 px;568 × 320 横屏游览控件也保持可见。软件渲染下的长流程超时使用项目既有 Metal GPU 配置复测通过,资源预算未改变。此记录保留为方形方案的历史验证,不代表当前半径 5 km 圆形边界的验证结果。
验证记录(2026-10-07)
跟随本机时间追加验证:单元测试覆盖分钟 / 午夜和保留手动设置;浏览器使用纽约时区验证冬夏偏移、跨午夜、暂停期间同步、竞速氛围切换、键盘 / 模拟手柄操作及跨入口保存。Electron 实测重启后从本机文件恢复开关。当前全量 103 个单元测试文件 / 513 项通过。
本次桌面构建与发布资源完整性校验通过;两个入口的首屏预算通过(竞速 288.5 / 街区 298.1 KiB gzip,上限 300 KiB)。共享工作区当前资源总量 11,981.6 KiB 超过 11,520 KiB 上限,包含新增的约 448 KiB 图标资源;总量门槛仍未通过,预算未放宽。
- 全量单元测试 86 个文件 / 430 项通过;类型检查、生产构建和资源校验通过。
- 游览、时间天气、配送、广州塔与桥梁的 11 项浏览器回归通过:独立镜头移动、原骑行位置与订单计时保留、塔内电梯冻结/续行、天气保存、地图/暂停停止流转、入塔和减少动态效果下隐藏雨线,以及真实 Rapier 越界移动/重置。
- 320 × 568 竖屏、568 × 320 横屏手机仿真与桌面截图经过检查;六个观景点样本最多 213 次绘制、89,761 三角形。动态游览会改变可见物体,这些数字是固定观景点样本。
- 功能验证快照在 Fast 3G、4 倍 CPU 限速、冷缓存下,街区首次可操作帧 14.767 秒;首页竞速首次帧 10.213 秒,均满足 15 秒目标。街区样本余量较小,扩建前仍需继续做移动设备性能验收。
- 启动分析发现路牌/信号灯放置重复遍历全部道路和建筑,现复用局部空间索引;净距测试仍用独立全地图算法验证,保持道路与建筑碰撞约束。性能测试附带启动阶段及资源耗时,便于继续定位回退。
浏览器与性能验证使用独立的内容快照,避免同一工作区并行开发改动干扰。设备仿真与桌面 Chrome / Metal 的结果不能替代 Android/iPhone 真机测试。
游览光照与帧耗时修复(2026-10-08)
城市和赛道原本已共用 HDR、色调映射与高光处理,但城市另设了较低的环境补光强度。现在城市直接使用 THEME_PRESETS 的补光、地面反射色、太阳/月亮和阴影强度;时间流转时全部插值,天气继续衰减直射光。街面阴影使用与赛道相同的 48 × 60 m 覆盖范围;观看选定高楼时围绕建筑扩大覆盖,转头离开后恢复局部阴影。阴影贴图仍为 1024²,没有增加光源或提高分辨率预算。
CPU 分析发现约 22,320 个场景节点在主画面、反射、折射和骑手层重复更新矩阵。整帧现在只更新一次场景矩阵,各渲染层复用同一份结果;游览和步行不渲染隐藏的骑手层。水面捕获改在主画面完成后更新,供下一帧使用,因此初次加载和显卡恢复时都已有有效的 PCF 深度阴影,避免反射中 sampler2DShadow 读取未初始化贴图导致无效绘制。反射与折射仍计入整帧开销。
本机 Chrome / Metal,1440 × 860、DPR 2、自动分辨率与 60 FPS 上限,在腾讯大厦同一观景点使用真实 WASD 移动 6 秒的对比:
| 指标 | 修复前 | 修复后 |
|---|---|---|
| 实际渲染帧率 | 24.9 FPS | 60.0 FPS |
| 单帧 CPU 中位耗时 | 45.7 ms | 11.4 ms |
| 单帧 CPU P95 | 51.1 ms | 13.0 ms |
| 帧间隔 P95 | 50.1 ms | 16.8 ms |
赛道在相同测试条件下维持约 60 FPS。数据包含水面捕获和新增建筑阴影覆盖,没有降低建筑精度;它是本机特定路径的对比,不代表所有地点或实体手机的帧率。e2e/tour-rendering.spec.ts 记录真实场景更新次数,并将 Chrome 的 WebGL 警告纳入断言,覆盖桌面/手机尺寸、观景点与昼夜切换、高度变化和显卡恢复。
验证通过:6 个相关单测文件 / 21 项单测、16 项浏览器回归和 5 项打包客户端检查;类型检查、生产构建、网页与客户端资源预算、发布完整性及 macOS 签名校验均通过。压缩包解压后的真实 Electron 客户端离线游览实测约 60 FPS,单帧 CPU 中位数 9.0 ms、P95 9.6 ms;昼夜与总部地点切换无外网请求或 WebGL 无效绘制。安装包为 release/local-20261008-024635 下的本地 macOS arm64 构建。