GDevelop icon indicating copy to clipboard operation
GDevelop copied to clipboard

[$300 Bounty] - Integrate/Bundle Level Designer Toolkit (LDtk) into GDevelop as a Tilemap editor

Open Silver-Streak opened this issue 4 years ago • 43 comments

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.

94418415-4aa61100-0179-11eb-9aee-0451fe67b296

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)

Silver-Streak avatar Aug 29 '21 03:08 Silver-Streak

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?).

4ian avatar Sep 04 '21 17:09 4ian

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.

Silver-Streak avatar Sep 05 '21 03:09 Silver-Streak

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 avatar Sep 06 '21 07:09 blurymind

@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?)

Silver-Streak avatar Sep 06 '21 08:09 Silver-Streak

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.

blurymind avatar Sep 06 '21 16:09 blurymind

Do you think that bundling would limit/restrict our ability to utilize entities/enums from LDtk vs integrating?

Silver-Streak avatar Sep 06 '21 17:09 Silver-Streak

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.

blurymind avatar Sep 06 '21 18:09 blurymind

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. 😆

Silver-Streak avatar Sep 06 '21 19:09 Silver-Streak

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.

blurymind avatar Sep 07 '21 06:09 blurymind

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 avatar Sep 07 '21 15:09 Silver-Streak

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.

rysolv-bot avatar Oct 01 '21 13:10 rysolv-bot

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 avatar Oct 01 '21 13:10 Silver-Streak

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.

rysolv-bot avatar Jun 23 '22 08:06 rysolv-bot

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 avatar Jun 23 '22 08:06 Silver-Streak

@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!

willianholtz avatar Jul 05 '22 12:07 willianholtz

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.

4ian avatar Jul 05 '22 13:07 4ian

Any new updates ?

Mix3rn avatar Jan 24 '23 18:01 Mix3rn

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.

Silver-Streak avatar Jan 24 '23 23:01 Silver-Streak

@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.

Silver-Streak avatar Feb 15 '23 00:02 Silver-Streak

I will take a look

daiyam avatar Feb 15 '23 08:02 daiyam

I will do it this week :wink:

daiyam avatar Mar 20 '23 11:03 daiyam

Just checking back on this @daiyam, did you get a chance to take a look?

Silver-Streak avatar Mar 29 '23 03:03 Silver-Streak

@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.

daiyam avatar Mar 29 '23 08:03 daiyam

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?

daiyam avatar Apr 06 '23 19:04 daiyam

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

Silver-Streak avatar Apr 06 '23 20:04 Silver-Streak

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.

daiyam avatar Apr 06 '23 20:04 daiyam

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.

Silver-Streak avatar Apr 06 '23 20:04 Silver-Streak

I will try to polyfill all the required functions (from nodejs or electron) and see it's doable.

daiyam avatar Apr 06 '23 21:04 daiyam

still open? i'll do

FlokiTV avatar Apr 08 '23 13:04 FlokiTV

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.

Silver-Streak avatar Apr 08 '23 16:04 Silver-Streak