ldtk
stableLDtk 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, …} Functions (12)
- load Load an LDtk project file from disk
- get_levels Get all levels from a project
- get_level Get a level by index
- get_layer_instances Get all layer instances for a level
- get_entities Get entity instances from a layer
- get_int_grid Get integer grid values from a layer
- level_count Count levels in a project
- get_level_by_name Find a level by its identifier string
- get_tilesets Get tileset definitions from a project
- get_grid_size Get the grid size of a layer
- get_auto_layer_tiles Get auto-layer tile instances
- 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}")