jak-project/custom_assets
Hat Kid edae60d58d
decompiler: support merc model replacements and adding custom actor models to vanilla fr3s (#3597)
This adds support for replacing existing merc models in FR3 files with
custom GLB model files. The replacements go in
`custom_assets/<GAME>/merc_replacements`, similar to texture
replacements. When a `.glb` file with a file name that matches any model
present in an FR3 is detected (e.g. `eichar-lod0` for Jak), all merc
model data is replaced with the given model.

Additionally, models for custom actors can now also be added to vanilla
FR3s. The models for this go in
`custom_assets/<GAME>/models/<LEVEL_NAME>` (e.g.
`custom_assets/jak1/models/jungleb/test-actor-lod0.glb`) and will be
added to the FR3 that has a matching name (exception: to add things to
the common level file, the folder should be named `common` instead of
`GAME`).
For custom levels, these now go in
`custom_assets/<GAME>/models/custom_levels` (previously
`custom_assets/<GAME>/models`).

Another small change: When level ripping is enabled, the resulting model
files will now be stored in game name subfolders inside of `glb_out`.
2024-07-21 01:51:31 +02:00
..
blender_plugins [wip] build actor tool (#3266) 2024-05-18 18:18:25 +02:00
jak1 decompiler: support merc model replacements and adding custom actor models to vanilla fr3s (#3597) 2024-07-21 01:51:31 +02:00
jak2/levels/test-zone [wip] build actor tool (#3266) 2024-05-18 18:18:25 +02:00
jak3/levels/test-zone [wip] build actor tool (#3266) 2024-05-18 18:18:25 +02:00
README.md [wip] build actor tool (#3266) 2024-05-18 18:18:25 +02:00

Custom Levels

Disclaimer: custom levels are still in development and are missing most features.

The first three steps are already done for "test zone", so this can be used as a starting point.

1: File Setup

To create a custom level, copy the layout of custom_assets/jak1/levels/test-zone. See test-zone.jsonc for information on how to name things. The .gd file also contains the level name.

2: Modify the engine

Modify goal_src/jak1/engine/level/level-info.gc to add level info for each custom level. There is level info for test-zone at the bottom that can be used as an example.

3: Modify the build system

Modify goal_src/jak1/game.gp and add a custom level target:

(build-custom-level "test-zone")
;; the DGO file
(custom-level-cgo "TESTZONE.DGO" "test-zone/testzone.gd")

4: Export the GLTF file from blender.

For now, all meshes are displayed and treated as ground collision. This causes buggy collision because walls shouldn't use "floor" mode.

Blender will create a .glb file, which must have the name specified in the .jsonc file and should be located in custom_assets/jak1/levels/your_level

5: Rebuild the game

Any time the .glb file is changed, you must rebuild the game. Launch the compiler (goalc) and run (mi) to rebuild everything. It's recommended to leave the compiler open - it will remember files that haven't changed and skip rebuilding them.

6: Go to the custom level

Start the game in debug mode gk.

In the compiler window, run (lt) to connect to the game. You must run this again every time you restart the game. If this doesn't work, there could be a firewall issue and you must allow goalc/gk to use the network. They don't make any outside connections.

In the compiler window, run a command like (bg-custom 'test-zone-vis) to load and start at a custom level.