Skip to content

seroperson/nrftw-interactive-map

Repository files navigation

Interactive Map for "No Rest for The Wicked"

An offline-capable interactive map for "No Rest for The Wicked". Many things are Clauded, so code probably smells.

Live at 🗺 nrftw.seroperson.me.

Why another map?

The uniqueness of this this map is that it's completely extracted from game resources. Still some things could be inaccurate, as my algorithm probably isn't perfect, resource misreads are possible, and there is quite a lot of game logic which must be treated properly to project everyhing on the map.

As it's extracted from game resources, you can notice the following features:

  • Currently there are around 3000 objects on the map, including: chest, shiny, item spawn points; lore readables; interactables, like doors or ladders; NPCs, enemy spawns; and many others.
  • Objects on this map contain the exact coordinates, so you can distinguish whether something is located deeply in cave or at high ground.
  • You can now see drop chances and loot pools on farmable resources.
  • Likely it would be easy to update this map when further game updates come.

More things to implement

Still there is a lot of work to be done, such as:

  • Loot spawn points tuning: currently there are some objects which don't exist visually in game, but exist in memory (or vice-versa). I guess again there is some logic which conditionally hides them.
  • Region offset extracting: currently I manually calibrated some offsets to project object correctly on the map. Ideally this offset must be extracted from the game.
  • Implement Black Trench map.

How to build it

The process is actually challenging, but in a nutshell there is no rocket science:

  • Unpack all resources using AssetRipper. They're necessary to get the map and extract some information from assets (such as translations).
  • Install MelonLoader. It allows you to execute custom code at runtime and extract the necessary data.
  • Install il2CppDumper and Ghidra. Follow this tutorial to disassemble the code. This way you can find the exact logic, find some necessary constants and so on.

After configuring the setup, everything left is to find the necessary game objects, dump them and put them on the map.

All necessary code is already in this repository:

  • nrftw-loot-dumper/ - is a mod to dump game objects.
  • scripts/generate_map_tiles.py - converts high-resolution map into the tiles for OpenLayers.
  • scripts/extract_item_translations.py - extacts item names from .asset files.
  • scripts/extract_condition_translations.py - extacts quest and world state names names from .asset files.
  • The rest code in this repository is an actual interactive web map.

To compile a bundle, just run npm run build.

License

This project is free for use and is not affiliated with or endorsed by the game developers. Published under GPL license.

About

Interactive web map for "No Rest for the Wicked" game. More than 3k objects.

Topics

Resources

License

Stars

Watchers

Forks

Contributors