galaxy view showing stars unlocked

I’m definitely not meeting that “mid-month” goal for BAWD 1.0.2, unfortunately. I had hoped that self-quarantine would yield more productive time, but it’s actually been surprisingly disruptive.

That said, I’m pretty happy with the progress anyways. I’ve closed a lot of tickets that have collectively made the game feel much more like the game I want it to be, though that destination is still far away.

The two main categories of work have been to add a new “system licensing” system, and to make the galactic travel experience more intuitive.

System Licensing

Unlocking later stages for successful completion of earlier stages is a comfortable mechanic for puzzle games, and that’s the general idea of what the “licensing” system is: a lightweight, semi-linear stage unlocking mechanism.

The first time you clear a planet (by reaching the bottom of the mine), you earn a star token. Star tokens let you unlock access to a new star and its planets. New stars tend to have higher difficulty planets, but you can re-play any planet you want.

This allows you to continue earning credits and upgrading your modules at your own pace, but to also continue finding new challenges.

That’s it for now. Stay safe out there!

Work continues on BAWD 1.0.2, roughly on schedule. I may have to slightly stretch the definition of “mid-month”, though.

One part of that is my estimate of one piece of under-the-hood functionality being off.

Prior to BAWD’s rewrite, I had implemented much of the galaxy traveling code as direct point-to-point travel. Even though you would travel along a hyperlane route, it wasn’t animated as such. It did know the route distance, however, thanks to an implementation of Dijkstra’s algorithm.

For the rewrite, I decided I’d rather animate the player’s ship traveling along the path, to continue with the “more intuitive, more skeumorphic” approach the rewrite exists for.

The estimate was off because in my memory, I had implemented Dijkstra’s algorithm with the pathfinding part accessible but ignored. However, I did not do that. I implemented a slightly simpler form that didn’t memo-ize the return path (i.e., the “parent node”) part of the algorithm.

Moreover, the way I wrote it was “clever” in that bad way that programmers sometimes let themselves get away with, and was actually quite difficult to modify to return the path.

There’s a lesson to be learned there, but who doesn’t love re-implementing Dijkstra from scratch? (… most people?) Feels like being back in school, in a fun way.

That’s it for now!