<div dir="ltr">We want to move to (at least) 16 bits per tile, to enable larger tilesets.<br>This will also allow and require the tile animation system to be upgraded as<br>well, so the question is how should we make use of 16 bits of tile space?<br><br>(Features like parallax and using backdrops as map layers are<br>separate from this question, though involve replacing other parts of the map<br>file format. Non-20x20 tiles is also completely separate.)<br><br>We could even support using multiple tilesets per map layer, though you would<br>have to specify which ones you want. But after originally being keen on that<br>years ago, it now sounds like too much complexity.<br><br>I'm not a fan of the animation ranges of the tile animation patterns. It's<br>very wasteful, since only a few of those tiles are likely to be animated,<br>while the rest are garbage, and when you try to use the tile picker to pick<br>an animated tile, you have a lot of painful to look at garbage animated tiles<br>to ignore.  The wastefulness is also the reason that we're limited to just 2<br>patterns and 160 tiles.<br><br>Instead, I propose using an extra layer of indirection between tile IDs and<br>animation patterns, in the form of a palette of animated tiles.  Tile<br>animation patterns would be the same, except that you will no longer define a<br>range for them. Instead, each pattern can be applied to any tile, and there<br>no longer needs to be a limit on number of patterns.<br><br>You could say which tiles in the tileset can be animated with which pattern,<br>and those animated tiles get added as *additional* tiles to the tileset.<br>These could be shown in the tileset editor right below the static tiles Then<br>in the map editor you can pick those animated tiles direct from the tileset,<br>or continue to press 1, 2, 3, etc. to turn a tile into the animated version.<br>If you try to turn a tile into an animated one but it's not yet in the<br>tileset, you could be prompted to add it. It should also be possible to<br>delete an animated tile, leading to unallocated gaps.<br><br>(This leads to some questions: in case you want to swap tilesets, should you<br>be able to reorder, copy, and delete animated tiles, so that you can cause<br>their ID numbers to be the same in different tilesets? Should unallocated<br>animated tiles be shown, so that you can copy into them? Should writeblock be<br>allowed to write unallocated tile IDs?)<br><br>We could also reserve some space for future use. I don't know yet what that<br>might be... multiple tilesets per layer? visual filters?<br><br>I'm thinking something like:<br>0-8191 : regular tiles (max tileset size)<br>8192-16383 : animated tiles<br>16384-65535 : unallocated<br>And a lookup table of 8192 animated tiles, with tile ID and pattern ID for each.<br>(8192 should be enough for anybody.... right?)<br><br>Also, for consistency we might as well upgrade passmaps and foemaps to 16bit<br>at the same time. Making use of the extra wall bits for angled or partial walls<br>is a much more difficult question.<br><br></div>