Basically the main items left on my list for DSification are testing, and garbage collection. Everything else works: Flicks, missiles, images, and all the rest. Even the view code has been fully integrated, so atom opacity works correctly. There are a couple of minor things I still need to get to, like microlayers (a concept Dan introduced way back in 355 that still has some validity), and respecting the content order of multiple same-layer atoms on the same turf, but the big stuff is mostly done.
I've started testing against Severed World, which I've been using as a benchmark for performance, and to my delight the server's CPU usage has gone way, way down. The client's is up a little, but I think that can be refined as I go along. (The code goes out of its way not to sort icons when it doesn't have to, nor update appearance icons when it doesn't have to, so all that helps. It might be able to go a little further.) I have encountered a few bugs, in particular that the player's clothes don't show up so there's some kind of layer issue to attend to there, and I did see a mob disappear at one point. Earlier today I also found a pretty bad issue in a routine I've been relying on more and more, but once found it was an easy fix. Always the fiddly bits.
So the next phase here looks like this:
- Verify that area appearances are working
- Add appearance garbage collection
- Add microlayers
- Add something to track contents order
- Test with multiple games and attend to any bugs found
- Test ISOMETRIC_MAP and SIDE_MAP formats
- Profile and optimize the client
- Deal with various other outstanding webclient bug reports
(Sadly, my enthusiasm for color matrices went a little too far because it appears that can't be done easily, at least not outside of the webclient. Shaders may be the answer if I can ever figure them out. Color matrices are still on my wish list and I may try to add backend support anyway in the hope of a future ability to do this, but we'll see.)
One of my other hopes for 509 is to resolve the longstanding sort issues with SIDE_MAP and ISOMETRIC_MAP by introducing a proper topological sort. I have a cool hybrid concept that should be a lot more workable than the naive approach (which is to say, my previous attempt at a topological sort), in which whole sections of the map are calved off and sorted in smaller groups anywhere a seam can be found. It's been kind of a longtime obsession of mine so I'm excited to get to a point where that's possible.