Skip to content

Releases: heygleeson/godot-ldtk-importer

Version 2.0.1

19 Sep 17:38
Compare
Choose a tag to compare

🌟✨Pretty Printing! ✨🌟

Godot_v4 3-stable_win64_24-09-20_01-37

New pretty messages!

This new logging system helps provide more clarity over the import process and makes tracking down issues easier.

Version 2.0.1 delivers some exciting new features (like this!), paired with a generous serving of some breaking changes.

➑️Updating

  • TileSet resources have a new filename signature tileset_{grid_size}px.res to help preserve your existing TileSets.
  • Import Flags have been changed which can potentially invalidate pre-existing import settings.
  • Please make backups of your project before updating.

πŸ†•What's New

  • TileSets have been rewritten to offer more functionality, with many bugs fixed

    • Overlapping tiles and mismatched tile/grid sizes are now supported. (#12, #20, #21)
    • Flipped tiles no longer generate alternative tiles (now using the new method in Godot 4.3) (#14)
    • TileSets are created for each unique grid size, creating duplicate TileSetAtlasSources only if the same tileset is used for different grid sizes
    • Many bugs fixed related to Tile Custom Data and Tile Custom Enums (Thanks to @KarryCharon)
  • LDTKLevels can be packed and saved as Scenes (better now)

    • Bugs fixed related to ownership of child nodes (especially instantiated scenes from post-import scripts) (#10)
    • EntityLayer Post-Import now works correctly when Pack Levels is ON (#32)
  • Import Flags have been tweaked

    • Separate_World_Layers has been renamed to Group_World_Layers
    • Added Layers_Always_Visible flag. Default: OFF.
    • Added Integer_Grid_Tilesets flag. Default: OFF.
    • Added Resolve_EntityRefs flag. Default: OFF (this feature is now considered experimental)
    • Pack_Levels is now ON by default
    • Force_Tileset_Reimport has been moved under the Debug category
  • Post-Import hooks have been reworked, and are now performed in a more logical step of the import process

  • 'Point' Fields are parsed as Vector2i instead of Vector2

  • Changes to Components

    • LDTKWorld nodes now track when LDTKLevel children have been added.
    • LDTKLevel position has been moved to a new export variable world_position. Individual Level Scenes are now always positioned at (0,0) rather than their world position previously
    • LDTKEntityPlaceHolders now support displaying Tiles (as Sprite2Ds) - matching their look in the LDTK Editor
  • Set verbose_output to ON for a more in-depth summary

  • Performance is measured and displayed in milliseconds, giving a breakdown by category where the importer spends the most time doing work (spoiler: it's mostly saving out resources)

  • New error/warning messages have been added when issues are detected within the LDTK file (null tilesets, unreachable file paths, etc.)

⚠️Issues

  • Resolve_EntityRefs still has inconsistent behaviour
    • If Pack_Levels is ON, then 'internal' EntityRefs can resolve. However, Godot displays an annoying error message Parameter "common_parent" is null when it cannot resolve (e.g. when pointing to an entity outside the level)
    • If Pack_Levels is OFF, then all EntityRefs can be resolved.
    • For those relying on EntityRefs in a bigger project, it's currently recommended to set Resolve_EntityRefs to OFF and write your own system for handling references. For example, creating an Autoload script that stores Dictionaries of EntityIids and EntityRefs.
  • Still investigating an issue where TileSets and Scenes sometimes do not force-update properly after reimporting (Reload Project is required)

Version 1.3.1

30 Aug 15:14
Compare
Choose a tag to compare

@KarryCharon has pushed some good changes in #24 to make the importer more robust. So good that they deserve their own release!

Amazing, thank you @KarryCharon!

What's Changed

  • Plugin no longer fails when generating tilesets for the first time
  • Plugin no longer runs threaded (this would often lock Godot when importing files)

Version 1.3

26 Aug 12:23
Compare
Choose a tag to compare

What's Changed

  • Updated to LDTK 1.5.3
  • Updated to Godot 4.3
  • As of Godot 4.3, TileMaps have been converted to TileMapLayers
  • Levels can now be saved as separate scenes! Select "Pack Levels" in import settings. (#15)
  • Background Images now respect anchor & position (#23)

Fixes

  • Fixed tile atlas padding/spacing bug by @mattias800 in #17
  • Fixed off-by-1 error calculating tileset cell sizes (#4, #6)

Issues

  • Due to TileMapLayers only allowing a single layer, overlapping tiles have been deprecated.
  • When using the "Pack Levels" import setting, "out-bound" EntityRefs no longer work.

New Contributors

Full Changelog: 1.2.1...1.3

Version 1.2.1

09 Oct 02:22
Compare
Choose a tag to compare
Version 1.2.1 Pre-release
Pre-release

(Found issues with this build - do not download)

What's Changed

  • Removed unnecessary setting of TileMap cell_quadrant_size (this will be renamed in Godot 4.2, and was being used incorrectly!)
  • Post-Import Entities: Fixed bug when setting owner of scene instance children to top-level node (this duplicated child nodes, causing problems).

Version 1.2 Alpha

28 Sep 10:06
Compare
Choose a tag to compare
Version 1.2 Alpha Pre-release
Pre-release

What's Changed

  • @TheNeikos draws first blood with the first PR (#1) with improvements to tile data for flipped tiles. Occluders, Collisions and Navigation data are correctly copied over, as well as bitwise optimisations for flipping tiles. Thank you! ✨
  • Basic Multi-Worlds support! This version packs all worlds into the same scene, as this preserves the ability to resolve references. I plan to do a future rewrite that would allow saving levels and worlds as individual scenes.

Version 1.2

03 Oct 11:27
Compare
Choose a tag to compare

What's Changed

  • Basic Multi-Worlds support! This version packs all worlds into the same scene, as this preserves the ability to resolve references.
  • Layers now use individual TileMaps. They are no longer combined based on gridSize and should be easier to work with.
  • New Import Options: Allow Overlapping Tiles. Defaults to true.
  • Alpha Tiles (set using AutoRules) are recognised and handled correctly.
  • FIX: WorldLayers are now sorted in the SceneTree based on their depth.
  • FIX: Tiles with individual offsets correctly snap to the nearest cell (Note: individual tile offsets are unsupported)
  • FIX: @TheNeikos added an optimisation to handling alternative tile polygons. (#2) Thank you! ✨

The source code now includes the offical LDtk sample projects for you to see how they are implemented in Godot.
More examples showing how to write/use post-import scripts will be added in the future.

How to Install

  1. Download the ZIP
  2. Extract to the /addons/ folder in your project
  3. Enable this plugin in Project > Project Settings > Plugins
  4. .ldtk files should now be visible!

Version 1.1

26 Sep 05:37
Compare
Choose a tag to compare
  • External Levels are now supported
  • Added WorldDepth layers import option Import Options: Separate World Layers
  • Now checks for LDTK version. Rejects ldtk files < v1.0 (please update)

Version 1.0 alpha 1

22 Sep 08:02
Compare
Choose a tag to compare

Thanks for testing out LDTK Importer for Godot 4.

How to Install

  1. Download the ZIP
  2. Extract to the /addons/ folder
  3. Enable this plugin in Project > Project Settings > Plugins