QoL mod for Hollow Knight is a collection of tiny mods by 56 which improve the general Hollow Knight experience. Rather than describing the experience as a whole I shall write about each component, which can be enabled or disabled from the modding api menu, individually.
I need some help with modding, I have a legal copy of Hollow Knight with all dlcs/update until 1.4.3.2 and I'm trying to use two specifics mods, Bonfire and Charm Overhaul, yet, I can't make the game works with the Modding API, I got all instructions from the Google Drive with all mods, have verified my archives, made back-ups and my game. This Is a mod installer for hollow knight - designed to make mod installation a breeze. It grabs mods from the community drive, and puts them automatically in the correct folder. It is designed to make mod installation as seamless as possible. Mar 29, 2020 About this mod This Is a mod installer for hollow knight - designed to make mod installation a breeze. It grabs mods from the community drive, and puts them automatically in the correct folder. It is designed to make mod installation as seamless as possible. Hollow Knight - Title screen w/modding API bug makes an unintentional wallpaper. Like us on Facebook! Share Pin Tweet PROTIP: Press the ← and → keys to navigate the gallery, 'g' to view the gallery, or 'r' to view a random image. Previous: View Gallery Random Image: You Might Also Like.
In order:
Infinite PoP: Allows the user to retry the path of pain after finishing it. Ideal for attempting speedruns, or for those who just enjoy the masochism of it.
Mouse Bindings: Lets you bind mouse buttons past middle mouse button to various actions in the game.
Salubra Killer: Makes Salubra’s blessing silent when sitting on benches. No longer do you have to hear her ghostly noises. She will still give you soul as normal.
Skip Cutscenes: Allows you to skip some of the plot related cutscenes in the game, such as the dreamer ones. This was a vanilla feature removed by the lifeblood update and made speedrunning the game on this and newer patches relatively slow.
Speed Broke: Allows the user to perform glitches like inventory drop that were patched out of the game by the lifeblood update. These glitches are generally seen as benign by most users and incredibly useful by speedrunners.
Unencrypted Saves: Allows the user to load the game from unencrypted save files. Simply decrypt your savefile and rename it so it ends with .json (EG: user1.json). This makes save editing vastly easier since you don’t need to decrypt and reencrypt your saves every time.
Dream Respawner: Allows you to reenter all 6 dreams after dying much faster than otherwise. Useful for those who don’t want to walk back to the platform every time lost kin or NKG kills them. Has full Infinite Grimm integration.
Download it, and any other Hollow Knight mod, from Gradow’s Mod Installer.
This is my plan for publishing the Hollow Knight Modding API to GitHub without infringing on copyright.
- Hollow Knight by Team Cherry: http://hollowknight.com/
- Modding API: (Link not available due to copyright infringement. That's the point of this document.)
- Discussion about this problem: https://github.com/MyEyes/RandomizerMod/issues/1
- dnSpy: https://github.com/0xd4d/dnSpy
- Xdelta: https://github.com/jmacd/xdelta
The problem
Currently, Hollow Knight modders are editing the binary game file Assembly-CSharp.dll
directly with dnSpy, and publishing the modified binary to Google Drive at a secret link that's shared in the #modding channel of the Hollow Knight discord server. This means that you can only be a Modding API developer/contributor if you are invited to the Hollow Knight discord server.
The modding community is already using GitHub for several other mods (examples below). It would be ideal to have the Modding API on GitHub in some form as well.
Examples of mods already on GitHub:
- Blackmoth by Gradow: https://github.com/Ayugradow/blackmoth
- Bonfire by Gradow: https://github.com/Ayugradow/bonfire-mod
- Randomizer by Seanpr & Firzen: https://github.com/MyEyes/RandomizerMod
The naive and illegal solution: publish the binary to GitHub
The most obvious way to put the Modding API on GitHub is to simply publish the modified Assembly-CSharp.dll
to GitHub. However, the modified file still contains lots of content from the original Hollow Knight, which is copyrighted and proprietary. Publishing the modified Assembly-CSharp.dll
to GitHub is illegal copyright infringement.
It's conceivable that Team Cherry will never enforce copyright claims against such a violation, but it's still a legally risky and frankly impolite way to treat the developers of the game that we love enough to mod.
The legal solution: publish only the modifications, not the entire binary
The part of the modified Assembly-CSharp.dll
that is not copyrighted by Team Cherry is the modifications that the modding community makes. This is the Modding API. It is not illegal to publish the modifications, as long as the publication contains no content from the original file.
Hollow Knight Mods For Xbox
The Modding API GitHub repository will contain only the modifications to the file, not the original file.
Two-way sync with Google Drive
It's possible to allow the community to use Google Drive as they are currently doing, and have a daemon running that polls the Google Drive file for modifications. When a modification is made, the bot makes a git commit with the new modifications, and pushes the commit to GitHub with an auto generated message like 'Updates on DATE by PERSON'.
And if someone pushes a commit to the GitHub (without updating the Google Drive version), the daemon bot can detect that as well, and make a modified version of the binary file and publish it to Google Drive.
This bot should be open source, but in order to run, it would need a few non-open source pieces of information, like an original Assembly-CSharp.dll
file to compare against, and the secret link to the Google Drive file. The daemon's admin will need to provide those as command line parameters when running the bot.
The diff algorithm
Ideally the diff algorithm will not emit any content from the original file. For naive diff algorithms, this will happen by simply rearranging parts of the file. For two-way patches (such as those generated by diff
and git diff
), the -
lines contain original content.
Generating binary diffs is a hard problem. Xdelta appears to be the best solution we've got. Some cursory experimentation showed that Xdelta recognizes simple reorderings and duplications without emitting the original content in the patch. It does not generate 2-way patches, so deleting content does not emit the original content in the patch.
It's possible that Xdelta emits a significant portion of copyrighted material in a patch, because Xdelta was not designed for copyright purposes but for compression purposes. Even so, this situation seems pretty harmless. First, the content output by Xdelta is gzip deflated, which marginally obfuscates the content. Second, the copyrighted material you would get from such a leak would be pretty useless without the greater binary file anyway. You still need the original file for the patch to be meaningful, so this solution seems acceptable, albeit not perfect. I think it certainly demonstrates to Team Cherry that we respect their intellectual property.
Xdelta is open source (Apache Public License 2.0) and cross platform, so depending on that tool shouldn't be a problem.
How To Download Hollow Knight Modding Api
Workflow for getting the Modding API directly from GitHub
This is the whole point of this proposal. It should be possible to get the Modding API from GitHub without any access to the Hollow Knight discord server or to Google Drive. This would be necessary for both developers and users. Users are anyone who wants to play with mods that depend on the Modding API, such as the Randomizer Mod.
There should be instructions for manually patching your Assembly-CSharp.dll
file with xdelta from the command line.
Additionally, there should be a wizard (written in C# probably) that locates Assembly-CSharp.dll
and your xdelta installation, and runs the command for you.
Workflow for publishing directly to GitHub
The most complicated workflow will be when a developer wants to publish their changes to the Modding API to GitHub directly (as opposed to through Google Drive). On the developers local machine, this requires running Xdelta, making a git commit, and pushing to GitHub. This can be assisted via a helper utility, but it's also not prohibitively difficult to do manually.
Additionally, this workflow triggers the GitHub-to-Google-Drive direction of the two-way sync described above. I expect that that is the direction that will be more difficult to implement.
I expect this workflow to be more difficult to implement than the current workflow of publishing to Google Drive, so I don't expect this to be implemented right away.
Simpler situation: abandon Google Drive
A much simpler and easier to implement/understand/maintain solution would be to get rid of the file on Google Drive and only support distribution of the Modding API through the 'directly from GitHub' usecase above. This is slightly more legally friendly as well.
Hollow Knight Modding Api
Publishing updates would then become a little harder, because you'd need to use xdelta and git yourself.