We're much more quiet for A17 because a lot of the changes going in are system changes that let game features talk to each other, until the new content is created in XML for the new setup, there just isn't much to show. (That and I need to get into the UI bits on it and clean them up)
The reason some things got overhauled was because I was tasked with redesigning the item modifiers, progression/skills, buffs then making them all able to touch each other.
The overhaul process (Items):
What happened is that in A17 we were bringing in a better loot loop in that even as a level 1 you'll be able to find a full gun instead of part of one. It won't have very good stats but will likely come with a mod or attachment of some sort. Removing a mod has a chance to break the weapon where an attachment can be put in and taken out at will. This changed the items to only really need 6 tiers. The tiny variations in value weren't fun and were pure vertical progression.
This required us to be able to still use a system similar to the old one that would allow modification of values. Like the parts mods also will modify values on the item they live in. Adding this in required me to build a new central class to process the modifier values.
The overhaul process (Ranged Weapons):
Ranged weapons have always felt wrong to me. The crosshair spread didn't represent the cone of fire and on top of that the FOV/resolution would change accuracy. I implemented the same fire cone code that I put in for the turrets. With that the new events/effects allowed us to set up things like clip size, fire rate, accuracy kickback as well as many other things. You can basically simulate just about any weapon now via xml values.
The overhaul process (Progression):
With the new system we wanted to be able to have chunkier skills and perks and less of the incremental gains. With that we wanted to be able to punish the player through their progression stats via illnesses and injuries to keep things interesting. While testing I noticed the skills system made tons of garbage and we don't want that so I went in and redid it to be lightweight and to not make garbage to clean up.
The overhaul process (Buffs):
Finally the buffs, these guys have timers. Similar to progression, very similar. So I designed a system that was nearly identical to the new progression system. This keeps it lightweight, only storing the timer and a pointer to the single instance of that buff so there is only ever one instance of the heavy data needed. With the buffs we found that actions also needed fired off for particle effects so I started adding an action system. Also at the same time it was discovered that there would need to be requirements to keep buffs from firing something too often or to clean up after itself on login/logout. The need for this kind of cleanup added the need for "events" these started out as simply onBuffStart, onBuffUpdate, and onBuffEnd so we could do a few things but has now grown to include everything from gaining xp to placing a block.
The overhaul process(Overall):
So basically the needs of each area added to the effect system I initially put together for just the items, then as each system was worked on, instead of shoe-horning it in and causing even more garbage in ram, I instead opted to redesign them from the ground up knowing exactly how they'll be used at this point in our development. I left it as open as possible so we can expand in any way we want/need with little or no code support.
So, sometimes you hit a point where you have to tear things down. Oganically growing code becomes very unwieldy the longer it exists and sometimes a rewrite is needed to encompass all the other features that came along after it.
/data_dump