Over the past few weeks I've been adding tons of text to menus, hints and story points to the levels, as well as level design, game balancing and engine work.
Engine-wise, mainly just small fixes. For instance, one of the ai variables we have is called 'fire_distance'. The idea is that unless the target is within this distance, the ai won't shoot at its target. Also, it tries to find a 'shooting spot' within 70% of this distance, so it doesn't keep getting to far away if the target backs up.
Well, normally the fire distance was set to be about the same as the alert_distance, which is used to prevent far away enemies from waking up too early, but in some newer versions of some levels, the fire distance was set much lower. This exposed an existing bug in the ai, where it would not fire at all, b/c the shooting spot finding part of the code was ignoring the firing distance parameter, but the firing code was not.
Not a huge deal, but just another example of the still-brittle nature of such a complex project. The only way to find something like that earlier would have been a battery of unit tests on various combinations of firing and alert distances.
The crystal, weapon creation, and cloning systems are working well.
Today I'm finishing the 'choose which character to play' level. It turned out easier for me to make a small level with a custom input manager class than to do some sort of 2d menu, plus it feels a lot better and more interactive that way. Right now we have one generalist and 3 specialists, although the skill-based system allows the various characters to totally overlap skill-wise by the end of the first few levels.