13 KiB
2026-10-22 数字和六边形优化:通道一位数按格宽36%、两位数按30%绘制,上限分别28/25逻辑像素;调整通道及数字牌间距,小屏按比例缩放以避免越界。双色玩法移除圆/三角角标,数字在方块中央,保留奇偶规则文字。六边形厚度1.2–2.2像素,投影透明度0.09,减小偏移、倒角暗部及暖色外晕。发布包:releases/NumberSwipe-campaign-200-r2-明亮教具室-大数字双色轻六边版-20261022.zip。
2026-10-22 指路重新设计:参考任天堂官方《灵活脑学校 一起伸展大脑》玩法画面中的奶油色承托、珊瑚橙强调和清楚的方向标识,结合本游戏圆润积木材质,自行程序化绘制奶油色圆边+浅珊瑚色教学引导带。三个圆角方向标沿圆弧移动,带短柔光尾;终点有贴纸式目标环;减少动态保持静态方向。已走方块、规则文字继续避让。参考图片仅用于分析,未作为游戏资源。连接桥没有改动。
参考:https://www.nintendo.com/hk/switch/azlsa/stretch/index.html 官方示例:https://www.nintendo.com/hk/switch/azlsa/assets/img/stretch/genre5-img3.png 当前包:releases/NumberSwipe-campaign-200-r2-明亮教具室-教具指路设计版-20261022.zip。
2026-10-22 更新:连接桥缩短到格子边缘,仅保留1.2逻辑像素衔接;指路合并连续单元路径,并用二次曲线采样圆滑转角。光点及渐隐拖尾沿同一条曲线按弧长向目标移动,过弯保持平稳速度。减少动态模式保持静态指引。新增圆弧拼接与断段隔离回归测试。当前包:releases/NumberSwipe-campaign-200-r2-明亮教具室-短桥圆弧流光版-20261022.zip。
本轮连接桥与指路精修(2026-10-21):连接桥去掉端部封口、端部倒角和实体厚边,只有侧面保留柔和倒角,两端延伸并渐隐到已走块体内。指路改为暖金色光带、浅金高光、移动光点和方向箭头;减少动态模式显示静态虚线及箭头。提示继续独立绘制并避让已走方块和规则文字。
验收:34项模块测试通过;200关模拟微信触摸回归通过;浏览器200关提示前后及撤销重画的玩家填色像素一致。新增截图:qa/bright-classroom-bridge-v4.png、qa/bright-classroom-hint-v4.png。发布包:releases/NumberSwipe-campaign-200-r2-明亮教具室-连接桥与指路精修版-20261021.zip(位于项目根目录)。
数字一笔 · campaign-200-r2 微信小游戏
明亮教具室程序化美术(2026-10-21)
投影、数字与按钮精修(v3,当前版本)
根据参考图再次区分两类效果:棋块外沿使用黄棕色近边晕染+短投影,底盘则没有实体下沿,只由实际面轮廓alpha投出软阴影。底盘暗部改为淡暖色,避免灰黑底沿看起来像第二块垫子。
数字以真实字形边界定位;原生Canvas若只返回文字宽度,会通过一次离屏alpha测量获得字形边界。普通格数字在视觉中心,大块/异形数字位于左上占用单元区域,输入中心与规则不变。白字增加短暗边和柔光,深色数字使用淡渐变与固定微颗粒;生成缓存不作为外部图片资源。
按钮重新调整实体图标轮廓、视觉尺寸与文字留白,短标签使用随包的站酷快乐体改名子集 NumberSwipePlayful.ttf,字体许可见 fonts/zcoolkuaile-OFL.txt。规则和正文继续用Noto Sans SC。当前有5个字体子集、3份许可;字体源及输出哈希见manifest。
33项模块测试、200关模拟触摸与200关浏览器提示像素检查通过。新版包为 ../releases/NumberSwipe-campaign-200-r2-明亮教具室-投影字效精修版-20261021.zip;微信手机的显示、字体和生成材质耗时仍需新包真机预览。
以下为历史修订记录。
参考图圆润材质修订(v2)
按用户随后提供的效果图重做主游戏区:浅紫 #8178F4、暖奶油 #F9EDD5、金黄背景;移除固定数字框、四角框、双色访问内框和常驻块轮廓线。现在使用 src/bright-classroom/cushion.mjs 从几何距离场生成柔光倒角、下缘暗部和软投影,所有缓存像素均在运行时生成,未引入图片资源。按钮使用同一圆润材质和实心玩具图标;桥接缩细,简单盘面按可用面积放大。
本次用户参考图优先于早期报告的薄描边与低渐变建议,对应参数集中在设计令牌 referenceMatch。密集盘的小号白数字仍采用较深紫面。规则所需的墙、通道、类别符号继续保留,操作和关卡不变。
新版导入包:../releases/NumberSwipe-campaign-200-r2-明亮教具室-参考图圆润版-20261021.zip。以下为第一版说明及历史记录;当前执行30项模块测试。
当前 game.js 已应用暖黄背景、奶油舞台、轻厚度块体、紫色路径、程序图标和圆角按钮。方形、大块异形、六边、通道、双色、奇偶与墙门共用新渲染器;规则教学同步换皮。所有游戏美术均由Canvas路径生成,不使用图片资源。字体为随包提供的Nunito数字800与Noto Sans SC中文500/600/700子集,许可证、字集和SHA-256见 fonts/。
200关内容、顺序、原规则、微信存档key、逐格回退、撤销、分段提示及手动下一关保持原行为。双色已走保留蓝橙面与圆/三角;提示使用真实共边和块内引导,遮罩避让玩家块面与关键标注。新增选关页“设置”中的减少动态开关,保存于本地;静态页面和无动画的思考阶段停止RAF。
直接导入本目录可运行,或解压 ../releases/NumberSwipe-campaign-200-r2-明亮教具室-20261021.zip 后导入。包含 game.js、两个配置文件、audio/、fonts/,无需构建npm。不要使用旧二维码判断新皮肤是否生效,应重新编译并生成预览。
开发预览:在本目录执行 node qa/serve.mjs,打开 明亮教具室试玩,可切换全部200关和五种屏幕尺寸;画前几步/完成本关是验收页工具,正式游戏不提供自动解题按钮。
验证命令:
node build.mjs
node --test bright-classroom.test.mjs hints.test.mjs lessons.test.mjs audio-copy.test.mjs
node smoke.mjs
29项模块测试通过;模拟微信200关唯一解与触摸通关通过,覆盖教学隔离、四种手机尺寸、减少动态存档、静态停止绘制和字体装载调用。浏览器200关已走格采样像素在提示前后及撤销重画后保持一致。自动检查与浏览器预览不代表微信手机实测;仍需手机验收字体加载、密集关手势、音频与帧率。
美术接入在 bright-classroom-build.mjs 与 src/bright-classroom/,上游四份快照未修改。重建依赖本仓库的 docs/design/bright-classroom/tokens.json 与原型内esbuild安装。字体无需在普通构建时重做;补充字集时用 build-fonts.py,读取 .font-sources/ 的上游字体(构建专用),生成改名子集及manifest。来源:Nunito、Noto Sans SC,许可随资源保留。
以下为此前版本的变更记录。
本包源于 G:\项目\NumberSwipe-Variants\campaign-200-r2,版本 scored-2026-10-15-r2。完整保留原版 200 关及 playOrder,不混入原 NumberSwipe 项目关卡,也不重新生成关卡。
导入
微信开发者工具 → 小游戏 → 导入本目录(含 game.js / game.json / project.config.json)。已经构建,不需要“构建 npm”。项目沿用 Variants 根配置中的小游戏 AppID;需使用有权限的微信账号登录,才能真机预览和上传。本次未执行上传。
内容包含原有基础、大块/异形、墙、通道、双色交替、奇偶、节奏门及六边盘面。保留 20 章顺序、全部选关、可关闭教学规则、手势插值、逐格回退、撤销、重开、指路、通关后手动下一关,以及原版半音音阶音效。音频改用随包提供的41个WAV文件和 wx.createInnerAudioContext 播放,保留半音上行与五类反馈音;关闭音效会立即停止,重新开启会播放试听音。微信版不再依赖浏览器振荡器。
选关界面用分页适配微信 Canvas。反馈通过微信原生输入弹窗填写;导出记录保存到小游戏用户目录,并在支持时打开微信文件分享界面。玩法、判定和盘面绘制仍直接使用 r2 模块,通过轻量宿主接口适配,不加载 WebView。
来源与验证
src/upstream 下 levels.json、rules.mjs、ui.mjs、audio.mjs 是上游原文件的完整快照,source-manifest.json 记录原始路径及 SHA-256。构建为 ui.mjs 注入微信宿主,替换音频、规则文案和浏览器下载记录入口。上游四个快照文件保持不变。发布包没有 design.json、作者解及反例文件。
存档 key 延续 variant:campaign-200-r2:v1,保存于微信本地;浏览器和微信存储彼此独立,不会自动迁移网页进度。
validation.json:200/200 唯一解及模拟微信触摸通关,撤销/重开/指路,前后台循环和存档/音效偏好恢复。原 r2 的 8 项测试也全部通过。尚需在微信开发者工具和手机检查显示、音效听感及平台兼容性;模拟验收不等于真机验收。
重建
此目录 src 保存完整适配源码。build.mjs 默认引用原 NumberSwipe 工程的 esbuild;如独立移动目录,需要将该 import 改为本机可用的 esbuild。运行 node build.mjs 后重新打包。smoke.mjs 会读 source-manifest.json 指定的上游路径检查哈希,然后对实际 game.js 做 200 关模拟验收。
真机音效及文案修订(2026-10-19)
改用微信原生音频播放器与本地音效资源;关闭后再次点“音效开”会播放试听音。新增6项音频/文案回归检查。进后台与系统音频中断时停止音效和延迟播放。错误不再静默忽略,可从只读状态的audio字段查询。
十类教学说明及组合规则采用具体动作与例子,例如“共边”改为“边挨着边,不能斜着走”,“奇偶”说明第1、3、5步与第2、4、6步。复杂规则可以分页阅读。关卡的布局、约束、顺序与原有微信存档保持不变。
修改后需要在开发者工具重新编译并重新生成真机预览,旧二维码可能仍加载旧包。自动测试验证播放调用和非静音音频资源,手机上的实际听感仍需真机确认。
通关按钮布局修订
通关后“下一关”独占底部操作栏,替换重开/撤销/指路;最后一关显示“返回选关”。盘面、反馈文字与操作栏固定分区,按钮出现时不挪动盘面。验证320×568、375×667、390×844、414×896四种尺寸下无按钮/盘面遮挡,且能正确跳转。
关卡动画教学(2026-10-19)
首次机制教学和手动规则页加入真实教学关卡画面,复用正式盘面绘制与规则判定,不制作独立示意图。文字说明与逐步动画同步,黄色光圈表示演示位置;墙和同色展示红色阻挡线,通道及奇偶展示变红、退回及正确路线。节奏门演示切换、穿过锁定及撤销穿门。支持重播、逐段阅读。组合关按实际出现的机制拆段说明,使用对应极简教学关,避免提前展示正式关解法。
演示独立于玩家路线、提示次数、存档及音效;关闭页面继续原关。后台停止绘制,返回时从头演示。新增 lessons.test.mjs 的11项教学检查;smoke.mjs 检查动画前后路线、错误状态、棋盘坐标和通关状态不变,并验证200关及窄屏规则页。仍需在微信开发者工具和手机检查实际动画与排版。
教学动画提速
整段演示固定约1秒,逐帧连续连线,去掉每格停顿与重复静止步骤。演示结束后停留在结果,点击重播可再次观看。
高亮分段指路与玩家填色(2026-10-20)
恢复高对比提示:点击“指路”直接显示最早未正确完成的一段,按起点、数字点、方向点、奇偶点和终点分段。提示为半透明白线、深色描边及连续流动白色光点;正确到达段末后消失,再次点击才显示下一段,暂不接广告。
提示使用独立透明 Canvas,每帧只清空提示层,并从中擦除玩家已经走过的格子区域;已画的连接段不再叠加提示。玩家棋盘及整格填色、数字、方向反馈继续由原绘制代码负责,双色关保留原有蓝/橙格色。撤销、重开会按实际路线恢复相应提示。
构建:node build.mjs。检查:node --test hints.test.mjs lessons.test.mjs audio-copy.test.mjs(23项),node smoke.mjs(200关,并比较点击指路前后玩家填色数据)。浏览器像素回归:node qa/serve.mjs 后打开 http://127.0.0.1:17859/qa/hints.html,检查200关前两步的已走格填色采样像素在开启提示、撤销再画前后相同;qa/hint-player-fill.png 为浏览器检查截图,不能作为微信真机截图。独立导入包通过 ./package.ps1 生成,只含运行必需文件。真机显示仍需手机预览确认。