自制 4K 下落式音游。用 C++ 编写,玩法类似 Malody 或 osu!mania。
玩家在音符下落至判定线时,通过键盘按下对应键位击打音符。游戏支持读取 Malody 社区的 4K 谱面文件,音符随音乐同步下落,并根据按键时机给出 Pure / Far / Lost 判定,实时显示 Combo 与分数,局末进入结算界面。
谱面使用 Malody 社区的 4K 谱面文件(
.mc重命名为chart.txt即可)。
欢迎游玩 Notarcaea!
Notarcaea 是一款基于 C++ 与 SFML 的 4 键(4K)下落式节奏游戏,模拟 Malody / osu!mania 玩法。音符从屏幕顶部沿四条轨道下落,玩家在判定线处用键盘击打对应键位,与音乐节奏同步,通过练习挑战更高难度的谱面。
游戏可运行大部分来自 Malody 社区的常规 4K 谱面。请确保你有一定的音游基础后再挑战高难度谱面。
- 选歌与进度:登录后进入主菜单,在选歌界面挑选歌曲;支持多首谱面、排行榜与本地存档
- 四轨下落:四个轨道对应四个按键,音符从顶端落向底部判定线
- 两种音符:单键(Tap)与长条(Drag)
- 谱面驱动:读取谱面 JSON,按时间戳与轨道编号生成音符,流速随 BPM 可调
- 判定系统:Pure / Far / Lost,依据按键时机与音符到达判定线的时间差计算
- 实时反馈:显示各判定计数、当前 Combo、分数
- 结算界面:局末展示 Pure / Far / Lost、最大 Combo、准确率等
- 联机:局域网房间,最多四人同屏,实时显示各玩家 Combo,共同结算后继续游玩
- 游戏内设置:键位、音量等
- 暂停 / 重开
上述功能尚未实现,当前版本以完整单机游玩为主。
本项目在 Windows 与 Linux 上均可编译运行。SFML 2.6.2 已内置在 sfml/ 目录,无需在本机单独安装 SFML。
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10/11 或 Linux(Ubuntu、Debian、WSL 等) |
| CPU | Intel Core i3 或同等性能 |
| 内存 | 2 GB RAM 或更高 |
| 显卡 | 支持 OpenGL 的图形驱动(WSL 需 WSLg) |
| 编译器 | g++(支持 C++17) |
| 图形/音频库 | 项目自带 SFML 2.6.2(sfml/linux64、sfml/win64) |
Linux 运行时仍依赖系统自带的 OpenGL、X11/Wayland 等基础库(桌面/WSLg 环境通常已具备)。
使用与 SFML 包匹配的 GCC 13.1.0 MinGW-w64(SEH)。编译脚本会把所需 DLL 复制到项目根目录。
只需安装 g++,不必 apt install libsfml-dev。链接时使用 -rpath,从 sfml/linux64/lib 加载 SFML。
bash scripts/build-linux.sh
./notarcaeascripts\build-windows.bat
notarcaea.exe若 sfml/win64 为空,先在 WSL 中执行一次:
bash scripts/fetch-sfml-windows.sh详见 sfml/VERSION.txt。
首次运行会在当前目录生成 userdata.txt 保存登录与成绩,请勿删除。
| 按键 | 功能 |
|---|---|
| 字母 / 数字 | 输入用户名 |
| Backspace | 删除 |
| Enter | 确认登录 |
| Escape | 退出游戏 |
| 按键 | 功能 |
|---|---|
| ↑ / ↓ | 选择选项 |
| Enter | 确认 |
| Escape | 退出游戏 |
| 按键 | 功能 |
|---|---|
| ↑ / ↓ | 选择歌曲 |
| Enter | 开始 |
| Page Up / Down | 快速滚动 |
| Escape | 返回主菜单 |
| 鼠标滚轮 | 滚动列表 |
| 鼠标左键 | 选择歌曲或返回 |
| 按键 | 功能 |
|---|---|
| D / F / J / K | 击打四轨音符 |
| Escape | 返回选歌(中途退出) |
- Tap(单键):音符进入判定区时按下对应键
- Drag(长条):音符在判定区内时对应键保持按住即可
判定窗口默认为判定线前后 ±100 ms;其中较精确范围内为 Pure,稍偏仍为 Far,漏打或过线未击中为 Lost。屏幕中央显示 Combo,左上角显示 Score。
- 歌曲结束后进入结算界面,可查看各判定数量、最大 Combo、准确率,并选择继续游玩、查看排行榜或返回登录
- 排行榜按
songs/内歌曲动态展示,每首 Top 5,可滚动浏览
在 songs/ 下为每首歌创建一个文件夹,例如:
songs/我的歌曲/chart.txt
songs/我的歌曲/audio.ogg
- 从 Malody 获取 4K 谱面,将
.mc重命名为chart.txt - 把谱面末尾 metadata 里指定的 音频文件(多为
.ogg)放在同一文件夹 - 启动游戏后选歌列表会自动扫描
songs/下的子文件夹,按字母顺序排列,无需改代码
若 songs/ 为空,程序会回退使用根目录的 chart.txt 与 audio.ogg(备用谱面)。
部分 Malody 谱面的 offset 正负不一致。若音符与音乐明显不同步,可在 main.cpp 中调整全局变量 offset_minus(设为 1 或 -1),换谱面后试玩微调即可。
不建议随意改动谱面下落流速,可能影响延迟手感;当前默认流速已针对现有谱面做过适配。
当前版本优先保证完整单机流程可玩:登录、选歌、游玩、结算、存档与排行榜。主界面选歌、局内设置、暂停重开、联机等功能留待后续版本。
主要源码:main.cpp(界面与游戏循环)、parser.cpp(谱面解析)、userdata.cpp(存档与排行)、utils.cpp(绘制辅助),以及内嵌的 jsoncpp。
个人学习 / 演示项目。谱面版权归原作者所有,请遵守 Malody 社区相关规范。