axmolengine / axmol

Axmol Engine – A Multi-platform Engine for Desktop, XBOX (UWP) and Mobile games. (A fork of Cocos2d-x-4.0)
https://axmol.dev
MIT License
905 stars 198 forks source link

Help Wanted with PR #1142 add support for multi-tileset layers #1143

Open DelinWorks opened 1 year ago

DelinWorks commented 1 year ago

Refer to #1142

Summary: I'm trying to implement multi-tileset layers and for some reason I had this weird bug that I spent 3 days on but to no avail.

My implementation is simple. First, I extracted every field that can belong to one or more layers and made a FastTMXSubLayer struct that has those fields, second I made in array inside of FastTMXLayer and that array holds FastTMXSubLayers as much as the layer has tilesets used, pretty simple so far. this worked right off the bat! but with some tilemaps weirdly enough I get this bug mentioned in #1142 seems like the _tiles static array needs to be copied too for each subLayer but that doesn't seem logical because it's not getting changed, also this bug seems to occur IF the first tileset's texture size is smaller than the other tileset's texture which is the thing that struck me the most, Any help would be appreciated!

aismann commented 1 year ago

@DelinWorks Please add a little more info on the title? Like: Help Wanted with PR #1143: Add support for TMX multi-tileset layers Thanks.

aismann commented 1 year ago

@DelinWorks , I'm currently not familiar with the tileset implementation but my idea about this bug seems to occur IF the first tileset's texture size is smaller than the other tileset's texture which is the thing that struck me the most, Any help would be appreciated!

Why not using a "'scaled' tileset copy" which all have the same size?

Another idea: for correct test data: 1) Each used tileset is correct working alone with axmol? 2) If using your Code snippet for multi tileset using only 1 tileset is also working with all used tilesets? 3) Works with 2 tilesets (same size)? 4 Works with 2+n tilesets (same size)? 5) Works with 2 tilesets (different size)? 6) Works with 2+n tilesets (different size)?

And If nothing helps the last one: Create a warning like different tileset texture size ist not supported...blablabla" with the current implementation.

aismann commented 1 year ago

@halx99 Please add 'pinned'

@DelinWorks Can it test on 'latest' axmol without changes (of course: add this PR)?

aismann commented 1 year ago

@halx99 please add "pinned".

I think the easiest way is to generate an own 'FastTMXLayer'/'FastTMXSubLayer' format for 'multi-tileset layers' which axmol is supporting.

aismann commented 1 year ago

@DelinWorks As far as I know, you working on a "support for multi-tileset layers" with axmol, right?

@halx99 Maybe it usefull to add this issue to the axmol-2.0 project (also the "Multiple textured layers #617") ?

jcy1001 commented 1 year ago

"Is this feature finished?" or "Is this feature still being worked on?"

jcy1001 commented 1 year ago

@halx99 axmol2.0 "Is this feature finished?" or "Is this feature still being worked on?"

halx99 commented 1 year ago

@halx99 axmol2.0 "Is this feature finished?" or "Is this feature still being worked on?"

Not sure, becase I have not time to check it, original author is @DelinWorks you can ask.

jcy1001 commented 1 year ago

@DelinWorks axmol2.0 "Is this feature finished?" or "Is this feature still being worked on?"

DelinWorks commented 1 year ago

I tried to solve this issue, but every time I get artifacts, the tilemap renderer might need a complete rewrite, which I haven't gotten into for a while