NES Style 8x8 to 16x16 Tile Workflows

Hi Guys,

I’ve been making sets of tiles, and I use Tiled to test them out. I really appreciate the ability to quickly check the compatibility of my tiles using Tiled. I currently work in 16x16 tiles, and I think this workflow works really well within Tiled, but I would really like to make groups of 4 8x8 tiles like many NES games. If I have a tile with 4 variants per quadrant, I find that I could easily make that 8 8x8 tiles (256 pixels), but if I were to do this in 16x16 tiles I end up with 16 16x16 tiles which is 16x as many pixels.

This isn’t a big deal with a few kinds of tiles, but with multiple palette swaps, it ends up being really messy. I love working with 16x16 tiles, and it makes sense for games and gameplay within those games, but as far as art is concerned it’s pretty difficult. If there’s a solution to this problem, I’d love to know!

I attached an image for a common tileset. There are 13 unique 8x8 tiles that add up to something huge in 16x16 tiles. The 8x8 tiles can fit in only 1 or 2 quadrants (you won’t see an inside or outside corner outside of their particular quadrant, and the straight line pieces will only exist in their row or column). I think I could even get this 8x8 tileset down to 8 tiles if I removed all tiles that could be flipped horizontally.

No support currently exists to map with 2x2 blocks of tiles, especially not if the map should be saved as a series of references to such blocks to reduce the size of the map as well (since for a NES game, the map can’t be very big if the tiles are only 8x8). So you’d need to write custom tooling around that for now.

Such features have been requested and may be interesting to work on in the future, though because it’s a somewhat niche use-case it is unlikely to become a priority on the roadmap. That said, since Tiled is free software anybody is free to work on a solution to improve this workflow. The following related issue exist on GitHub:

So, Phlosioneer has made a nice comment that I wrote a response to, but which I lost before I could submit it. I’ll have to find some time to write a new response. It’s not a trivial topic, but there are more (like Nathan Tolbert - “gauauu” on Discord) that could be interested.

I think some way to use metatiles would be very useful, and that general concept is quite commonly used, it’s not niche at all. Storing the original tiles (8x8 in OP’s case) would be best in most cases, since games using this style of tiles often don’t confine their use just to metatiles or the metatile grid. The metatiles need only be a convenience feature in the editor.

It would need to be a way to select particular arrangements of tiles, but the actual placement would be just like a copy+pasted block of tiles in Tiled now. I’ve even heard of some users already using a testbed map to copy+paste metatiles from for this sort of usage, but a one-click selection would certainly be faster.

That’s been my strategy. I’m also doing a NES game, using 32x32 pixel metatiles. I’ve written a separate tool that lets me build a set of 32x32 metatiles from the 8x8 tiles that the NES requires. Then it exports both a json file detailing the metatiles (for my build process), and a png file of the metatiles (for use in Tiled). Then I do all my map editing in Tiled from that metatile image.

I can envision an interface in Tiled that lets you build those metatiles, but even then, there’s so much potential customization (properties such as palette or collision data per tile or per 16x16 sub-meta-tile?) that it doesn’t seem trivial to build an all-purpose solution.

I’d be happy to share my tool with you if you’re interested, but it’s very clunky and unfriendly (since I scrapped it together quickly just for my own project)

1 Like

@eishiya Right, what you’re saying is I think mainly that a “scratchpad” kind of view, which would likely be another map just to select tiles from, would be a useful productivity tool. I believe GameMaker Studio 2 actually features such a view along with each tileset (though I think that means its contents are limited to tiles from a single tileset). This could be combined with a feature that makes it easy to select blocks of a certain size, which could also be a useful option in general.

That’s definitely a doable project, though it does not provide the memory savings that @gauauu or not-surt (on GitHub) need from this feature, which is the part I meant to call “niche”.

@gauauu Do you think the idea posted by Phlosioneer would help you, or is it actually easier for you to generate a tileset image than a map?

I think that Phlosioneer’s suggestion is a really good idea for the general case, and a nice way to leverage Tiled’s existing interface for this use. I could definitely envision using it in a future project.

That said, I probably wouldn’t use it in my current project. Part of what my tool does is allow various game-specific properties attached to parts of my tiles (whether the tile is destroyable, what sort of collision properties and palette properties it has) then draws visual cues about those properties on the image I use for Tiled. Making those properties visually obvious makes my map-editing job a lot easier.

I don’t think tiled could ever replace the “drawing visual cues” part, but the map-as-tileset way of doing metatiles would allow a parser to keep track of properties of sub-tiles.

One of the things you can do with my proposal is to define collision boxes for the sub-tiles; then, when creating the meta-tiles, you can combine all the collision boxes of the sub-tiles together. The same idea might work for custom properties. I think it depends on the parser, and whether it allows you to reference the original sub-tiles.