gatheringhallstudios / MHWorldData

Generate a SQLite file from MHW data
MIT License
148 stars 41 forks source link
builder data database mhw monster-hunter monster-hunter-world sqlite

build

MHWorldData

A project used to generate a database from Monster Hunter World data. This database file is used to power the MHWorld Database Android app, but can be used for other purposes as well.

Check the releases section for compiled SQLite db files. There is no documentation for the db file, instead use a graphical tool like SQliteBrowser or figure it out from the mapping file. The data we build from is in the source_data folder.

Now that the game has launched for PC, the core maintainer has started in earnest. If you want to help speed up the process, please check out the help wanted section.

If you wish to chat with us, we also have a discord server.

Iceborne Update (Help Wanted)

I've started playing through the Iceborne PC launch, and while I'll have all data eventually, some help would definitely go a long way. Any help would be appreciated, but additions or corrections to these are some great examples:

Purpose and goals

This project exists as a free and open collection of Monster Hunter World data for people to build cool things with. We use this data in the (also open source) MHWorldDatabase Android app.

There are very few open collections of Monster Hunter data out there, and assembling what we have added a significant amount of time to the app's development process. Hopefully this database can spare you some of that trouble.

The data collected is limited to observable or computable data. Handwritten guides and editorial content are not collected in the repository.

How to contribute

This project sources most of its data from spreadsheets in the source_data/ folder. If you want to contribute a code change, inspect build.py in the root folder and follow the import trail.

If you are unable to work Git but have data corrections or translations to contribute, you can create a Github Issue with the new file or share a link to a google drive spreadsheet.

MISSING (Important Todo)

This is data we'd love to receive help towards.

Data Structure

The data files in source_data/ are used to build the final SQL file. The project is in the middle of a conversion from JSON to CSV, so some files are still JSON.

To edit the CSV files, I suggest using an office program like Excel or LibreOffice. Make sure to use UTF8 text encoding and comma separators when opening files. You can also import it to google drive.

Each subsystem (Monster/Armor/Weapons/etc) is stored in its own subdirectory. There are several types of data files:

How to build

Make sure Python 3.6 or greater is installed on your system, and pipenv is installed (pip install pipenv).

Afterwards, run pipenv run python build.py in a terminal to generate an mhw.sql file. You can run the tests by executing pipenv run pytest tests. You will need to use pipenv shell everytime you open a new console window.

Merging ingame binaries

This project uses fresch's mhw_armor_edit to parse ingame binary data. To use it, follow the directions in fresch's repository to create a merged chunk data folder (make sure you own a copy of Monster Hunter World...), rename it to mergedchunks, and move it outside the project (to the same directory this project is contained in). Afterwards, run pipenv run python binary.py update.

The directory structure should approximately look like this:

-- any parent directory
 |-- mhworlddata/
  |-- mhdata/
  |-- mhw_armor_edit/
  |-- build.py
 |-- mergedchunks/

Data Sources

The data collected by this project is an accumulation of various sources, including manual entry from the game itself, official guidebooks, and other collections.

License

The build code is licensed under the MIT License. Data and images are from Monster Hunter World, which is owned by Capcom.

The mhw_armor_edit/ folder and its contents are public domain. Instead of our silly little extraction, feel free to access the real deal here.

You are free to use this database for any purpose.

Special Credits

Additional help with verifying data was done by nikibobi and Jayson.