Today I fixed a few minor issues that I found while testing the game in various modes. I believe I'm getting close to completing the testing cycle as well, and to be honest, I don't know if there's much left to do with the game before the initial release.
I'm sure there will be more bugs and issues to squash after the release, but so far, the initial goals seem to have been completed, at least.
Am I satisfied with the final result thus far? Well, kind of. It's my first "solo" project that is basically a game I've never tried coding before. It's also based on an existing code base that's far from ideal and it's somewhat difficult to work around certain issues and limitations of the original Boulder Caves engine without rewriting significant portions of code. As such, I'm not yet sure if, once I get to the SDL 2 porting stage, I'm actually going to keep maintaining this particular core or if I'm just going to write a fresh SDL 2 one from scratch using the Pygame 2 framework and then "slab" the engine on top of it, reusing the successful portions of Boulder Caves+ and writing the unsuccessful ones from scratch. We'll have to see, I guess.
That said, most of the initially planned goals have indeed been completed - Krissz Engine compatibility, a conversion toolset to convert Krissz Engine cave images to BDCFF supported by Boulder Caves+, a more fluent and optimized game engine than the original Boulder Caves, better implementation of Boulder Dash mechanics than the original Boulder Caves went for.
There are still things left that I can't quite figure out, at least within the confines of the Boulder Caves core. Properly fixing Rockford idle animation, for example, will most likely necessitate the rewrite of the object animation subsystem as such, avoiding the strange and seemingly arbitrary system of assigning a "sfps" property to each object and then using that as a basis to synchronize each animation to the game loop. This will have to go, most likely, and be rewritten in a way DarkStoorM suggested above, with all the animated elements synchronizing to the same animation cycle variable that increments from 0 to 7 and then wraps around.
Infinite scroll implementation definitely needs more work, and that's where I can't quite find the needed breakthrough. Not only do I not know how the original infinite scroll was implemented in Krissz Engine, I also have little idea how to improve my mirror tile-based implementation to make it transition smoothly across open borders. It's also one of the "heaviest" parts of the code, significantly affecting performance and thus only really useful on either faster modern PCs or smaller-sized caves (best if under 1000 objects scanned per frame).
So, that's where I stand for the time being. Stay tuned for further updates and the upcoming release!
- Agetian