Welcome to the Teamfight Manager 2 modding guide.
Mods can add new champions, change text and images, replace or merge game assets, add UI pieces, and, for more advanced projects, run custom Rust code through a native DLL.
If this is your first mod, start with a data-only champion. You can make one with JSON files and image assets, without installing the Mod SDK or compiling code.
These are the easiest mods to build and share.
- Add champions with
.data_championfiles. - Rework existing champions by reusing their base champion id in a
.data_championfile. - Add custom icons, sprites, UI layouts, and text.
- Merge new translations into the game's text files.
- Override existing assets such as sprites or JSON data.
- Add optional Ban/Pick portraits without replacing gameplay sprites.
You do not need the Mod SDK for this kind of mod.
Database packs are Workshop sharing packages for custom database files. They use database_pack.info, can contain one or more database files directly in the package folder, and are downloaded/shared through Steam Workshop without being automatically enabled as in-game mods.
Native mods are for things that need custom code.
- Add champions with custom simulation logic.
- Rework existing champions with custom runtime logic through
replace_champion. - Add items with runtime callbacks.
- Add UI or scene behavior through lifecycle hooks.
- Add server-side management hooks for save/game-state logic.
- Send client-to-server mod commands and receive server-to-client mod events.
- Read current save data such as teams, athletes, matches, leagues, and champion info.
- Adjust ban/pick scoring and replace final player AI inputs.
- Store custom per-save data for your mod.
- Expose reusable runtime services that other native mods can depend on.
- Build deeper experiments that cannot be described with JSON alone.
New native mods should use the stable mod API: build once with any Rust toolchain, and the module keeps working across game updates. It also works on Windows, macOS, and Linux — you build a binary for each platform you want to support, put them in the same package, and the game picks the right one (Platform Support). The classic native path is deprecated — its SDK is Windows-only, supported through game version 0.5 only, and is no longer shipped or updated from 0.6. If you maintain a classic mod, we strongly recommend migrating it to the stable API.
- Getting Started
- Mod Package Structure
- Data-Only Champions
- Data Champion Schema
- Override Existing Champions
- Assets and Sprite Sheets
- Asset Overrides and i18n
- Ban/Pick Illustration Packs
- Stable Native Mods (recommended)
- Stable API Reference
- Native Rust Mods (classic, deprecated — SDK support ends after 0.5)
- Native Mod API Reference
- Native AI Hooks
- Mod Save Data
- Workshop Upload
- Troubleshooting
A simple champion mod might look like this:
my_mod/
mod.mod_info
thumbnail.png
champion/
my_champion.data_champion
text/
champion.i18n
icons/
my_champion_skill.png
my_champion_skill2.png
my_champion_ult.png
champions/
my_champion.aseprite
The folder name becomes the mod id. Files inside the folder are referenced as asset/<mod_id>/....
For example:
mods/my_mod/icons/my_champion_skill.png
is used as:
asset/my_mod/icons/my_champion_skill
File extensions are left out when writing asset paths.
- Create a folder under
mods/. - Add
mod.mod_info. - Add one
.data_championfile. - Reuse a base-game sprite while testing.
- Add your own icons and text after the champion appears in-game.
- Use
TFM2ModUploader.exeto publish the finished mod to Steam Workshop. - Move to a native Rust mod only when JSON effects are not enough.
The game shows mod loading issues on the title screen, so if something does not appear, check the diagnostics popup first.
The normal upload tool is TFM2ModUploader.exe, included with the game package. It lets you choose a mod or database pack folder, check its metadata, choose Workshop visibility, write a change note, and publish or update the Workshop item.
Most mods and database packs only need this uploader. If your mod contains native Rust source code in src/lib.rs, install the matching Mod SDK next to the uploader before using the build option.