Giter Club home page Giter Club logo

ldtk's Introduction

Level Designer Toolkit (LDtk) is a modern, efficient and open-source 2D level editor with a strong focus on user-friendliness.

Links: Official website | Haxe API (on GitHub)

GitHub Repo stars GitHub All Releases GitHub Workflow Status GitHub Workflow Status

Getting LDtk latest version

Visit LDtk.io to get latest version.

Building from source

Requirements

  • Haxe compiler: you need an up-to-date and working Haxe install to build LDtk.
  • NPM: this package manager is used for various install and packaging scripts. It is packaged with NodeJS.

Installing required stuff

  • Open a command line in the ldtk root dir,
  • Install required Haxe libs:
haxe setup.hxml
  • Install Electron locally and other dependencies through NPM (IMPORTANT: you need to be in the app dir):
cd app
npm i

Compiling master branch

First, from the root of the repo, build the electron Main:

haxe main.debug.hxml

This should create a app/assets/main.js file.

Then, build the electron Renderer:

haxe renderer.debug.hxml

This should create app/assets/js/renderer.js.

Compiling another branch

If you want to try a future version of LDtk, you can checkout branches named dev-x.y.z where x.y.z is version number.

IMPORTANT:

  • these dev branches might be unstables, or even broken. Therefore, it's not recommended to use, unless you plan to add or fix something on LDtk.
  • because dev branches might change quickly, you will need to update haxelibs often.
  • you will need to switch the LDtk haxe API to the same branch as LDtk repo. (adapt the branch name below accordingly):
haxelib git ldtk-haxe-api https://github.com/deepnight/ldtk-haxe-api.git dev-0.6.0

Running

From a command line in the app folder, run:

npm run start

Contributing

You can read the general Pull Request guidelines here: https://github.com/deepnight/ldtk/wiki#pull-request-guidelines

Related tools & licences

ldtk's People

Contributors

adtennant avatar chatpion avatar connorbp avatar deepnight avatar hnhhzy avatar irishbruse avatar johanhelsing avatar keithclark avatar lojemiru avatar lumpn avatar marcus-robinson avatar midyh avatar miepee avatar nyalloc avatar qkdreyer avatar sangohan avatar shalokshalom avatar sheepolution avatar sookhaal avatar timkurvers avatar tommalitz avatar vcsocial avatar yanrishatum avatar zicklag avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ldtk's Issues

Performances & optimizations

  • Faster layer rendering using TileGroups
  • More selective invalidate/re-render for LevelRender
  • Better HTML cursor rendering in Tileset picker
  • Better rules re-evaluation
  • CPU/GPU usage (#331)

RC1 tasks

Bugs

  • Fix GMTK bugs (see #4 )
  • Move grid spacing to RC2 (remove it from current editor)

Missing features

  • Haxe client API (see #7 )
  • Quick save using last filename
  • Implement Tileset deletion
  • Implement Entities sorting
  • Implement Levels sorting
  • Implement Level deletion
  • Level resizing
  • Entity "Enum" values (see #5 )
  • Project "save as"

Enhancements

  • Add Pivot coord for Tiles when layer grid differs from Tileset grid
  • Add a special "one-last-chance" Undo for critical changes (level deletion, layer deletion etc.)

File format

  • Replace Enum serialization with more human-readable values
  • Avoid duplicate identifiers (see #9 )

Packaging & distrib

  • Decide between electron & NWJS
  • Package a redist

Keyboard issues

  • Alt not releasing on alt-tab / window focus lost
  • Ctrl-Alt click stuck in free mode when starting on no element

Choose framework

Electron

  • ~Easier to package
  • Quite heavy
  • Popular

NWJS

  • Heavy (~230Mo)
  • Easy to setup

Neutralino

  • Super lightweight
  • Experimental
  • not NodeJS

Haxe client API

  • Build a runtime typed structure using macros
  • Added API methods comments
  • Write README
  • Link imported HX enums to their corresponding code enums?
  • Better tileset reloading (see #6 )
  • Add tileset methods

Automatic rule-based tile layer

  • Pattern editor
  • Support multiple random tiles for 1 rule
  • Seed random
  • Support symmetry
  • Optimize using bit masks?
  • Optional rule break
  • Pattern folders/groups
  • Move rule matching to a pure-data storage
  • Update auto-layer to use pre-cached data
  • Export data in JSON for easier parsing

Documentation

  • API comments
  • README
  • Screenshots
  • Animated GIFs
    • VScode completion
  • Better doc table-of-content (keep on all pages)

Add Save Changes feature on file close attempts

Closing a file that has not been saved already gives you a prompt to ignore map changes or to cancel the close attempt. It seems strange to me that direct Save functionality is not in this prompt as well.

Parallax layers

  • Add a custom parallax factor to layer settings
  • Display layers in editor using parallax factor
  • Edit layers using actual parallax factors

World editor

  • Add X,Y coords to levels
  • Generate a level preview
  • Display levels in a world view

Source-control & multi-users issues

  • the nextUid in Project is a central conflict point
  • rework all UIDs to only work locally (ie. UID is no longer globally unique, but locally unique)
  • move definitions to external files ?
  • remove levels array from the main project JSON completely ?
  • move each level to an individual file (all stored in a fixed directory structure)

Level custom fields

Allow creation & editing of custom property values for Levels, in the same way as Entity fields.

  • cleanup & separate field def form
  • add level fieldDefs to project
  • add fieldInstances to levels
  • add level field instance form
  • display them in world view

Fill area

  • Shift+click to fill a tile layer area
  • Shift+click to fill an intGrid layer area

GMTK jam issues

BUGS

  • Fix alt+click shortcuts not working properly sometimes (steps to reproduce: CTRL-ALT-drag outside of an Entity)
  • Entities disappearing
  • Background not updating
  • Viewport improperly positionned after resizing window or using Compact mode
  • Fix zoom attach point coords when using mousewheel on viewport

EXTRA FEATURES

  • Add global enums
  • Better level selection window (move level settings form to another panel)
  • Tileset reloading
  • Add Entity field "over" position
  • Entity icons
  • Better indicator of the current active layer (fade others)

Tileset reloading

Design decisions

  • avoid integrating image data inside the project file?

Todo

  • auto reload when image changes while app is running
  • auto reload when image changes while app is closed
  • remap tile IDs if image width changes
  • add a manual reload button?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.