腾讯音乐 24h AI 黑客松 · 音乐节奏小游戏 Demo
灵感取自《节奏天国》:不是"看音符下落点击",而是场景化任务卡点——IP 角色在具体情境里跨栏、敲钉、切物,动作卡在音乐节拍上。核心是"听着音乐出手",配合霓虹演唱会舞台的视觉冲击。纯 Web 实现,零框架、零构建、手机模拟器外壳。
cd ~/Desktop/tme-rhythm-game
python3 -m http.server 8123
# 浏览器打开 http://localhost:8123http://localhost:8123/?auto=1—— 自动演示模式(AI 自动满连击,路演展示用)
单键出手,卡着音乐在正确时机按下即可(角色自动完成场景动作)。
| 操作 | 键盘 | 触屏/鼠标 |
|---|---|---|
| 出手(跳/砸/切) | 空格 / F / J / ← / → |
点击屏幕任意处 |
| 切换自动演示 | A |
— |
假动作陷阱:HARD 难度会混入"陷阱"目标(红叉障碍 / 炸弹)——不该出手时忍住不按才算完美;乱按会断连击。考的是节奏定力,不是手速。
| 曲目 | 场景 | 动作 | IP |
|---|---|---|---|
| 霓虹脉冲 | 🏃 跨栏闯关 | 光环冲到面前时跳过去 | 🐧 QQ音乐 |
| 赛博狂潮 | 🔨 疯狂敲钉 | 钉子冒头时一锤砸下 | 🐕 酷狗 |
| 午夜留声 | 🗡️ 音浪切片 | 音符宝石飞来时挥刀斩断 | 🐦 全民K歌 |
三个场景共用同一套"逼近 → 到拍 → 出手 → 表演反馈"内核,换皮不换骨;新增场景只需写一个 scene 文件。
选曲(=选场景) → 选难度(EASY/NORMAL/HARD) → 3 秒倒计时 → 跟着音乐出手 → 结算(评级 S/A/B/C + 准确率 + 连击) → 分享海报 / 再来一次
- 场景化玩法(对齐《节奏天国》):节拍映射为世界里的具体动作(跨栏/敲钉/切物),有情境、有表演反馈,而非抽象点击。
- 难度按"技能"分层,不是堆数量:
EASY 跟拍—— 正拍稳踩,建立节奏感;NORMAL 卡点—— 切分节奏 + 蓄力长按(hold);HARD 炫技—— 密集卡点 + 假动作陷阱(impulse control)。
- 单键 + 防乱按:只有"出手"一个动作,上手零门槛;空挥(窗口内无目标却出手)直接断连击。
- 音画同源 · 100% 卡准:内置曲目由 Web Audio 实时合成,谱面从同一套节拍网格派生,音频用"两个时钟"前瞻调度器(AudioContext 精确时钟)驱动,与判定共用同一时间轴 —— 天然零漂移。
- 霓虹演唱会舞台:AnalyserNode FFT 拆低/中/高频,驱动扫射灯束、透视地板滚动、角色 squash/stretch、镜头抖动、屏闪;扁平可爱角色 + 炫酷舞台,兼顾《节奏天国》的趣味与视觉冲击。
- 自选音乐(亮点):上传任意 mp3/m4a/wav,能量包络 onset 检测自动生成谱面,直接播放原音频。
- 版权安全:内置曲为原创合成音乐,规避版权问题且保证完美同步;真实热门歌曲走"上传→自动生成"通道。
HTML5 Canvas + Web Audio API + 原生 JS ES Modules。无依赖、无打包步骤。
index.html 手机外壳(刘海/状态栏) + 视口
src/
audio/ context 音频图 / synth 合成器+前瞻调度 / decoded 解码播放
core/ conductor 时钟 / judge 判定评分(含空挥断连) / engine 场景驱动主循环 / generator 自动谱面
data/ tracks 内置曲目+场景+分难度谱面(go/hold/trap 事件) / ip IP 家族 / notes 音高
render/ stage 共享舞台(灯光/地板/HUD/闪光) / fx 粒子+判定文字 / config
scenes/ base 角色绘制 / runner 跨栏 / whack 敲钉 / slice 切片 / index 注册表
ui/ songselect 选曲(带场景标签) / result 结算+海报
main.js 屏幕路由与输入
注:
src/render/renderer.js与src/render/character.js为旧两轨版本,已弃用不再引用。
在线排行榜 / 好友对战 / 每日挑战 / 更多 IP 与曲目 / 打包为 App(当前已是移动端布局,套壳即可)。