Friday, September 5, 2014

Abiathar Confidential: The Only Abandoned Feature

I'm away from all electronic communications this week; enjoy automatically-posted issues of Abiathar Confidential!

From that first day when I sketched out what-was-then-called-Fudge's menu hierarchy to the release of Abiathar v1.2, there was a strange and little-known feature called Variable Width, found under the Tileset menu.

Variable Width was something I added because it seemed like an interesting idea at the time. I mean, you're usually going to have a boat load of empty space to the right when you're in tile palette mode. So, to get the most tiles accessible on the screen as possible, Variable Width ignores the convention of having 18 tiles on each row and instead checks the window width and does some division to see how many it can cram in.

This was a bad idea for two reasons. First, it was extremely difficult to code because it requires UI state to get back into the tool logic. The feature was added when there were no tools; picking tiles and placing tiles were hard-coded into the mouse-clicked procedure. When all that stuff was offloaded into extensible tools, I had to pass Tileset objects around that kept track of the actual width so the tiles would actually be where they appeared to be. It also caused a lot of headaches in updating tile palette view plane state: when the window was resized in tile palette mode, the render planes had to be notified. (It was also a huge pain to get Variable Width cooperating with Assimilate Infoplane.)

Secondly, Variable Width messed up pretty much every palette copy operation you might want to do. Most modders draw related tiles together so they can be copied as a block to be easily pasted into a level. Since Variable Width changes the width of the tileset, it jumbles up all the tiles. A tile that was directly below something related might now be on the same row. So, the feature never got any serious use.

Variable Width was made an "advanced option" before the v1.0 release, requiring a config option to be changed before the menu option was visible. This was done to help clear the menu item clutter, but it also made sure that even fewer people even saw Variable Width. I didn't really want to keep supporting something people didn't use, so the feature was officially cut in v1.2. (A little bit of code remains around for it, but I'm fairly certain v2.0's changes are not compatible at all with it.)

And there we have it. Variable Width is, to the best of my knowledge, the only Abiathar feature to have existed and then gotten cut.

No comments:

Post a Comment