Hi everybody. It's been a while, hasn't it?
So, the exciting news of CC2's relesae naturally brought to mind thoughts of Tile World.
Back in 2006, I was getting ready to do one more release of Tile World before I started a new job. Unfortunately, as I was doing that I found that all of my recent save files were corrupted. I was terrified because I didn't know how it had happened. Obviously I couldn't release any new code until I understood what had caused it. And so my new job started before I had resolved the issue.
It wasn't until years later that I finally convinced myself that the files had gotten corrupted up by another program entirely (a one-off script I had written to do some surgery on my save files while testing a feature), and that all the code in Tile World was blameless.
Because of that little scare, there were a handful of bug fixes that have been sitting on my hard drive all this time. It's way past time that I release this stuff.
So, welcome to Tile World 1.3.1:
The fixes to the MS game logic involve issues with blocks that start out on beartraps, and some interactions with blocks, creatures, and teleports. (One was a complicated bug reported by Evan Dummit which I no longer remember the details of.) The big one for me is a fix for a bug in the emulation of Chip turning a cloned block into a clone of himself while going through a teleport. You know, back in 2006 I once said "The day that Tile World correctly emulates level 9 of pi.dat all the way through, I'll be able to retire." Well ... I think Tile World 1.3.1 correctly emulates level 9 of pi.dat all the way through. (Unfortunately, I don't think I can actually retire. Too many other bugs.)
There were two notable bugs in the Lynx emulation: one with toggle walls not getting initialized correctly, and one that prevented BEWARE OF BUG working when pedantic mode is turned on. Those are now fixed.
I've also integrated the bug fixes that were released in TW2.1, including the one for the rather awful bug that failed to read save files correctly on 64-bit systems. A big thanks to Eric Schmidt, and Madhav Shanbhag (as well as Shmuel Siegel and Anders Kaseorg and everyone else who's worked to improve Tile World).
There's also some minor housekeeping work in various parts of the code and the documentation. Some of my stupid memory-management tricks are now being called out by the compiler, so I've rewritten that code to be more well-behaved.
Finally, there is one new feature. Tile World now stores the last level you visited in the save file, and by default it returns there when you next bring up that level set.
Hopefully, the bug fixes can also be integrated into TW2 without too much effort. (Though obviously not zero effort, as it appears there are going to be at least one or two merge conflicts.) I still haven't run TW2 myself -- I'm very curious to try it out, but I need to install like half a GB of Qt libraries first.
I've also started documenting some of the differences between the original Lynx game and the new version of CC1. This is just a quick list of first impressions; I haven't really dug into that subject yet.
And at some point I want to sit down and actually play CC2!
Free to reply here if you find a bug in the code or a mistake in the documentation. Or email still works, if you prefer that.
Share and Enjoy.