mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 11:26:18 -04:00
62ef9fe49d
This does a couple of things: - The `custom_levels` folder was renamed to `custom_assets` and contains `levels`, `models` and `texture_replacements` folders for Jak 1, 2 and 3 in order to keep everything regarding custom stuff in one place. - With this, texture replacements now use separate folders for all games - A build actor tool was added that generates art groups for custom actors - Custom levels can now specify what custom models from the `models` folder they want to import, this will add them to the level's FR3. - A `test-zone-obs.gc` file was added, containing a `test-actor` process that uses a custom model as an example. The build actor tool is still very WIP, the joints and the default animation are hardcoded, but it allows for importing any GLB file as a merc model.
157 lines
6.1 KiB
Plaintext
157 lines
6.1 KiB
Plaintext
{
|
|
// The "in-game" name of the level. Should be lower case, with dashes (GOAL symbol name)
|
|
// the name of this file, and the folder this file is in must have the same name.
|
|
"long_name": "test-zone",
|
|
// The file name, should be upper case and 8 characters or less.
|
|
"iso_name": "TESTZONE",
|
|
// The nickname, should be exactly 3 characters
|
|
"nickname": "tsz", // 3 char name, all lowercase
|
|
// Background mesh file.
|
|
// Must have vertex colors. Use the blender cycles renderer, bake, diffuse, uncheck color,
|
|
// and bake to vertex colors. For now, only the first vertex color group is used, so make sure you
|
|
// only have 1.
|
|
"gltf_file": "custom_assets/jak1/levels/test-zone/test-zone2.glb",
|
|
|
|
// automatically set wall vs. ground based on angle. Useful if you don't want to assign this yourself
|
|
"automatic_wall_detection": true,
|
|
"automatic_wall_angle": 45.0,
|
|
|
|
// if your mesh has triangles with incorrect orientation, set this to make all collision mesh triangles double sided
|
|
// this makes collision 2x slower and bigger, so only use if really needed
|
|
"double_sided_collide": false,
|
|
|
|
// available res-lump tag types:
|
|
// integer types: int32, uint32, enum-int32, enum-uint32
|
|
// float types: float, meters (1 meter = 4096.0 units), degrees (65536.0 = 360°)
|
|
// vector types: vector (normal floats), vector4m (meters), vector3m (meters with w set to 1.0), vector-vol (normal floats with w in meters), movie-pos (meters with w in degrees)
|
|
// special types: symbol, type, string, eco-info, cell-info, buzzer-info, water-height
|
|
//
|
|
// examples:
|
|
//
|
|
// adds a float tag 'spring-height' with value of 200 meters (1 meter = 4096.0 units):
|
|
// "spring-height": ["meters", 200.0]
|
|
//
|
|
// adds a degrees tag 'rotoffset':
|
|
// "rotoffset": ["degrees", -45.0]
|
|
//
|
|
// adds a movie-pos tag:
|
|
// "movie-pos": ["movie-pos", [100.22, -25.3, 99.5, 180.0]]
|
|
//
|
|
// adds an enum tag 'options':
|
|
// "options": ["enum-int32", "(fact-options large)"]
|
|
//
|
|
// adds a water-height tag:
|
|
// "water-height": ["water-height", 25.0, 0.5, 2.0, "(water-flags wt08 wt03 wt01)"]
|
|
//
|
|
// adds an eco-info tag:
|
|
// "eco-info": ["eco-info", "(pickup-type health)", 2]
|
|
//
|
|
// adds a cell-info tag:
|
|
// "eco-info": ["cell-info", "(game-task training-gimmie)"]
|
|
//
|
|
// adds a buzzer-info tag:
|
|
// "eco-info": ["buzzer-info", "(game-task training-buzzer)", 5]
|
|
//
|
|
// adds a 'symbol' tag (using the 'type' and 'string' lump types works the same way):
|
|
// "symbol-list": ["symbol", "sym-1", "sym-2"]
|
|
|
|
// The base actor id for your custom level. If you have multiple levels, this should be unique!
|
|
"base_id": 100,
|
|
|
|
// All art groups you want to use in your custom level. Will add their models and corresponding textures to the FR3 file.
|
|
// Note: You will still have to add them to your level's .gd file.
|
|
// "art_groups": ["plat-ag"],
|
|
|
|
// If you have any custom models in the "custom_assets/jak1/models" folder that you want to use in your level, add them to this list.
|
|
// Note: Like with art groups, these should also be added to your level's .gd file.
|
|
"custom_models": ["test-actor"],
|
|
|
|
// Any textures you want to include in your custom level. This is mainly useful for things such as the zoomer HUD,
|
|
// which is not in the common level files and has no art group associated with it.
|
|
// To get a list of all the textures, you can extract all of the game's textures
|
|
// by setting "save_texture_pngs" to true in the decompiler config.
|
|
"textures": [
|
|
// all textures required for the zoomer HUD
|
|
// "zoomerhud",
|
|
// "zoomerhud-dial",
|
|
// "zoomerhud-main-02",
|
|
// "zoomerhud-main-03",
|
|
// "zoomerhud-pieslice",
|
|
// "zoomerhud-heatbg-01",
|
|
// "zoomerhud-main-03arrow",
|
|
// "zoomerhud-main-03knob"
|
|
],
|
|
|
|
// Ambients you want to use in your custom level. Ambients can be used for various things like changing the music variation (flava),
|
|
// adding ambient sounds, level name hints, etc.
|
|
"ambients": [
|
|
{
|
|
"trans": [-21.6238, 20.0496, 17.1191, 10.0],
|
|
"bsphere": [-21.6238, 20.0496, 17.1191, 15.0],
|
|
"lump": {
|
|
"name": "test-ambient",
|
|
"type": "'hint",
|
|
"text-id": ["enum-uint32", "(text-id fuel-cell)"], // text id for the "POWER CELL" text
|
|
"play-mode": "'notice"
|
|
}
|
|
}
|
|
],
|
|
|
|
"actors" : [
|
|
{
|
|
"trans": [-21.6238, 20.0496, 17.1191], // translation
|
|
"etype": "fuel-cell", // actor type
|
|
"game_task": "(game-task none)", // associated game task (for powercells, etc)
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-21.6238, 19.3496, 17.1191, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-fuel-cell",
|
|
"eco-info": ["cell-info", "(game-task none)"]
|
|
}
|
|
},
|
|
|
|
{
|
|
"trans": [-15.2818, 15.2461, 17.1360], // translation
|
|
"etype": "crate", // actor type
|
|
"game_task": "(game-task none)", // associated game task (for powercells, etc)
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-15.2818, 15.2461, 17.1360, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-crate",
|
|
"crate-type": "'steel",
|
|
"eco-info": ["eco-info", "(pickup-type money)", 10]
|
|
}
|
|
},
|
|
|
|
{
|
|
"trans": [-5.4630, 17.4553, 1.6169], // translation
|
|
"etype": "eco-yellow", // actor type
|
|
"game_task": "(game-task none)", // associated game task (for powercells, etc)
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-5.4630, 17.4553, 1.6169, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-eco"
|
|
}
|
|
},
|
|
{
|
|
"trans": [-5.41, 3.5, 28.42], // translation
|
|
"etype": "test-actor", // actor type
|
|
"game_task": 0, // associated game task (for powercells, etc)
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-7.41, 3.5, 28.42, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-actor"
|
|
}
|
|
}
|
|
// {
|
|
// "trans": [-7.41, 3.5, 28.42], // translation
|
|
// "etype": "plat", // actor type
|
|
// "game_task": "(game-task none)", // associated game task (for powercells, etc)
|
|
// "quat": [0, 0, 0, 1], // quaternion
|
|
// "bsphere": [-7.41, 3.5, 28.42, 10], // bounding sphere
|
|
// "lump": {
|
|
// "name": "test-plat"
|
|
// }
|
|
// }
|
|
]
|
|
} |