{ // 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/jak3/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. // "art_groups": [], // 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": "(game-task none)", // 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 gem)", 1] } }, { "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" } } ] }