Unofficial quality of life modifications for the PC version of the hit video game Musynx (stylized as MUSYNX, sometimes also known as Musync) using MelonLoader.
- These mods are unofficial and are not associated with, related to, and/or endorsed by I-Inferno and/or Wave Game.
- USE AT YOUR OWN RISK. NO WARRANTIES.
- Please read FAQ.
There are currently five mods available in this repo: four are interface enhancements, and another one can be used to disable vSync and other FPS caps that are otherwise baked into the game.
- Optional options — allows to skip the settings screen on song select, starting the game immediately
- Hidden cursor — hides the mouse cursor during gameplay
- Plentiful stats — provides some data for the stats screen
- Skin tweaks — improvements for some of the skins
- VSync annihilator — allows the game to run without vSync, with optional custom FPS cap (you probably won't need this)
Mod file: OptionalOptions.dll
This mod skips the settings screen on song select by default, starting the game using saved settings for theme, speed, and offsets.
Selecting a song with this mod will look like this:
optional-options-demo_480.mp4
In this video, you can see Hidden cursor kicking in as well.
To access the settings screen, hold Shift key when starting a song.
Hidden cursor
Mod file: HiddenCursor.dll
This mod hides the cursor during gameplay, preventing stuff like this:
The cursor is still shown when the game is paused, and in all other screens.
Mod file: PlentifulStats.dll
This mod adds some extra features and fixes for the stats screen after a song has been played; all can be independently turned on or off.
The statistics display is changed:
Before | After |
---|---|
- Blue exacts are counted separately from cyan exacts
(top middle of the pictures) - Previous best score is shown alongside the current one
(bottom middle of the pictures)
R key can be used to restart the song alongside F1 key. Due to implementation quirks, works with the in-game pause menu, too!
This feature (more of an unofficial bugfix, actually 🤓) changes the "NEXT" button being "继续" when the score is 120% or more and language other than Chinese is used:
Lower score reference | Before | After |
---|---|---|
I'd love to see an official fix for this implemented. ٩(◕‿◕)۶
All features of the mod can be toggled on and off independently via MelonLoader's preferences file, UserData/MelonPreferences.cfg
. Launching the game with the mod installed should create the following section in the file:
[Bnfour_PlentifulStats]
# Enables R key to restart from the stats screen.
RToRestart = true
# Displays separate blue and cyan exacts counts.
SeparateExacts = true
# Displays previous best score at the stats screen.
PrevBest = true
# Fixes Next button switching to Chinese on 120+ scores.
EnNextFix = true
Set to false
to disable a feature.
Mod file: SkinTweaks.dll
This is a collection of improvements to in-game skins. All features can be turned on and off separately.
This disables the moving mountain overlay images on Ink2D for cleaner looks. I also find their sudden disappearance quite jarring (but you don't have to agree with me).
Before | After |
---|---|
This updates the score display present on Techno2D and STG2D whenever the long note is played at least partially. On some charts, long notes at the very end make skin's display score inconsistent with final results:
UI0A_before.mp4
(Results screen modified by Plentiful stats)
Compare with the score being updated on long note releases (legacy/simple scoring):
UI0A_after.mp4
Or with the score being updated on every combo tick:
UI0A_ultra_after.mp4
Warning
STG2D support is not tested, as I do not currently own relevant DLC. It should work as well as it does on Techno2D, but ¯\_(ツ)_/¯, let me know if it's broken.
Both features of the mod can be toggled on and off independently via MelonLoader's preferences file, UserData/MelonPreferences.cfg
. Launching the game with the mod installed should create the following section in the file:
[Bnfour_SkinTweaks]
# Removes moving white mountain overlays from Ink2D.
MountainRemoval = true
# Updates the score display on Techno2D and STG2D for long notes.
LongNoteScoring = true
# Updates the score display on Techno2D and STG2D for long notes every combo tick. If disabled, the score is updated on long note release.
AdvLongNoteScoring = true
Set to false
to disable a feature. AdvLongNoteScoring
controls scoring behavior (if it is enabled by LongNoteScoring
):
true
to update on every combo tick (advanced scoring, see the third video demo)false
to update on long note releases (legacy scoring, see the second video demo)
Mod file: VSyncAnnihilator.dll
Warning
Please read the full description before installing!
If you are content with your framerate, just skip this mod.
This mod is intended for setups where both vSync FPS and FPS cap presets (60 and 120 available as of 2024-04-30 update) do not match actual display FPS. For me, for whatever reason, vSync is set to 120 FPS even for a 240 Hz display.
Again, if you never thought you should change your FPS, this mod is not for you.
This mod disables vSync before the game even starts for allegedly better performance, and provides a custom FPS cap instead of vanilla 60/120.
The game engine allegedly does not like changing the vSync setting at runtime — it may cause lags. All default game's quality presets enable vSync. The solution is to use the provided script, resource-patcher.py
, to patch the highest quality preset to remove vSync. The mod will warn you in the console if this step was skipped. After an update to the game, the file must be patched again.
Tip
The patching script is written in Python, so you'll need a reasonably recent version of it installed.
python resource-patcher.py path/to/steam/common/MUSYNX/MUSYNX_Data/globalgamemanagers
where path/to/steam
is actual path to your Steam library. Please make sure to target globalgamemanagers
file (no extension), not globalgamemanagers.assets
, and not globalgamemanagers.assets.resS
.
If the preset was patched successfully, its name in setup will change:
Select it to start the game without vSync. The actual mod, if installed, will keep it disabled. (Without the mod, the game may eventually turn it on again, and/or force the 60/120 FPS cap found in its settings.)
The globalgamemanagers
file can be restored to its original state by running the script on it again or using Steam's "verify integrity of game files" feature.
The mod's custom FPS cap (240 by default — solely because it's the value I use) can be adjusted via MelonLoader's preferences framework. Launching the game with the mod installed should generate the following section in UserData/MelonPreferences.cfg
(you can also put it here in advance):
[Bnfour_VSyncAnnihilator]
# Frame limit not related to vSync. 0 for no limit -- the game will run as fast as it can, may break.
TargetFramerate = 240
The value of TargetFramerate
, if non-zero, is passed to the engine as Application.targetFrameRate
.
If the config value is zero, the game runs as fast as it can. I wouldn't recommend this, as with really high FPS (I got 1500+) things seem to be messed up. Also note that, for technical reasons, the resulting FPS may differ from the cap (for me, 600 FPS cap results in about 640 FPS in game, and 240 FPS cap is 246 actual FPS).
This is not a mod intended for using. Rather, it's a developmental test bed for me to test random stuff without changing existing proper mods. A few first mods were prototyped as a single do-it-all unimaginable horror abomination here first and then rewritten to be modular cute things currently available in this repo; newer ones also were prototyped here.
The project contains the bare minimum for a mod that is successfully loaded; it does nothing except posting a single message in the log.
These are MelonLoader mods. In order to run these, you need to have it installed. Currently, 0.6.1 Open-Beta of MelonLoader is supported.
Once you have MelonLoader installed, drop the DLLs of desired mods into the Mods
folder. Remove to uninstall.
Note
For VSync annihilator (if you need it: probably not), refer to its own installation section for additional instructions.
Rather than downloading these, I suggest (reviewing the source and) building them yourself — this way you'll be sure the mods behave as described. See "Building from source".
Otherwise, please verify the downloads.
Every published release is accompanied with SHA256 hashes of every DLL. MelonLoader does print these in console when loading mods, but I suggest to verify the hashes before installation.
(or, more accurately, "I thought you may want to know this")
tl;dr: no
The mods provide no advantage for the actual gameplay, only some convinence in in the menus (and maybe a fix for broken vSync framerate). You still have to git gud to earn high scores.
Unless you count any changes to the game for any purpose as cheating, this is not cheating.
tl;dr: probably not, but NO WARRANTIES; USE AT YOUR OWN RISK
As I stated in previous question, I don't believe this is cheating. I've been using these for a while, and my account is still there. But there's a reason for the all-caps section of the license about having no warranties: the devs might think otherwise or break the compatibility (un)intentionally.
Remember that you're using the mods at your own risk.
tl;dr: ¯\_(ツ)_/¯
Some of the mods override vanilla methods, so other mods that use these may not work.
tl;dr: uninstall, and remember: NO WARRANTIES
If you just want to play the game, removing the mods (and maybe the modloader itself) is always an option.
- Please make sure you're using supported (0.6.1) version of MelonLoader.
- Try to remove mods not from this repo.
- Try to remove mods and/or modloader and check whether the vanilla game is broken too.
If none of these helps, feel free to submit an issue, unless it's already have been reported.
tl;dr: tail -f MelonLoader/Latest.log
For whatever reason, the built-in MelonLoader console does not display logs after the game (as opposed to the config app) starts. This includes messages about loading the mods and any messages (warnings, errors) they produce.
The log file, located at MelonLoader/Latest.log
, is still updated in real time. You can use any tool to monitor the file contents, such as ubiquitous tail
, for example.
This repo is a run-of-the-mill .NET solution targeting .NET 4.7.2.
The only gotcha is that some libraries required to build it are not included because of file size (and licensing) issues. Your installation of MelonLoader will generate them for you.
Copy everything from MelonLoader/Managed
, MelonLoader/net35
, and MUSYNX_Data/Managed/
folders from the game install to the references
folder of this repo. All the DLLs should be directly in the references
folder, no subfolders.
This should cover the local references for all the projects. (Actually, most of the DLLs are not necessary to build the solution, I just don't plan on keeping an accurate and up to date list of required libraries.)
After that, just run dotnet build
.