ldtk

Modern, lightweight and efficient 2D level editor

MIT License

Downloads
6
Stars
3.4K
Committers
25
ldtk - 1.5.3 Latest Release

Published by deepnight 10 months ago

1.5.3

  • Fixed a crash when trying to add a newly created Entity
  • Fixed crash on async painting with no default Tileset
  • Fixed a crash with empty identifiers
  • Fixed a potential infinite loop with empty identifiers
  • On macOS, CTRL+Left click should now behave like Right Clicking for editing tools and open context menus
  • Added ne,nw,se,sw corners directions for Level.__neighbours in JSON
ldtk - 1.5.2

Published by deepnight 10 months ago

1.5.2

  • Fixed a bug with auto-layers on level edges.
  • Fixed a crash when loading pre-1.0 LDtk projects.
  • Fixed neighbour tiles sticking around.
ldtk - 1.5.1

Published by deepnight 10 months ago

1.5.1

  • Fixed visual feedback when painting tiles in a Tile layer with "Asynchronous render" enabled.
  • Fixed a crash when creating a new World.
  • Updated macOS icons.
  • Fixed "Kill Tiles" layer option to work as intended with IntGrid layers.
  • Fixed a minor visual bug with neighbour levels rendering.
  • Fixed support for layer opacity settings in neighbour levels rendering.
  • Fixed a render bug when resizing levels.
  • Fixed WorldDepth value in automatic level names pattern.
  • Various minor optimizations.
  • Various UI fixes.
ldtk - 1.5.0

Published by deepnight 10 months ago

1.5.0 -- New LDtk logo

LDtk logo

The application has a new logo! Hope you will like it :)

Please note that the Windows Explorer could take some time before updating the app related icons (in Start Menu, project icons etc.). You may need to either restart the Explorer, or the computer itself, to force the visual update.

Global search

You can now search for any project element using the CTRL-F keyboard shortcut (CMD-F on MacOS). The results include:

  • definitions (layers, entities, enums or tilesets),
  • worlds,
  • levels,
  • entity instances.

Optionaly, you may also enable the searchable option on supported entity Custom Fields, to filter your entities based on these fields (eg. if you look for a specific item instance or mob type).

Rules are 20x faster

This version includes lots of internal optimizations regarding auto-layer rules. Therefore, large projects loading time should be significantly faster, especially if your project contained large levels.

Realtime painting on Auto-layers should also be much faster in most scenarios, thanks to these changes.

A new layer option called "Asynchronous render" can be used to delay the actual rendering of tiles by a few milliseconds after painting. This can be used in very complex or large levels to keep the painting action smooth.

Biomes

This update brings various features that should make rule-based biomes creation easier!

  1. Create an Enum with your various biomes (eg. Forest, Desert, Snow etc)
  2. Add a custom Level Field that uses this enum.
  3. Open the Layers panel, and point your new level field under "Biome Enum".
  4. For each group of rules, you may now pick which Enum value should enable this group. For example, you may enable your group that paints snow over your platforms only if the Snow biome is picked for this level.

Random rectangles of tiles for auto-layer rules

When creating an auto-layer rule, you may now render a rectangle of tiles picked randomly among a group of many others. For example, this makes possible the creation of random variations among trees, or other large details.

Custom layers list

You can group your layers using tags, and filter your main layers list using these tags.

Rendering of tiles from nearby levels

There is a new app setting to render tiles from nearby levels, making map transitions much easier to paint!

JSON: extra Table-of-content data

When enabling the "table-of-content" export option of an Entity, you will now get extra bits of informations in the toc JSON field:

  • world pixel coordinates,
  • pixel width and height,
  • for each custom fields, if the new "Export to ToC" option is enabled, the corresponding value will also be added to the table of content.

Other changes

  • Auto-layer rule size is now automatic, internally ranging from 1x1 up to 9x9. LDtk will optimize rules to smaller internal sizes based on your rule layout.
  • When editing a tag somewhere, LDtk will now offer to also rename all other tags accordingly.
  • Optimized the Rules panel rendering for projects with tons of rules.
  • FilePath custom fields will now remember their last open folder for later uses.
  • Added a button to toggle Auto-layer rendering (equivalent of the existingSHIFT-R shortcut)
  • Added expand/collapse sections to the Layers panel.
  • Moved the "Project" button location before "World" and "Level" buttons in editor.
  • Fixed entity preview size in left panel
  • Fixed IntGrid icons size when the left panel uses the 5-columns mode
  • Rules remapping now also updates out-of-bounds policy value
  • Allowed break-on-match on rules with transparency or offsets
  • Fixed unsupported "Empty cell" value in rules out-of-bounds policy
  • Fixed a crash when deleting an Enum used in level custom fields.
  • Fixed a crash in Selects when trying to go over the last element using a keyboard shortcut.
  • Fixed log path partially cut in the Settings window.
  • Fixed initial null in JSON defaultEntityWidth/Height values.
  • Labels are now right aligned in UI forms
  • Removed __worldX and __worldY from entity JSONs when the world layout is not GridVania or Free.
ldtk - 1.4.1

Published by deepnight about 1 year ago

1.4.1

  • Fixed a crash with Entities rendered as ellipses
  • Fixed tiles painting ignoring the "Mirror X/Y" setting when using rectangle painting and flood filling
  • Fixed the "Enable/disable rule" button
  • Fixed typo in "Entities" sample map
  • Fixed the "New update" banner depth in changelog
  • Updated app splash screen
ldtk - 1.4.0

Published by deepnight about 1 year ago

1.4.0 -- Int-Grid groups

Int-Grid groups

You can now create custom groups for your Int Grid values, allowing much more advanced rules based on these groups.

For example, you may render "vegetation" tiles only over values from a "Solid Walls" group, and not over values from a "Water" group.

Zen mode

The old (and confusing) "Compact mode" has been replaced by a new "Zen mode".

Simply hit TAB to toggle it.

In zen mode, the left interface automatically disappears to leave much more editing space. You can briefly show the interface again by moving your mouse cursor to the window left edge.

Grid view in tool palettes

Entity and Int Grid tool palettes can now be displayed in grid modes, for a much more compact experience.

Quality of life

LDtk is all about being enjoyable to use, so this update includes many quality-of-life oriented changes:

  • You can now assign individual icons and colors to groups of Auto-layer rules.
  • Entity previews in the UI panels were reworked to look nicer and less pixelated.
  • Increased the max number of columns in Select components (up to 10 columns!)
  • Added a gray background behind transparent rule tiles

Other changes

  • Fixed out-of-screen color picker window
  • Fixed backslashes in custom project commands that broke the JSON file parsing
  • Added more integrated icons: check marks, circles, buttons, cogs, etc.
  • Reworked start screen design
  • Changed CMD-H shortcut on macOs to SHIFT-H
  • Updated some sample maps
  • Many bug fixes

JSON format changes

  • The __neighbours array in levels JSON now includes overlapping levels (either in the same world layer, or in nearby world layers).
  • Deprecated values tileId and __tileSrcRect were removed from Enum value definitions
ldtk - 1.3.4

Published by deepnight about 1 year ago

  • You can now use the mouse MIDDLE button to reset any custom field input to its default value.
  • Added customizable entity fields colors (each entity field can have its own custom color)
  • Added a new app setting to adjust the "single-layer mode" intensity.
  • Added customizable default entity width/height (in Project settings)
  • LDtk will now properly finish its "long tasks" while the app is minimized (eg. loading, saving, updating auto-layer rules etc.)
  • Entity min width and min height now default to width and height respectively.
  • Better color display for level names in world view
  • Better default display in the new Select modal
  • Fixed newly created custom fields that have a display scale of 0%
  • Fixed empty list of values in Rule Editor window, in pure auto-layers
  • Fixed rules randomization of flipped tiles
  • Fixed the preview of tiles generated by a given rule
  • Added entities worldX/Y pixel coordinates to JSON
ldtk - 1.3.3

Published by deepnight over 1 year ago

1.3.3

  • Added custom UI icons for IntGrid layer values.
  • Added custom min/max size limits to entities when then are resizables.
  • If you change the "grid size" of a Layer or a Tileset, LDtk will now try to remap all existing data to this new grid size (if that's possible).
  • Added an option to allow/disallow tiles stacking in the Rules Assistant window.
  • Added multi-columns view to auto-layer rule editor.
  • When using the "Single layer mode", the others layers are now faded away a bit more.
  • Hiding details (CTRL-H) now also hides the grid
  • Added quick search for IntGrid palettes in the left sidebar.
  • Fixed visibility icon in layer list when hiding details
  • Fixed various minor bugs in the new tool options from the left panel.
  • Renaming a project will now also rename sibling .meta files (Unity) accordingly.
  • Fixed message dialog size
  • Updated old sample maps
ldtk - 1.3.2

Published by deepnight over 1 year ago

1.3.2

  • Fixed invisible auto-layer tiles when loading pre-1.3.1 projects
  • Removed tiny debug message (oops)
ldtk - 1.3.1

Published by deepnight over 1 year ago

1.3.1

  • Added customizable UI color of layers
  • Added custom alpha per auto-layer rule: this alpha will affect the opacity of the resulting tile.
  • Added an option to fit current tileset in the editor side bar.
  • New "top-down" example map
  • Re-organized all buttons near the tileset in the editor side bar.
  • Added sliders to all inputs in the rule Modulo window
  • Added sliders to inputs in the rule Perlin window
  • Added an option to disable the "grayed out" effect on the LDtk window when it is not focused.
  • Re-organized auto-layer rules options
  • Moved Checker mode from auto-layer rules to the Modulo window
  • Fixed a display bug with Float custom fields
  • Added "duplicate group" action to rule groups context menu
  • Fixed popped-out tile palette not closing quickly enough
  • Fixed missing intGrid values in mass out-of-bounds policy editor
ldtk - 1.3.0

Published by deepnight over 1 year ago

1.3.0 -- Multi-worlds preview

Experimental Multi-worlds support!

The new multi-worlds feature is now available as a preview.

Multi-worlds allow you to have multiple distinct worlds in the same LDtk project.

Each world can have its own set of levels using a specific layout. However, they all share the same definitions (layers, entities, enums etc).

IMPORTANT: to use this feature in your projects, you will need to make sure that your importer is up-to-date and fully supports it. Multi-worlds projects cannot be imported using older loaders.

To enable this experimental support, open your Project settings (P shortcut), scroll down to the advanced options and enable Multi-worlds there. PLEASE BACKUP YOUR PROJECTS BEFORE TRYING IT!

When enabled, various new buttons will be available in the UI, like in the World panel (W shortcut).

Rule tiles X and Y offsets

You can now offset the resulting tile(s) of any rules, either using fixed X/Y values, or using random ranges for more variety.
This will make much easier creation of organic elements like vegetation, dirt etc.

Better drop-down UI component

The new DropDown UI component supports:

  • Quick searching
  • List or Grid view
  • Icons
  • Colors

Customizable backup directory

You can now customize the location of your backups.

Please note that, to restore a backup, you should use LDtk and not copy files by yourself manually from your File Explorer / Finder.

Collapsable tags

Tags are not behaving like "folders" and can now be open/closed accordingly in UI.

Lists quick search

You can quick search most lists from the interface:

  • recent files on the Home screen,
  • entities, enums, layers, etc.

Customizable recent files colors

You can now customize colors for all your recent projects on your Home screen.

Better compact mode

Just press TAB to switch between normal and compact UI modes. The reworked compact mode is now even more... well.. compact.

Other changes

  • Added "Repeat" option for level background images (thanks to Lojemiru pull request)
  • Added "Display scale" option to all custom fields
  • Added support for CastleDB icons import.
  • Enum tiles can now be any rectangle from the tileset.
  • Added quick search to Home
  • Added colors to entities in the list from the Entity panel
  • If you have a "Tile" custom field in your level, you may now use it as a replacement for the rendering of the level in the world view.
  • Added "Specific entity type" constraint for Entity References
  • Added a context menu to layers list in the main panel
  • Added a context menu on all custom fields to edit their definition
  • Added "colored flags" icons to the embedded atlas
  • Better pivot editor design
  • Sections of the World panel can now be collapsed (world settings, current level properties and level custom fields).
  • Fixed the size of Reset buttons in custom field forms
  • Fixed entity render update when zooming in/out
  • Fixed the "World IID" values that changed randomly in the JSON, if the project isn't in Multi-Worlds mode.
  • Fixed a crash when switching to world mode during a rule edit
  • Fixed a very old rules bug that prevented Symetric rules to not re-apply in the same grid cell, if it applied there previously.
  • Fixed a crash when opening wizard on an improperly defined auto-layer
  • Fixed crash when moving a deleted tile
ldtk - 1.2.5

Published by deepnight almost 2 years ago

1.2.5

  • Added custom user documentation for Entities and Layers
  • Entity width and height no longer work as minimal values for resizable entities
  • Updated mouse cursor for entity resizing handles
  • Removed some useless tooltips in Rules panel
  • Fixed a crash when adding a value to an array of Int in an Entity
  • Fixed escaping of user docs strings in JSON
  • Fixed a crash with specific level background images
  • Fixed isolated "collapser" in Entity panel
  • Removed the help block at the top of all panels to make more room for content.
ldtk - 1.2.4

Published by deepnight almost 2 years ago

1.2.4

  • Added a new Table of content to the JSON, which lists all instances of any given entity.
    For example, this is especially useful if you want to have a quick access to the location of all PlayerStart entities in your game without parsing all your levels manually.
    To enable it, just check the "Add to table of content" option of an Entity definition.
  • Fixed lags in world view when using the fields render mode "Outlined text".
  • Fixed A key when using WASD navigation.
  • Fixed opacity inputs (icon, border and fill) in Entity panel.
  • Fixed incorrect main value when editing an existing group using Rules Assistant
  • Fixed an error with Haxe API when a tileset is not defined in layer definition.
  • Fixed the auto-layer assitant resize as you pan.
ldtk - 1.2.3

Published by deepnight almost 2 years ago

1.2.3

  • Entity definition properties can now be collapsed to give more room to the custom fields.
  • Fixed "FixedArray limit reached" crash
  • Fixed the wrong error message when duplicating an entity (ie. "You cannot have more than 0 Entity")
  • Added a big warning when creating a new project right in the app dir (any user files in the app dir are lost during updates)
  • Better warning when saving an existing project in the app dir.
  • Changed the way automatic colors are picked for new enum values, entities, intGrid values etc.
ldtk - 1.2.2

Published by deepnight almost 2 years ago

1.2.2

  • Added an option to use the old-school "opaque tables" visuals for Entity fields (see in the application settings, F12 shortcut)
  • You can now pick an "outer" IntGrid value in the rules assistant. This allows to use the assistant to create transitions tiles between 2 specific IntGrid values (eg. grass/dirt)
  • Re-designed the JSON online documentation to be way easier to use.
  • Updated the application settings window
  • Fixed A keyboard shortcut for non-WASD keyboards
  • Fixed external links in Release Notes window
  • The color of IntGrid values in the Rules Assistant are now shown in the pattern palette, in the lower-left corner of the window.
  • macOS builds are now "universal" like the Windows ones. This means that the official macOS release should now install properly on both Intel and Apple Silicon architectures. The downside is that the installer is now larger than before.
ldtk - 1.2.1

Published by deepnight almost 2 years ago

1.2.1

  • Fixed entity arrows not pointing at their target properly, if the source entity was resizable.
  • Better display of hotfixes vs major updates in the Release Notes window
  • Fixed position of the window listing all LDtk versions
  • Fixed macOS build
ldtk - 1.2.0

Published by deepnight almost 2 years ago

1.2.0 -- Auto-layer rules assistant

Auto-layer rules assistant

The new Assistant makes the creation of standard auto-tiles rules super easy!

Fill the layouts on the left using your own tiles and LDtk will create all the rules accordingly. By default, if you don't have all the orientations drawn, the assistant will automatically just use symmetrical rules to fill the gaps.

And if you forget something or want to make a change, you can simply edit the layout again to update the rules automatically.

WASD controls

You can now navigate through your current tool values using WASD keys.

  • In IntGrid layers, this will cycle through values,
  • In Entity layers, W/S will cycle through values, while A/D will quickly jump between tags
  • In Tiles layers, this will navigate in the current tileset. The selection will automatically use any previously "saved selection" to smartly navigate through your predefined group of tiles.

Because of this change, the following keyboard shortcuts were modified:

  • Switch to World mode: SHIFT+W or ~ (previously W)
  • Toggle single layer mode: SHIFT+A (previously A)
  • Save current tile selection: SHIFT+S (previously S)
  • Flip horizontaly currently selected tiles: X (previously X or Z)

Entity fields visuals

The visuals of entity fields have been reworked again to increase clarity and reduce cluttering.
However, keep in mind it's always better to not display everything. The less, the better ;)

Arrows

You can now customize the design of arrows used in Point or Entity Reference fields.

Auto-layer rules remapping

TLDR; This new tool makes the creation of variations of Auto-layer rules very fast.

For example, if you've created a bunch of rules that use the IntGrid value 1 to paint "Stone walls" tiles, you may duplicate and remap them to use IntGrid value 2 and, say, "Metal walls" tiles.

Right click on a group of rules in an Auto-layer to Duplicate and remap it.
This new tool allows you to make a copy of these rules, while doing the following operations:

  • replace IntGrid values they refer with another ones,
  • transpose the tiles they produce to another part of the tileset.

Icons

New useful icons were added to the embed icons atlas, like keys, locks, and various shapes to be used with the 9-slices scaling feature of entities.

Enum tags display

A new option allows to visualize "Enum tags" attached to tiles in the Editor context (thanks to Keith Clark). Just press the new "Show/Hide enums" button near the Layers list.

In the following example, all tiles were tagged with a Material enum (stone, grass, metal etc.) and the result can be displayed right in the editor context.

Custom commands

You can now define custom commands to be executed at various moments (when the project is loaded, saved etc.). These commands can be used for whatever your own production pipeline requires. Here are some typical examples:

  • After saving, run a script that parses the JSON and extract all the texts for future localization.
  • When pressing CTRL-R, run your game.
  • After saving, parse the project JSON and check if all levels are properly connected, from your game logic perspective.

For obvious security reasons, LDtk will always ask you first if you trust the project and want to allow commands from it.

Misc

  • You can add user-defined documentation to any entity or level field.
  • You can right click on a group of rules to modify the "out-of-bounds policy" of all its rules in a single batch.
  • Added nicer default colors for various elements (eg. int grid values, entities, enum values etc.). The palette is "Endesga32" by Endesga (https://lospec.com/palette-list/endesga-32)
  • Added a Color blind option in app settings: for now, this will only affect the colors automatically picked for new Entities, IntGrid values, Enums etc.)
  • Hold SHIFT to disable snapping when moving levels around in the world view.
  • You can now manually enter custom values for Entity pivots.
  • Many Load button in the UI will now remember properly their last folder
  • Added extra info to the Simplified Export JSON file (level custom fields, identifiers etc).
  • Added a new layer option to prevent selections when the layer is not active.
  • Fixed entity duplication that broke entity count limits.
  • Many UI fixes (thanks to IrishBruse) to remove unnecessary borders and align things.
  • Added a "reset" button near any entity/level field that isn't using its default value.
  • Fixed duplicate identifiers when inserting a level in Horizontal/Vertical layouts
  • Fixed a crash when duplicating a point from an Entity.
  • Duplicating a selection containing Entities no longer ignores the limit counts defined for these entities.
  • Added support for proper Point duplication for entities that have an Array of Points field.
  • Fixed default multilines values that dropped newline characters.
  • Fixed the default tile of an entity when one of its fields is a Tile, but it is not set to override the entity tile itself.
  • Fixed the Rule editor window when the layer has no IntGrid value.
  • Fixed embed icons reloading when the image was resized.
  • Fixed useless scrollbar in context menus.
  • Fixed Haxe enum importer regex.
  • Fixed levels BgColor in JSON not updating when changing project default
  • Updated the design of the home.

JSON changes

The following fields deprecated in update 1.0.0 were removed from the JSON in 1.2.0:

  • Removed LayerDef.autoTilesetDefUid (use tilesetDefUid instead).
  • Removed EntityDef.tileId (use tileRect instead).
  • Removed NeighbourLevel.levelUid (use levelIid instead).

Haxe API

  • Added definition JSON access to Layers and Entities
  • Removed irrelevant entity arrays in layers that have "required tags" or "forbidden tags".
  • Fixed an exception with null defs.
  • Added pxWid/pxHei to layers
ldtk - 1.1.3

Published by deepnight over 2 years ago

  • Fixed a crash on Home screen for macOS
  • Fixed path to samples on macOS
ldtk - 1.1.2

Published by deepnight over 2 years ago

1.1.2

Import enums from JSON and text files

You may now import project Enums directly from an external file (previously, only Haxe and CastleDB). This enum will be updated as you edit the file and LDtk will take care of value losses or renamings.

The following formats are now accepted :

  • JSON: expected format is
    {
      "MyEnum1" : "a,b,c",
      "MyEnum2" : "a b c",
      "MyEnum3" : [ "a", "b", "c" ]
    }
    
  • Text file: one enum per line. Each line should use one of these formats:
    • MyEnum : valueA, valueB, valueB
    • MyEnum : valueA valueB valueB
    • MyEnum : valueA ; valueB ; valueB

Better imported enums

The sync window for External Enums was completely reworked:

  • better UI,
  • added support for enums and values renaming.

You can now also import and sync Enums from a Castle DB file (http://castledb.org).

Samples list

For new LDtk users, the samples are now much more visible in the default UI. Feel free to hide them by clicking on the [x] button.

Other changes

  • Fixed a crash when pressing Delete key while having no active selection.
  • Fixed a crash when duplicating a level containing Entity references.
  • Fixed incorrect entity ref description in Entity instance panel.
ldtk - 1.1.1

Published by deepnight over 2 years ago

  • Super Simple Export now also creates one CSV file per IntGrid layer.
  • You can right click on a folder on the Home screen to create a new project there.
  • Fixed IID's values and Entity references when duplicating a level.
  • Fixed unexpected fill color for "hollow" Entities that use a Tile as a texture.
Package Rankings
Top 17.19% on Npmjs.org
Badges
Extracted from project README
GitHub Repo stars GitHub All Releases GitHub Workflow Status GitHub Workflow Status
Related Projects