I spent most of the month working on something called gradient descent optimization. It took way too much effort, but I'm extremely proud of how it turned out and now I can use this tool a lot easier in the future, which is cool!
This test enemy has three thrusters placed sorta randomly, yet it knows how to fly! This is pretty impossible to figure out a clean math equation to do, especially with arbitrary positions and thrusters.
But even when a thruster is destroyed, our gradient descent code immediately knows how to re-configure the thrusters into something that lets it stay airborne. We can place any amount of thrusters in any configuration and our ship knows exactly what to do.
I can try to explain how this problem was solved in more detail if it's of anybody's interest, but essentially we boiled each thruster down to float variables in an array, and each frame the game does multiple iterations of wiggling the variables and comparing if these new variables would make the ship move closer to a desired direction/rotation (this is called minimizing the error).
Also shown here is a WIP shield unique to this enemy, which will try to get in the way of the last cannon to shoot at them.