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.
102 lines
4.1 KiB
Plaintext
102 lines
4.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/jak2/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 can-swim can-wade)"]
|
|
//
|
|
// adds an eco-info tag:
|
|
// "eco-info": ["eco-info", "(pickup-type health)", 2]
|
|
//
|
|
// adds a 'type' tag (using the "symbol" and "string" lump types works the same way):
|
|
// "spawn-types": ["type", "spyder", "juicer"]
|
|
|
|
// 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.
|
|
// Removed so that the release builds don't have to double-decompile the game
|
|
// "art_groups": ["prsn-torture-ag"],
|
|
|
|
// Any textures you want to include in your custom level.
|
|
// This is mainly useful for textures which are not in the common level files and have no art group associated with them.
|
|
// 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": [],
|
|
|
|
"actors" : [
|
|
{
|
|
"trans": [-15.2818, 15.2461, 17.1360], // translation
|
|
"etype": "crate", // actor type
|
|
"game_task": 0, // associated game task (for powercells, etc)
|
|
"kill_mask": 0,
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-15.2818, 15.2461, 17.1360, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-crate",
|
|
"eco-info": ["eco-info", "(pickup-type health)", 2]
|
|
}
|
|
},
|
|
|
|
{
|
|
"trans": [-5.4630, 17.4553, 1.6169], // translation
|
|
"etype": "eco-yellow", // actor type
|
|
"game_task": "(game-task none)", // associated game task (for powercells, etc)
|
|
"kill_mask": 0,
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-5.4630, 17.4553, 1.6169, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-eco"
|
|
}
|
|
},
|
|
|
|
{
|
|
"trans": [-7.41, 13.5, 28.42], // translation
|
|
"etype": "prsn-torture", // actor type
|
|
"game_task": "(game-task none)", // associated game task (for powercells, etc)
|
|
"quat": [0, 0, 0, 1], // quaternion
|
|
"bsphere": [-7.41, 13.5, 28.42, 10], // bounding sphere
|
|
"lump": {
|
|
"name": "test-torture"
|
|
}
|
|
}
|
|
]
|
|
} |