I had a question, that may be obvious, but is there a way to assign a collection of tiles as an object? From what I know I currently can only select 1 tile as an object, so I would have to create and place pallets that were sized based and place similar sized object assets on them.
For the game I’m working on I’ve created large Photoshop documents that have assets that would work great in Object Layers, but I’m hoping I don’t have to split them up into separate files based on ‘tile’ size, etc. My hope is to have assets that can both be easily worked with in Tiled but also be smooth to work with the cutting, exporting, and importing for my game’s engine.
This is not currently a supported feature, but you’re not the first one to request this so eventually it would be something to support. I’m just not entirely sure how.
Storing a small tile layer with the object would be one option, but I rather dislike this idea since it would complicate the map format and I think 3rd party implementors would not have fun adding support for that. On the other hand I like the re-use of possibly large multi-tile objects this would allow.
Another option would be to store texture coordinates with the object instead of a tile ID. This wouldn’t be very complicated in the map format and should be easy to implement. Alternatively custom texture coordinates could be defined for a tile, and then this tile would be referenced by the object as usual. I like the first option for its extendability to polygons and later possibly meshes, where each point / vertex could have associated texture coordinates. But I also like the second option, because it avoids repeating over and over again the texture coordinates if the same image is used.
All in all I think it’s really not a trivial feature and it definitely also leaves questions open in terms of user interface. How do you define these objects, can you edit them, etc. It is also related to a possible addition of an object library feature.
I think I love “store texture coordinates with the object instead of a tile ID” for a number of reasons. I think it makes most sense for the immediate task of helping to empower the use and potential of objects/object layers. The ability to riff on this foundation could have an awesome amount of growth potential. (Eventually using texture concordances to define even tiles, so the user could move tiles and reorganize around in the tile pallet once the png is loaded.) This would be pretty drastic change but I could see it being open for advanced users.
I love the idea of Object library. I can dream up tons of different options and interface choices. For instance for identifying objects there would be an icon much like the terrain editor icon in the pallet section. If you click that you have the source png on one side, and the resulting pallet on the other. The source png you could place ‘add object reference’ and it would plot down a selection box you could move around and size and place over the image texture information you wish to you as an object. On the other side the object would spawn simultaneously, based off the texture material you’ve selected from the source. You’d then move the object to wherever you think would be a great place for it to exist on the pallet.
ANYWAY I’ve gone too far, I’m dreaming too much, haha. Very exciting whatever pans out. Let me know if you ever want to chat about it. For my current game project I just know I’m at a bit of a limitation point where I’ve packed my past assets in a way that makes them efficient using the canvas, but to split them out to different images based on their size and then also ensuring they are square assets instead of rectangular would be quite the task. I’d want to make my creation process also reflect these changes to the template. Hmmmm