-
Notifications
You must be signed in to change notification settings - Fork 2
Guide Publishing
The path from a working mods/<id>/ directory to something other people
can install, and the rules that bind it.
-
Manifest hygiene. A real
version(semver, so dependents can range-check you), adescriptionthe manager can show, an honestprofile,game_versionpinned only if you rely on something version-specific,affects_linkstated when the profile default is wrong (Link Compatibility). -
README.md— what the mod does, how to install it, and the regenerate instructions for any transform-derived art. -
DIFFERENCES.md— what you change from vanilla, in the format of the engine'sdocs/known-differences.md. Your divergences are yours to document; the base game's ledger stays "None currently." (Compatibility). -
Validate and lint clean.
python3 tools/modkit.py validate my_mod --strict python3 tools/modkit.py lint my_mod
-
Pack.
python3 tools/modkit.py pack my_mod -o my_mod-1.0.0.modpkg
packre-runs both gates at strict level — any finding refuses the package — and zips the directory. Users unpack into theirmods/folder (Getting Started).
A distributed mod contains no ROM-derived content: no extracted PNGs, no chip-audio banks, no ROM images, no IPS/BPS/UPS patches (lint rules MK301–MK304). Derived art ships as an asset transform that regenerates it from the player's own cache (Art Pipeline). Because nothing you distribute contains Nintendo/Game Freak content, your mod is shareable as ordinary open-source Lua and PNGs — the same posture the engine itself claims.
Branding is your responsibility: name and present your mod as your own work, not as an official product.
- Bump patch for fixes, minor for compatible additions, major when you break your own save shape or exported API.
- Ship a
mod.migrations:addstep whenever yourmodDatashape changes (Save Model) — old saves are your users' progress. - Treat
mod.exportsas a public API: additive changes only within a major. - Declare
conflictswhen you know two mods cannot coexist; the declaring mod loses at load time, so state it in the mod that knows.
Before shipping, test what your users will actually hit: enable alongside popular mods (merge-order surprises), disable mid-save (your content quarantines and reclaims cleanly), and load a save from your previous version (migrations fire). A mod that fails politely — attributed errors, no crashes, clean rollback — is one the manager can help users live with.
Engine 1.0.0 · mod API 2 · repository · Discord
This project ships no ROM data. All game content is decoded on the player's machine from their own verified Pokemon Red ROM; mods ship recipes and original assets, never extracted content.
Start here
Concepts
Tutorials
- The ladder
- 01 Sprite and Text Tweak
- 02 Balance Patch
- 03 New Species
- 04 New Item and Ball
- 05 New Move
- 06 NPC and Dialogue
- 07 New Map
- 08 Quest
- 09 Custom Music
- 10 New Mechanic
- 11 Custom UI Screen
- 12 Mini Total Conversion
Reference
Guides
Playing