/odin-ldtk

Odin loader for LDtk files. LDtk is a modern 2D level editor from the creator of Dead Cells, with a strong focus on user-friendliness.

Primary LanguageOdinMIT LicenseMIT

odin-ldtk

Loader for LDtk files. Uses Odin's core:json to unmarshal data into structs.

LDtk is a modern 2D level editor from the creator of Dead Cells, with a strong focus on user-friendliness.

Current version: 1.3.3

The data definitions were generated with JSON scheme and QuickType for rust and then manually edited.

How to use

Put the ldtk.odin file to a ldtk folder somewhere in your project. Then you can just do this (the path might be different):

import "../ldtk"

And then:

if project, ok := ldtk.load_from_file("foo.ldtk", context.temp_allocator).?; ok {
    for biome in project.defs.biomes {
        // use biomes ...
    }

    for level in proj.levels {
        for layer in level.layers {
            switch layer.type {
            case .IntGrid:
            case .Entities:
            case .Tiles:
            case .AutoLayer:
            }
        }
    }

    // ...
}

Note: value in Field_Instance can be a different type depending on the data. For this reason the type is json.Value, which works like any in this case, and you can do whatever you want with it.

TODO

  • Simple example tilemap renderer (and simple physics?), using raylib.

Contributing

Contributions are welcome!