Files
NumberSwipe_New/docs/2026-10-21_程序化美术-明亮教具室实现验收-report.md
T

7.0 KiB
Raw Blame History

数字一笔200关 · 明亮教具室实现与验证

日期:2026-10-21。状态:已接入、已构建、自动回归与浏览器验证通过;微信手机验收待进行。

直接体验

导入包 SHA-256:53945F4558F7DD3EA4904B9AE2373E88288B728D16FC359504631AF550D1F251。

已实现的美术

范围 当前表现
整体与UI 暖黄背景、低对比静态几何纹样、奶油舞台、圆角面板、按钮下沿、紫色指路主按钮、程序路径图标
棋盘 矩形/异形完整轮廓、多环与内孔支持、缩缝圆角、短底沿、接触投影、左上亮边与微渐变
路径 普通块整面紫色;真实共边桥接;数字单位不随大块面积放大;当前位置短角标
规则 固定条件框、奇偶副标、可反向通道、类别形状、连续黑黄墙带、开/关/已过门形态
组合状态 蓝橙类别面全程保留;错误采用局部标记与反馈;六边条件框和角标单独适配
指路 独立透明层;按真实入口和块内可通行区域引导;避让数字与规则;擦除已走块的完整面和底沿
教学与完成 教学复用新renderer,隔离玩家状态;门160ms短切换、通关320ms短扫光;完成后原位显示下一关
字体与偏好 Nunito800数字、Noto Sans SC500/600/700中文子集;本地加载、许可及哈希记录;减少动态持久化
调度 静态选关、无活动动效的思考状态与减少动态下静态提示停止RAF;前后台正确停止和恢复

关卡、顺序、规则、存档key、半音音效、抬手续画、逐格回退、撤销、重开、分段提示与手动下一关保持原有行为。当前起始页继续使用原有选关流程,没有增加独立首页或扩展商业系统。未制作额外主题、原创标题轮廓和通关粒子。

运行包中没有PNG、JPG、WebP、SVG图片美术;全部形状由Canvas绘制。qa/下截图仅是验收证据,打包时排除。字体共369700字节,附两份OFL与字集/SHA-256 manifest;构建工具、原始完整字体不进入运行包。

源码接入

文件 责任
src/bright-classroom/theme.mjs 直接导入设计令牌、字体加载、文字与面板基础绘制
src/bright-classroom/geometry.mjs 全闭环轮廓、内缩、圆角、布局、稳定锚点、合并共边与块内引导
src/bright-classroom/board-renderer.mjs 材质、桥、标注、类别、墙门、动效、表现缓存与提示几何
src/bright-classroom/ui.mjs 纹样、图标、按钮与舞台
bright-classroom-build.mjs 检查过的上游绘制接缝替换,保留原业务回写与教学状态恢复
src/main.mjs、src/platform.mjs 宿主UI、输入、设置、脏状态调度、Canvas合成与诊断
src/hints.mjs 保留分段控制器,新增几何引导与安全遮罩绘制
fonts/、build-fonts.py 改名的静态字体子集、许可、manifest及离线重建脚本

上游四份来源快照的内容和哈希不变,source-manifest.json只更新适配版本说明。build.mjs已构建新 game.js;独立包只含三个入口/配置文件、41个音频和7个字体及许可/manifest文件。

验证结果

以下命令在 wechat-campaign-200-r2 执行,均已通过:

node build.mjs
node --test bright-classroom.test.mjs hints.test.mjs lessons.test.mjs audio-copy.test.mjs
node smoke.mjs
检查 结果与证据
模块测试 29/29通过:既有23项+6项新美术检查,包括内孔、200关四种尺寸几何、异形引导不穿洞、类别身份、字体哈希与构建接缝
微信模拟整包 200/200唯一解与触摸通关;撤销/重开/提示;教学状态隔离;四种手机尺寸;前后台;存档/音效恢复。记录见 validation.json
新调度与偏好 字体本地装载调用、减少动态存档恢复、静态页与静态提示无RAF积压,加入 smoke.mjs
浏览器实际像素 200/200关的已走格采样像素在提示前后及撤销重画后相同。使用随包字体,入口 qa/hints.html
人工浏览器检查 基础大块、双色奇偶、六边墙、320×568密集36块;据此修正六边类别标记和焦点角标位置
色对与内容审计 仓库根目录 node docs/design/bright-classroom/audit-design.mjs 通过规定色对检查,关卡统计仍为20章200关
运行包资源 ZIP条目检查无图片美术,无源码、QA截图、字体构建工具和完整源字体

浏览器截图:大块关、六边关。截图来自实际游戏包的浏览器宿主,不是概念效果图或微信真机截图。

微信手机验收

在开发者工具导入新目录或ZIP解压目录,重新编译并生成预览;至少检查基础大块、双色通道、门、六边和r2-163密集盘。关注字体是否实际加载、滑动与回退命中、墙门和两位数、提示遮罩、后台恢复、音效及持续操作耗时。

浏览器验证与模拟触摸不能证明手机的帧率、内存、音色和字体API兼容性。当前没有60fps或微信手机显示已验收的结论;字体失败时有稳定系统回退,并可在 GameGlobal.numberSwipeR2.snapshot().fonts 查看加载诊断。

Evidence → Finding → Path

证据 结论 执行路径
原美术报告、tokens.json、真实200关及来源快照 风格应服从真实几何与规则,不能只替换颜色 轮廓与共边→材质→规则标注→UI与教学
新专项测试、validation.json、浏览器200关像素检查 新renderer保持既有玩法、类别身份和提示填色不变量 实际game.js→模拟微信与浏览器→独立运行包
真实浏览器样张与320宽密集关 六边角落与密集数字需独立排版 六边标记修正→复查样张→保留截图
未执行微信手机预览 平台显示与性能仍需设备证据 新包导入→手机预览→记录设备与实测结果

字体上游:Nunito、Noto Sans SC。实际使用的源文件哈希、输出字重与子集哈希记录于 fonts/manifest.json,相应许可随包交付。