data/game_database.json is built from Marvel Rivals' localization file (Game.json) using the script at scripts/build_database.py. Run this after each game update to pick up new heroes and skins.
- FModel — free UE asset browser: https://fmodel.app
- Python 3.11+ with the project's venv active (
pip install -r requirements.txt)
- Open FModel and load Marvel Rivals.
- In the Archives tab, make sure the game AES key is entered.
- Navigate to:
Marvel/Content/Localization/Game/en/ - Right-click the most recent Game.uasset → Save Properties.
- FModel will write
Game.jsonto its output folder.
If Game.json is in one of the default locations, just run:
python scripts/build_database.pyOtherwise pass the path explicitly:
python scripts/build_database.py "C:\path\to\Game.json"The script will print a summary and overwrite data/game_database.json.
Open data/game_database.json and spot-check:
- New heroes appear with the correct display name.
- New skins are listed under the right hero.
- No obviously wrong names (e.g. raw key strings like
CHAR_NAME_1055).
Add an entry to CHAR_NAME_OVERRIDES near the top of build_database.py:
CHAR_NAME_OVERRIDES: dict[str, str] = {
"1055": "Daredevil", # example: localization stored an unexpected string
}The char_id is the 4-digit ID visible in the JSON (e.g. "char_id": "1055").
If a brand-new hero's name isn't picked up yet, add a temporary override:
CHAR_NAME_OVERRIDES: dict[str, str] = {
"1065": "New Hero Name",
}Remove the override once the localization catches up.
For skins not yet in the localization, add to HARDCODED_SKINS:
HARDCODED_SKINS: list[tuple[str, str, str]] = [
("1055", "1055800", "Born Again Season 2"),
]Tuple format: (char_id, skin_id, display_name).
Skins whose names contain any string in SKIN_NAME_BLACKLIST are excluded from the output. Add substrings there if a cosmetic variant should be hidden:
SKIN_NAME_BLACKLIST = ["Cosmic Invasion", "some other variant"]Re-run the app. On first launch it will re-export textures from the game paks and rebuild the image cache automatically.
If skin images look stale, delete data/images/ to force a full re-cache.