GDevelop
GDevelop copied to clipboard
[$300 Bounty] - Integrate/Bundle Level Designer Toolkit (LDtk) into GDevelop as a Tilemap editor
Description
This post is to allow for a bounty to be opened/reopened on the effort discussed here: https://github.com/4ian/GDevelop/issues/2002 https://github.com/4ian/GDevelop/discussions/2352 https://github.com/deepnight/ldtk/issues/126
LDtk is a modern Tilemap editor and world builder made by deepknight, one of the developers behind Dead Cells.
It is a lightweight HTML5 based Tilemap editor, with numerous advanced features such as Automapping, advanced entity support for logic/objects/etc, and embedding the tilesheet into the final tilemap file.

The main site is here: https://ldtk.io The github repo is here: https://github.com/deepnight/ldtk
Solution suggested
Based off the above discussion, the goal would be for this integration to include the following:
- Wrapping LDtk as a react component for GDevelop and adding the react component as a new tab in GDevelop 5.
- If too complex, consider running LDtk as a separate dialog (like Piskel)
- Allow for two-way communication between GD5 and LDtk, or at least for edits to existing tilemaps in LDtk to update tilemap objects in GD5 (may already be covered by the below PR)
Alternatives considered
- LDtk tilemap support in the tilemap object was an original alternative suggested for the first issue on this. This has been implemented in https://github.com/4ian/GDevelop/pull/2828 , and helps with a lot of the logical items. The need for a bundled or integrated solution is still there.
- Building out a custom GDevelop tilemap editor is another option, but that seems to replicate work done elsewhere, and means that a lot of the development would have to be helmed by the GDevelop contributors long term, whereas the majority of functional and logical needs behind tilemaps are already covered by LDtk.
I am pinging @4ian and @blurymind to review the above and explicitly the bullets in the solution suggested. Once everyone agrees, I'll work to get the new bounty opened and the old funds moved. (This will not impact anything with the current bounty on #2828)
I've added "If too complex, consider running LDtk as a separate dialog (like Piskel)" to the potential solution. This is a quite open ended issue and if someone wants to tackle this, I'll be interested in a solution that is both simple to maintain (easy to upgrade LDtk without changes, clear interface) and has a good UX (we're not supporting everything that LDtk allows in our Tilemap object -> should this be disabled in LDtk interface?).
I've started the claim process to reclaim the funds. Unfortunately since I'm one of the bounty funders, it will not allow me to approve it. It'll have to wait for 9/18 before I can reclaim them, and I'll move it over to resolv at that point.
I can do it easily as an external editor, but will first need to get the parsing merged in the other pr.
I think the bundling part of the job is actually pretty straightforward. It shouldn't take me longer than a day.
On Sun, 5 Sep 2021, 06:42 Silver-Streak, @.***> wrote:
I've started the claim process to reclaim the funds. Unfortunately since I'm one of the bounty funders, it will not allow me to approve it. It'll have to wait for 9/18 before I can reclaim them, and I'll move it over to resolv at that point.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/4ian/GDevelop/issues/2991#issuecomment-913080274, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRWVLILCXHRFUMROOQQE3UALRJLANCNFSM5C7ZBISQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
@blurymind What would be the likelihood of going for the full integration rather than bundling?
Unless I'm misunderstanding, including it as an external editor would make it harder to utilize entities/reflect changes as they happen, right?
Edit: (Also welcome back from your trip, I think?)
Well it would be harder to add it as a component, but will also mean the editor will work in gdevelops web version.
As far as bundling it as an external one - it will be similar to piskel if you want me to do it that way. We have to remember that ldtk itself is not designed to work as a web app and its natural wrapper is electron - so going the external editor route would probably be a safer bet. Basically you would only be able to have one instanceof it open and it will be modal - so while you use it, you cant use other parts of gdevelop. When done, you apply your changes and they get written to files
On Mon, Sep 6, 2021 at 9:10 AM Silver-Streak @.***> wrote:
@blurymind https://github.com/blurymind What would be the likelihood of going for the full integration rather than bundling?
Unless I'm misunderstanding, including it as an external editor would make it harder to utilize entities/reflect changes as they happen, right?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/4ian/GDevelop/issues/2991#issuecomment-913440990, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRWVKUEVUKPNZTUP3QYUTUARZQPANCNFSM5C7ZBISQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Do you think that bundling would limit/restrict our ability to utilize entities/enums from LDtk vs integrating?
Not necessarily. I see that more as another problem. Entities and enums are still a part of the tilemap object, which you are only editing in the bundled ldtk editor. How that data is utilised by gdevelop can depend on what you have done with it in the event sheet. Remember that gdevelop can have methods of reading from it to create game objects, etc when the game runs.
On Mon, 6 Sep 2021, 20:09 Silver-Streak, @.***> wrote:
Do you think that bundling would limit/restrict our ability to utilize entities/enums from LDtk vs integrating?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/4ian/GDevelop/issues/2991#issuecomment-913776677, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRWVI2IQ7ONDOA3NGCEFTUATYTNANCNFSM5C7ZBISQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
I would really like to see Entity and Enum data be available as part of this bounty, or at least Entity. Does that seem viable?
If so then I think that path forward seems great.
Edit: if not that's also fine, I just want to check viability or if I need to open up another item. 😆
I can try to add setters/ getters to do it in the current ldtk parser pr
On Mon, 6 Sep 2021, 22:58 Silver-Streak, @.***> wrote:
I would really like to see Entity and Enum data be available as part of this bounty, or at least Entity. Does that seem viable?
If so then I think that path forward seems great.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/4ian/GDevelop/issues/2991#issuecomment-913831471, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRWVLF4NQAS3UQW4KDNITUAUMNRANCNFSM5C7ZBISQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Fantastic. If nothing else that sets up possibilities for conditions/actions/expressions/etc to be put in place for them.
I'm still awaiting Bountysource support to finalize the funds/the timeout to occur so I can move the bounty to this issue properly. I'll update here with the total and new link once the bounty is live.
Silver-Streak has contributed $200.00 to this issue on Rysolv.
The total bounty is now $200.00. Solve this issue on Rysolv to earn this bounty.
The bountysource funds have finally been processed. I've opened the bounty on Rysolv (nice to see it fully integrate with Github and update when funds have been applied.)
Silver-Streak has contributed $25.00 to this issue on Rysolv.
The total bounty is now $225.00. Solve this issue on Rysolv to earn this bounty.
This has neared another birthday, and people are asking about this again on discord and the forums.
I've bumped up the bounty on this and the ldtk file support to hopeful renew drive/interest.
@Silver-Streak Sorry for the intrusion. but.. Why is this integration taking so long? Something related to the tool or to GDevelop? Can you answer me? If it's with the tool, why not use Tiled? This is really taking too long, as you said yourself "it's having another birthday", and we don't even have anything experimental!
Basically: we're lacking people to work on this. This needs work, and we don't have enough time. D8H from the team has been working on improving tilemaps with support for collisions set in Tiled, this will pave the way for native support of the LDTK format.
Any new updates ?
No one has approached the project (Or the bounty) for taking on this bounty to bundle the editor. LDTK map support has been fully implemented so you can use it's maps directly without having to go LDTK > Tiled > GDevelop, though.
@daiyam This bounty is over on Rysolv instead of bountysource, so I didn't know if you had seen it or not. With the maps themselves now supported, I wanted to at least draw your attention to it if you had any interest.
I will take a look
I will do it this week :wink:
Just checking back on this @daiyam, did you get a chance to take a look?
@Silver-Streak Ya a bit, but I didn't had much time since some urgent stuff came. I should be able to re-try soon. But I will try a Piskel-like integration.
OK, I was able to spent some time on this. First of all, LDtk is heavily integrated with Electron (which is normal). While, I could make it works in the electron-app, I don't think it possible for the web-app. Is that ok?
Probably a question for @4ian as I know the main dev team are the ones that have had to do all of the bundled app conversions
Another possibility would be to isolate/rewrite the main editor of LDtk but that would ask lot of works. Not sure if it worths it.
I definitely think we would want to avoid that. I believe The hope would be to have it as close to the original as possible so that version upgrades are as seamless as possible.
I will try to polyfill all the required functions (from nodejs or electron) and see it's doable.
still open? i'll do
Hey @FlokiTV
I believe @daiyam is working on this currently. daiyam, if you run into things that make you think you won't be able to proceed, definitely let us know so Floki can take a crack at it.