Skip to content

Instantly share code, notes, and snippets.

@KaanGaming
Last active November 2, 2022 00:00
Show Gist options
  • Save KaanGaming/60a3272b8ffc6ba649a7fd294c57efbb to your computer and use it in GitHub Desktop.
Save KaanGaming/60a3272b8ffc6ba649a7fd294c57efbb to your computer and use it in GitHub Desktop.
Hollow Knight mod dependencies explained

Mod Dependencies In Scarab And What They Do

This markdown file aims to explain what each mod dependencies do and what they're useful for, then later compared in a table with features.

Table of Contents

Dependencies

A core mod made by SFGrenade. Some of the core features are:

  • Helpers: Easier ways to simply add miscellaneous content.
    • E.g. achievements, charms, environment particles, items, menu styles and title logos.
    • Provides events and methods that allows you to add your content.
  • Generic mod classes
    • This abstracts code used to have global and save settings.
  • ModInterOp
    • This allows mods to register methods with a name so other mods can call them without having a hard dependency.
  • MonoBehaviours
    • These are useful for making custom scenes.
    • Abstract generation of Hollow Knight's MonoBehaviours for simple use.
      • Some of these require editor scripts to be easily usable.
  • Util
    • Miscellaneous utils like FsmUtil, MiscCreator, SpriteUtil, USceneUtil and Util.
  • Language from JSON
    • Easily load multi-language strings from a JSON language file. Example

A Library mod by Dandy and Mulhima that aims to make modding more accessible by providing simpler ways of achieving complex functionality, also has some Utilities for general things.

Features:

  • Add custom actions
  • Greatly help with FSMs
  • Making menus for Global Settings
  • Initializing drop items into scene (Shinies)
  • Add items that create a big item get prompt like Mothwing Cloak, Vengeful Spirit etc.
  • Making custom scenes
  • Add custom map zones
  • Add custom arrow prompts for the player to interact with
  • Makes it easier to add in custom enemies with custom enemy markers
  • Work around save slots and give them specific save arts based on location
  • Add custom dialogue
  • Compile WAV files to AudioClips in Unity
  • Help with Texture2Ds e.g. Get a region, export to PNG, create a texture of single color
  • Help log GameObjects for debugging
  • Help with disk IO
  • Help with Sprites
  • Help with Animations

FrogCore (No documentation)

A core mod made by RedFrog

Features:

  • Easy support for custom NPCs!
  • Edit tk2d
  • Edit FSMs
  • Coroutines for FSMs
  • MethodBehaviour, a MonoBehaviour that calls Actions from it’s fields so if you have one Update thing or collision thing you want to add to an object to skip making a new class
  • Create new GameObjects from Sprites

A core mod made by Homothety

Features:

  • Add custom items
  • Provide custom locations for items
  • Add items to shops
  • Add items to enemy drops
  • Add items to ground
  • Mainly it will help with about almost everything with items and item drops
  • Support for Sprites
  • Support for Audio

MenuChanger (No documentation)

A core mod made by Homothety

Features:

  • Add custom game modes (like Steel Soul, Godseeker, etc.)
  • Add menus to certain pages like Mode Menu, menu from resuming a save, and probably more (for Local Settings)

Vasi (No documentation)

A core mod made by 56

Features:

  • Add support for dealing with animations
  • Edit FSMs
  • Help finding children of GameObjects
  • Help accessing private fields of certain classes
  • Help dealing with IEnumerables

A core mod made by BadMagic that simplifies creating non-menu, in-game UI elements. Unity's UI elements are low-level components, meaning you need to be very familiar with their implementation details to piece them together into something useful and usually requiring a significant amount of boilerplate code. In contrast, MagicUI provides:

  • A hierarchical layout tree composed only of various "arrangable elements," which encapsulate boilerplate code and repeated arrangement behaviors.
  • Implicit re-measure/re-arrange support - simply change a property and the minimum necessary subset of the UI will be reflowed to accomodate the new value.
  • Several useful built-in element types, including buttons, text entry, text display, and images.
  • Simple API to implement custom element types for specific use cases
  • TextureLoader API to easily load images from embedded resources.

WeaverCore is a core mod for Hollow Knight that makes it easy to develop new content for the game, such as new Enemies, Scenes, Bosses, and more

Features:

  • Add new enemies
  • Add new bosses
  • Add new scenes
  • Provide an easy settings menu as an alternative to IModMenu
  • Cannot modify existing enemies, bosses and scenes

Osmi (No documentation)

A core mod made by Clazex that aims to provide convenient utilities and allow the user to get rid of writing commonly used code snippets repeatedly.

Features include but not limited to:

  • CharmUtil and Charm enum: provide a easy-to-maintain way to manage checking and (un)equipping for charms without magic numbers
  • Dict and LangUtil: automatic localization loading, switching and getting
  • RandomSelector: simulation of SendRandomEventV3, but way more flexible
  • Refs: short-hand for singleton instances
  • SimpleFSM: a straightforward approach to define a finite state machine from scratch with IEnumerators, attributes and full access to MonoBehaviour functionalities, also interops with vanilla PlayMakerFSM
  • Osmi.FsmActions namespace: convenient PlayMakerFSM actions ... and a large number of extension method utilities

HKCore FSMUtil (No documentation)

A core mod made meant to replace all different PlayMakerExtensions, FsmExtensions, FsmUtil and FSMHelper in the long run.

No list of features provided

HKTool (No documentation)

HKTool is a library mod of https://github.com/HKLab/hkmod-utils tool, including the following functions:

  • ReflectionHelper and RefHelper
  • Fsm Utils
  • Simple MenuUtils
  • Extract Sprite and tk2dSprite (unstable)
  • Internationalization
  • Simple debugging tool

Table of Features

The ⭐ means it's the best in that aspect of modding.

UI is for on-screen information, and Menus are for in-game interactable menus.

Reflection is for accessing hidden fields in classes. Mods in these areas mostly simplify your code on getting these private fields.

FSMs Charms Items Enemies Audio Textures Animation Menus UI Scenes Reflection Other
SFCore ✔️ ✔️ ✔️ Inventory Menu Styles, Achievements, Logo, Language from JSON
Satchel ✔️ ✔️ ✔️ ✔️ Best for Global Settings. ✔️ Read Satchel section
FrogCore ✔️ ✔️ ✔️ Edits tk2d and has MethodBehaviour
ItemChanger ✔️ ✔️ Specialized for Items
MenuChanger Best for Local Settings. Helps you with custom game modes!
Vasi ✔️ ✔️ ✔️ Also helps with coroutines, enumerables, and GameObjects
MagicUI Specialized for UI and interactive UI
WeaverCore ✔️ Can add, not modify <-- For Content Creation. Mainly used by boss mods like CKin & IKG
Osmi ✔️ ✔️ ✔️ Languages, Streams, Tuples, SceneData, Hooks, etc.
HKTool ✔️ Extracts Extracts ✔️ ✔️ Extracts tk2dSprite, internationalization and simple debugging tool

Which mod to use for each aspect of modding?

These mods are best suited for these situations:

Aspect Mod
FSMs Satchel
Charms SFCore (ItemChanger also helps for items)
Items ItemChanger
Enemies WeaverCore
Audio Satchel
Textures Satchel or SFCore
Animation Vasi
Menus MenuChanger for Local Settings, Satchel for Global Settings
UI MagicUI
Scenes Satchel or WeaverCore
Reflection Vasi

Other niche mods

These mods are used for use with other mods for specific things like Rando, etc. or used by lesser than 10 mods.

If one of these mods are requested to be added with list of features, ping the creator of the Gist.

  • Unity Explorer
  • HKMP (not a library)
  • DebugMod (not a library)
  • MultiWorldLib
  • Benchwarp (not necessarily a library)
  • RandomizerCore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment