It had been way too long since I last worked on LW, but I'm back to it for now. I'll have other things going soon, but I'm going to try spending a little time on it every day anyway.
Because I only started working on it again a few days ago, this update is very short: the only thing I've done is getting started on the battle system. At this point, I'm detecting battle start/end conditions, gathering information about fleets that are present and I've also added damage-related data.
So it's been almost a month since my last update, mostly because there wasn't much progress recently, mostly due to external circumstances (various health-related issues, actual work, and other things too).
A lot of the game's internals (which had been scavenged from older code) have been updated or rewritten, because they were getting in the way or had pieces which were mostly unused.
The pre-processing language received a number of additions, including
support for user-defined macros, new commands (including
which simplifies tests by allowing output to be forced to the data
The event formatting code was completely rewritten. It used to have its own, limited formatting syntax, which was redundant with the preprocessing language; this extra formatting language has been removed entirely, and the preprocessor is used to transform events instead.
Various improvements to the CLI's views and command structure were completed, including fixing old bugs and inaccuracies. Handling of saved games has been improved, with various abilities such as copying or renaming games; thanks to these new abilities, options to create backup copies of a game automatically have been added.
Last but not least, I was getting tired of having to insert hooks in the main code for the module containing testing commands and debugging views, so I added a system that allows limited "mods" to be loaded. These mods can add new game commands and queries, support for new definitions, alternate event formatting instructions, or UI elements (these would be specific to the game UI currently in use).
I have been experimenting on and off with the battle computations, but so far I have not been able to get it right (by some definition of "right"). Since I am otherwise busy and still sick, this could take a while.
On the "game-y" side of things, I implemented planet ownership change, which made it possible to start working on various other parts.
I also added the necessary fields and computations to handle happiness effects from the size and age of a planet's controlling empire.
I am in the progress of modifying the event formatting code, as it used to have its specific mini-language; with the new "pre-processor", this has become redundant, but it requires a few other changes to be efficient.
On another front, I rewrote a lot of the existing tests for use with the test runner script, added new tests for old stuff, and started testing the new things as I added them. That takes a lot of time and it's a bit boring to do, but sometimes I discover a bug so I'm mostly fine with it.
I will not have much time to work on LegacyWorlds for the next two weeks, and so I intend to work mostly on both very small items (changes or fixes to the CLI views, that sort of things) or relatively big refactorings (but which don't require too much concentration and can be done in multiple stages) which I've had listed in my to-do list for quite a while. Oh, and quite possibly write more test scripts.
I implemented the tax system. It's pretty basic - you can set a tax rate for the whole empire, or use specific, per-planet tax rates. Of course, taxes influence happiness negatively after a certain threshold.
I have mostly rewritten the parser for the command language that is used for the game definitions as well as the command line interface. The idea is to be able to run automated test scripts. However, my initial plan (simply add a few things so it's easy to run a bunch of scripts with different parameters) didn't work out because I realised I'd have to eyeball the output for errors, and that gets rather hard once a dozen or more test scripts are being executed.
So I went for something a little deeper, and now I have a LISP-like language as the preprocessor. While it still has a few rather big warts (see this tweet for an example), it's mostly usable at this stage, so I don't intend to tweak it too much at the moment. I'll just add new built-ins when I need them and that's about it.
I've started working on the test runner, which is a script that loads all tests and executes them. It's a bit complicated because I still want to be able to run individual tests directly, so it has to process the test scripts into something more appropriate.
I intend to finish this next week, then get back to working on the game itself - my next "to-do list" item being the code for planet ownership changes, which is necessary for battles and to implement the ability to abandon planets or to blow them up.
LegacyWorlds is off-line... for now.
LegacyWorlds used to be an online, browser-based "strategy" (and by that, I mean "build as much weaponry as you can before hitting everyone else on the head with it") game. I lost all motivation to work on it, for many reasons.
The good news is... well, I'm doing something with some of the ideas that were meant for newer versions. So, LegacyWorlds will be back, albeit under a different form.
When? Hmm. I have no idea!
Meanwhile, the very old Beta 5 source code can be found on Github. I will publish the Beta 6 M1 source at some point, but that is definitely not a priority.