Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Roundhead: real ROUNDS players in Cuphead's levels. A Cuphead x ROUNDS mod (BepInEx), live on Melty.
翻译准备中
正在加载完整 README。
查看完整 README ↗Play Cuphead's whole campaign as your ROUNDS blob.
Play it on Melty: melty.gg/m/roundhead. One click, using your own Steam copies of Cuphead and ROUNDS. The trailer is on that page; a smaller preview is in media/listing.
Requires your own Cuphead and ROUNDS (the mod-compatible "old-rounds-for-mods" branch Thunderstore supports), both on Steam. Roundhead plays Cuphead's save slot 1 (slots 2 and 3 are left as they are); its cards are saved beside it in %LOCALAPPDATA%\CupRounds\saves, never inside Cuphead's save.
Player 1 has ROUNDS's keyboard and mouse layout; gamepads work for both players.
| Keyboard + mouse | Gamepad | |
|---|---|---|
| Move | A / D (or Cuphead's keys) | left stick |
| Jump | W or Space (hold for higher) | Cuphead's Jump |
| Drop through a platform | S + jump | down + Jump |
| Aim | mouse (crosshair) | right stick |
| Shoot | left mouse (ROUNDS guns fire per click unless cards make them fast) | right trigger or Shoot |
| Block / parry | right mouse, Cuphead's Dash or EX | left trigger, Dash or EX |
| In plane levels | WASD fly, Space parries, Dash or Lock shrinks, right mouse or EX blocks | as in Cuphead; EX blocks |
| Card pick | A / D or the mouse, Space or click to take | left / right, Jump |
| World map and menus | WASD, Space | as in Cuphead |
| Card pack (shop) | P | Lock |
CupRoundsLauncher.exe: the launcher Melty starts (Thunderstore browser, the FACES editor, Play). Your faces are kept in %LOCALAPPDATA%\CupRounds\faces.txt, the editor's pictures in %LOCALAPPDATA%\CupRounds\faces.cuphead/BepInEx/plugins/CupRounds/CupRounds.Cuphead.dll: BepInEx plugin for Cuphead (sends the level and input to ROUNDS, draws ROUNDS's picture, card picks and saves).rounds/BepInEx/plugins/CupRounds.CardEngine/CupRounds.CardEngine.dll: BepInEx plugin for ROUNDS (runs ROUNDS's sandbox with Cuphead's level, the players and the pick screen), talking to Cuphead over shared memory and localhost.You need Windows, the .NET SDK (8 works; the projects target net35, net472 and net48), Python 3, Git Bash for the dev scripts, and your own Cuphead and ROUNDS on Steam. Nothing from either game is in this repository, and nothing should be added.
Unpack BepInEx 5.4.23.2 (BepInEx_win_x64_5.4.23.2.zip from the BepInEx GitHub releases) into ~/cuprounds-work/dl/bepinex. A different work folder can be set with CUPROUNDS_WORK.
Put the license texts the package ships into ~/cuprounds-work/dl. The BepInEx download contains none of them, so take each from its project's repository:
| File | From |
|---|---|
BepInEx-LICENSE.txt | github.com/BepInEx/BepInEx, LICENSE (MIT) |
UnityDoorstop-LICENSE.txt | github.com/NeighTools/UnityDoorstop, LICENSE (LGPL-2.1) |
HarmonyX-LICENSE.txt | github.com/BepInEx/HarmonyX, LICENSE (MIT) |
MonoMod-LICENSE.txt | github.com/MonoMod/MonoMod, LICENSE (MIT) |
Mono.Cecil-LICENSE.txt | github.com/jbevain/cecil, LICENSE.txt (MIT) |
The first two are required. The packager warns about the last three when they are missing.
If your games are not in D:\SteamLibrary\steamapps\common, give their folders to the build as the CupheadDir and RoundsDir environment variables. In PowerShell that is $env:CupheadDir = 'E:\Steam\steamapps\common\Cuphead', and in Git Bash export CupheadDir='E:\Steam\steamapps\common\Cuphead'. The dev scripts set both from CUPHEAD_DIR and ROUNDS_DIR. ROUNDS must be on the old-rounds-for-mods branch.
Decompile your own copies once, for the preflight's hook checks. Install the decompiler with dotnet tool install -g ilspycmd, then run it on each game's Assembly-CSharp.dll:
ilspycmd -p -o ~/cuprounds-decomp/cuphead "<Cuphead>/Cuphead_Data/Managed/Assembly-CSharp.dll"
ilspycmd -p -o ~/cuprounds-decomp/rounds "<ROUNDS>/Rounds_Data/Managed/Assembly-CSharp.dll"
This decompiled code is for checking on your machine only. Never commit it.
The design sheets in sheets/ are the source of truth, and src/Shared/Generated is made from them. Run python -I tools/sheets.py gen after editing a sheet, and python -I tools/sheets.py preflight --code before every build. It must print .
NOTES.md holds the design and testing notes. devtools has the scripts that run the mod on the real games with test bots and that filmed the listing media.
Roundhead is MIT licensed. Its package bundles BepInEx 5.4.23.2 (MIT, with HarmonyX, MonoMod and Mono.Cecil, all MIT) and UnityDoorstop 4.3.0 (LGPL-2.1, shipped unmodified as version.dll). Neither is in this repository; their licenses go in the package's third-party-notices folder. Cuphead and ROUNDS are not included: Cuphead is by Studio MDHR Entertainment Inc., ROUNDS is by Landfall Games, and the mod needs your own copies of both. Card mods are by their Thunderstore authors. Made with AI assistance (Claude) for Melty.
cleanpython -I tools/package.py 0.1.6 runs the preflight, builds all three projects and writes dist/Roundhead-0.1.6.zip, the package Melty installs.
To release it, attach that zip to a GitHub release tagged with the version (v0.1.6). melty.json at the repository root is the Melty install recipe; it names the package Roundhead-*.zip, so Melty takes the tested zip from each release instead of building from source, which needs your own games.
To play the staged build without Melty, copy dist/stage/proxy-cuphead/version.dll into your Cuphead folder and dist/stage/proxy-rounds/version.dll into your ROUNDS folder, then start dist/stage/managed/CupRoundsLauncher.exe. Remove the two version.dll files afterwards. devtools/devloader.sh does the copying for the dev install.