{
  // 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/custom_levels" 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,
  // sky textures and cases where you want to use objects drawn with the generic renderer,
  // which also requires you to set a texture remap table and a list of tpages.
  // 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.
  // The format is ["tpage-name", "texture-name1", "texture-name2", ...].
  // If you want all textures from a tpage, you can just do ["tpage-name"].
  "textures": [
    // Zoomer HUD textures
    // ["zoomerhud"],
    // Sandover sky textures
    ["village1-vis-alpha"]
  ],

  // Which vanilla level's texture remap table to use.
  // This is needed if you want to have proper textures for objects that are drawn using generic, such as
  // dark eco pools or dying enemies. If you choose to use this,
  // the order of art groups and tpages in your level's .gd MUST match the vanilla level's for the textures to work.
  "tex_remap": "village1",

  // Which sky to use for your custom level. This needs to be the name of a vanilla level with sky textures.
  // Your level's mood update needs to be set up to copy the sky texture (update-mood-default already handles this as an example).
  // You also need to add a specific tpage to your level .gd depending on the level you chose:
  // training:   tpage-1308.go
  // village1:   tpage-401.go
  // beach:      tpage-215.go
  // jungle:     tpage-388.go
  // misty:      tpage-520.go
  // firecanyon: tpage-1123.go
  // village2:   tpage-921.go
  // rolling:    tpage-925.go
  // sunkenb:    tpage-162.go
  // swamp:      tpage-630.go
  // ogre:       tpage-1117.go
  // village3:   tpage-1194.go
  // snow:       tpage-712.go
  // finalboss:  tpage-1418.go
  // The tpage you choose also has to be in the alpha (4th) slot in the "tpages" list below.
  "sky": "village1",

  // Any texture pages that are added to the level's "texture-ids" array.
  // These will be logged in and linked as part of level loading.
  // There are five tpage categories, in this order:
  // - tfrag
  // - pris
  // - shrub
  // - alpha
  // - water
  // This is also (with the exception of levels that use the zoomer) the order that the tpages are listed in in the vanilla .gd files.
  // You need to also add these to your level .gd as well.
  // Sky textures use the alpha slot.
  // If this is empty and "tex_remap" and "sky" are the same level, this will be auto-filled with the tpages from the
  // corresponding level (check its .gd file for the art group/tpage order to copy over).
  "tpages": [],

  // 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.136], // 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.136, 10], // bounding sphere
      "lump": {
        "name": "test-crate",
        "crate-type": "'steel",
        "eco-info": ["eco-info", "(pickup-type money)", 10]
      }
    },

    {
      "trans": [-5.463, 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.463, 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"
    //   }
    // }
  ]
}
