Skip to main content
nonkit is a development tool with specific constraints. Understanding these limitations helps set appropriate expectations.

No Package Export (Yet)

The ability to export nonkit projects as standalone BepInEx plugins is still in development.
Currently, nonkit operates as a live development environment:
  1. VS Code compiles and sends scripts to the game
  2. The game plugin receives and executes them in real-time
  3. Content exists only while VS Code is connected
Until the packager is ready:
  • You cannot distribute your content to other players
  • Content requires both VS Code with nonkit-vsc AND the game with nonkit-plugin
  • There’s no way to “export” a finished mod
A packager to compile nonkit projects into distributable BepInEx plugins is planned for a future release.

Platform Requirements

Windows Only

nonkit uses Windows named pipes for communication between VS Code and the game. This means:
  • Windows is required - Linux and macOS are not supported
  • WSL (Windows Subsystem for Linux) may work but is untested
  • The game and VS Code must run on the same machine

Simultaneous Execution

Both components must run at the same time. VS Code (with nonkit-vsc) sends scripts to the running game (with nonkit-plugin) over a named pipe. This means you cannot:
  • Pre-compile scripts for later use
  • Run content without VS Code connected
  • Queue scripts while the game is closed

Game Dependency

BepInEx Required

nonkit-plugin is a BepInEx plugin. You must:
  1. Install BepInEx 6 in your NONMP game folder (NONMP is an IL2CPP game)
  2. Place nonkit-plugin.dll in the plugins folder
  3. Ensure BepInEx loads successfully on game start

Gameplay State Required

The plugin only accepts commands during active gameplay:
  • Must load a save file or start new game
  • Main menus and loading screens don’t process dialogue
  • Some commands require specific game states (e.g., start_battle needs a valid battle context)

API Volatility

Command and function behavior is based on analysis of the game’s early releases. NONMP is in Early Access and receives frequent updates.
This means:
  • Commands may change signature or behavior
  • Functions may return different values
  • New features may be added, old ones removed
  • Internal IDs (items, locations, characters) may shift

What to Expect

StabilityExamples
Likely stableBasic dialogue, char_creat, back_creat
May changeSpecific item IDs, character expression names
UncertainAdvanced battle commands, internal game values
Check release notes when updating either the game or nonkit.

Content Limitations

No New Assets

You cannot add:
  • New character sprites or expressions
  • New background images
  • New music or sound effects
  • New items or item icons
You can only reference existing game assets.

Icon Workaround

The game loads map event icons based on the event’s ID. Since custom events must use non-existing IDs to avoid overriding existing quests, and nonkit cannot yet inject custom resources, the game would fail to find an icon for your event. The Nonkit.IconSourceId parameter works around this by specifying an existing event ID to borrow the icon from:
{
  "Nonkit": {
    "IconSourceId": 10084
  }
}
This tells the game to load the icon for event 10084 instead of looking for an icon matching your custom event’s ID.

Limited Table Support

Config tables are injected by matching the filename to the game’s internal table name. Any table that follows the game’s Luban data format can potentially be injected, but commonly used tables include:
  • TbMapEvent (map events)
  • TbCondition (unlock conditions)
  • TbLocalizationAutoGenerated (localization strings for config data)
Tables must have records with either an ID (numeric) or Key (string) field for identification.

Script Merging

Scripts are merged in memory and can override game content. Game files are never modified, but changes made through nonkit (such as giving yourself items) will persist if you save your game. Additional considerations:
  • Node names must be unique across all scripts (yours and the game’s)
  • Conflicting node names will cause unpredictable behavior
  • Use prefixes like MyMod_ to avoid collisions
// Good - prefixed
title: MyMod_ShopEvent
---

// Risky - might conflict
title: ShopEvent
---

Performance Considerations

  • Large scripts may take longer to compile and transfer
  • Many simultaneous events could impact game performance
  • The named pipe has a message size limit (varies by system)
For complex projects, split content across multiple files and nodes.

Summary

CapabilityStatus
Live script developmentYes
Hot reload dialogueYes
Custom map eventsYes
Standalone mod exportNo
Cross-platformNo (Windows only)
New assetsNo
Offline modeNo

Working Within Limits

Despite these constraints, nonkit enables:

Rapid Prototyping

Test dialogue and quest ideas instantly without restarting the game.

Content Exploration

Learn how the game’s dialogue system works by experimenting.

Personal Projects

Create custom content for your own playthroughs.

Future Modding

Prepare content that can be packaged when export tools are available.