Skip to content

ldtk

stable

LDtk level editor project file loader and accessor for reading levels, layers, entities, tilesets, and tile data from LDtk JSON files.

use plugin ldtk::{load, get_levels, get_level, …}
12 functions Game
/ filter jk navigate Esc clear
Functions (12)
  1. load Load an LDtk project file from disk
  2. get_levels Get all levels from a project
  3. get_level Get a level by index
  4. get_layer_instances Get all layer instances for a level
  5. get_entities Get entity instances from a layer
  6. get_int_grid Get integer grid values from a layer
  7. level_count Count levels in a project
  8. get_level_by_name Find a level by its identifier string
  9. get_tilesets Get tileset definitions from a project
  10. get_grid_size Get the grid size of a layer
  11. get_auto_layer_tiles Get auto-layer tile instances
  12. get_layer_type Get the type string of a layer

Load an LDtk project file from disk

Loads an LDtk .ldtk JSON project file from disk and returns its full contents as a nested table. This is the starting point for all other LDtk functions.

use plugin ldtk::{load}

let project = load("assets/world.ldtk")

Get all levels from a project

Returns the array of all level objects from a loaded LDtk project table. Each element is a level table containing identifier, layerInstances, and other LDtk level fields.

use plugin ldtk::{load, get_levels}

let project = load("assets/world.ldtk")
let levels = get_levels(project)
print("Level count: {levels}")

Get a level by index

Returns a single level by zero-based index. Returns nil if the index is out of range.

use plugin ldtk::{load, get_level}

let project = load("assets/world.ldtk")
let first = get_level(project, 0)
print("First level: {first["identifier"]}")

Get all layer instances for a level

Returns the array of layer instances for a given level table. Each layer instance contains type, grid size, entity or tile data depending on its type.

use plugin ldtk::{load, get_level, get_layer_instances}

let project = load("assets/world.ldtk")
let level = get_level(project, 0)
let layers = get_layer_instances(level)

Get entity instances from a layer

Returns the entityInstances array from an Entities-type layer. Each entry contains the entity identifier, position, fields, and other LDtk entity data.

use plugin ldtk::{load, get_level, get_layer_instances, get_entities}

let project = load("assets/world.ldtk")
let level = get_level(project, 0)
let layers = get_layer_instances(level)
let entities = get_entities(layers[1])

Get integer grid values from a layer

Returns the intGridCsv array from an IntGrid-type layer. Values are integers representing the cell types defined in the LDtk project.

use plugin ldtk::{load, get_level, get_layer_instances, get_int_grid}

let project = load("assets/world.ldtk")
let level = get_level(project, 0)
let layers = get_layer_instances(level)
let grid = get_int_grid(layers[1])
print("Grid cells: {grid}")

Count levels in a project

Returns the total number of levels in a loaded project. Equivalent to checking the length of get_levels.

use plugin ldtk::{load, level_count}

let project = load("assets/world.ldtk")
let n = level_count(project)
print("Total levels: {n}")

Find a level by its identifier string

Finds and returns the level whose identifier matches name. Returns nil if no level with that name exists.

use plugin ldtk::{load, get_level_by_name}

let project = load("assets/world.ldtk")
let boss_room = get_level_by_name(project, "BossRoom")
if boss_room != nil {
  print("Found boss room")
}

Get tileset definitions from a project

Returns the array of tileset definitions from defs.tilesets in the project. Each tileset contains the path, grid size, tile count, and other metadata.

use plugin ldtk::{load, get_tilesets}

let project = load("assets/world.ldtk")
let tilesets = get_tilesets(project)
print("Tilesets: {tilesets}")

Get the grid size of a layer

Returns the __gridSize value from a layer instance table (the size of one grid cell in pixels). Returns nil if the field is absent.

use plugin ldtk::{load, get_level, get_layer_instances, get_grid_size}

let project = load("assets/world.ldtk")
let level = get_level(project, 0)
let layers = get_layer_instances(level)
let size = get_grid_size(layers[1])
print("Grid size: {size}px")

Get auto-layer tile instances

Returns the autoLayerTiles array from an AutoLayer-type layer. Each entry describes a tile's source rect, position, and flip flags.

use plugin ldtk::{load, get_level, get_layer_instances, get_auto_layer_tiles}

let project = load("assets/world.ldtk")
let level = get_level(project, 0)
let layers = get_layer_instances(level)
let tiles = get_auto_layer_tiles(layers[1])

Get the type string of a layer

Returns the __type string from a layer instance (e.g. "Tiles", "IntGrid", "Entities", "AutoLayer").

use plugin ldtk::{load, get_level, get_layer_instances, get_layer_type}

let project = load("assets/world.ldtk")
let level = get_level(project, 0)
let layers = get_layer_instances(level)
let layer_type = get_layer_type(layers[1])
print("Layer type: {layer_type}")
enespt-br