|
7 | 7 | Libraries, a runtime mod framework and tools for modding Monster Hunter Freedom Unite (PSP, EU |
8 | 8 | release ULES01213), and for porting monsters to it from Monster Hunter Portable 3rd. |
9 | 9 |
|
10 | | -> **Under construction.** This repository replaces the six |
11 | | -> [MHFU-ModKit](https://github.com/MHFU-ModKit) repositories, which stay the current release |
12 | | -> until it is done. |
| 10 | +This repository replaces the six former MHFU-ModKit repositories (framework, example-mods, |
| 11 | +monster-editor, hud, blender-addon, formats), which are archived. |
13 | 12 |
|
14 | 13 | ## Layout |
15 | 14 |
|
16 | 15 | | Path | Contents | |
17 | 16 | |---|---| |
18 | | -| `packages/` | Python libraries: the debugger client, the file formats, the game (`mhfu`, which also holds the address map every language is generated from), the porter | |
19 | | -| `framework/` | The PRX plugin and its Lua host | |
20 | | -| `apps/` | The studio (monster and map editor), the HUD, the Blender extension | |
21 | | -| `ports/` | Manifests of the monsters ported from MHP3rd: the Brute Tigrex and the Zinogre | |
22 | | -| `ppsspp/` | PPSSPP patched for automation, its build, and a headless container to run it in | |
23 | | -| `examples/` | Example mods | |
24 | | -| `docs/` | Guides and format references | |
| 17 | +| [`packages/mhp-formats`](packages/mhp-formats) | The games' file formats, and extracting a game from its ISO | |
| 18 | +| [`packages/mhfu`](packages/mhfu) | The game: its address map (every language's is generated from it), live structs, automation, code analysis | |
| 19 | +| [`packages/mhfu-port`](packages/mhfu-port) | The porter: MHP3rd monsters into MHFU | |
| 20 | +| [`packages/ppsspp-debug`](packages/ppsspp-debug) | A client for PPSSPP's debugger | |
| 21 | +| [`packages/modkit-testing`](packages/modkit-testing) | The pytest fixtures the packages share | |
| 22 | +| [`framework`](framework) | The PRX plugin that runs mods in the game, its Lua host, and example mods in `framework/lua/examples/` | |
| 23 | +| [`apps/studio`](apps/studio) | The studio: ported monsters and map edits | |
| 24 | +| [`apps/hud`](apps/hud) | A live HUD next to PPSSPP | |
| 25 | +| [`apps/blender`](apps/blender) | The Blender extension for monster models | |
| 26 | +| [`ports`](ports) | Manifests of the monsters ported from MHP3rd: the Brute Tigrex and the Zinogre | |
| 27 | +| [`ppsspp`](ppsspp) | PPSSPP patched for automation, its build, and a headless container to run it in | |
| 28 | +| [`docs/formats`](docs/formats/README.md) | The file-format references | |
25 | 29 |
|
26 | | -## Development |
| 30 | +## Getting started |
27 | 31 |
|
28 | | -Needs [uv](https://docs.astral.sh/uv/). |
| 32 | +Needs git and [uv](https://docs.astral.sh/uv/). Nothing is prebuilt: every part builds from |
| 33 | +this repository. |
29 | 34 |
|
30 | 35 | ```bash |
31 | | -uv sync # every package, plus pytest and pre-commit |
32 | | -uv run pre-commit install # ruff, licence headers, comment style on each commit |
33 | | -uv run pytest |
| 36 | +git clone https://github.com/MHFU-ModKit/modkit |
| 37 | +cd modkit |
| 38 | +uv sync # every package and app, with the test tools |
| 39 | +uv run mhp-formats extract mhfu.iso workspace/extracted |
| 40 | +export MHFU_DATA=$PWD/workspace/extracted/data_files |
34 | 41 | ``` |
35 | 42 |
|
36 | | -Tests that read game files take them from `MHFU_DATA` and `MHP3RD_DATA`, each a directory of |
37 | | -extracted `DATA.BIN` files, and skip when the variable is unset; tests against a running PPSSPP |
38 | | -take `PPSSPP_BINARY` and `PPSSPP_GAME` the same way (`ppsspp/build.sh` builds the patched one). |
39 | | -Nothing from the games is committed here: no ISO, no extracted files, no memory dumps. |
| 43 | +The extraction is the game data the tools read, from your own copy of the game; `workspace/` is |
| 44 | +ignored by git, and the studio finds it there without `MHFU_DATA`. An MHP3rd extraction, for |
| 45 | +porting, goes to `workspace/extracted_mhp3` with `MHP3RD_DATA` (see |
| 46 | +[`mhp-formats`](packages/mhp-formats/README.md#extracting-a-game)). Then: |
| 47 | + |
| 48 | +- the PRX plugin and how to install it: [`framework`](framework/README.md#build) |
| 49 | +- the Blender extension: [`apps/blender`](apps/blender/README.md#build) |
| 50 | +- PPSSPP with the debugger patches, or in Docker: [`ppsspp`](ppsspp/README.md#build) |
| 51 | + |
| 52 | +Each package's own README has its commands. `uv sync --no-group qt` leaves out the Qt test |
| 53 | +plugin, for a machine without a display. |
| 54 | + |
| 55 | +### Wheels |
| 56 | + |
| 57 | +```bash |
| 58 | +uv build --all-packages --wheel # every package's wheel into dist/ |
| 59 | +pip install --find-links dist mhfu-studio # elsewhere; its modkit dependencies come from dist/ |
| 60 | +``` |
| 61 | + |
| 62 | +`uv build --package NAME` builds one. The packages are not on PyPI. |
| 63 | + |
| 64 | +## Contributing |
| 65 | + |
| 66 | +See [CONTRIBUTING.md](CONTRIBUTING.md). Nothing from the games is committed here: no ISO, no |
| 67 | +extracted files, no memory dumps, no disassembly. |
40 | 68 |
|
41 | 69 | ## Licence |
42 | 70 |
|
|
0 commit comments