Ship movement AI is the part of the game that I think needs the most work. Honestly all other considerations of balance are far less important because these variables will once again be shifted out of balance as the movement ai develops. What I feel will make or break this game, in terms of commercial success is the ability for the player to make their ships behave in a manner they envisioned when they put together the design. As a game programming student who has studied AI extensively I not only know how difficult AI programming is, but also the cost to you as an independent developer to focus your time on it. Thankfully you have a good solid community here who’ve already bought into (and purchased) the game and want to help you make it better.
I really think that GSB is a good candidate for use of steering behaviors for ship movement. 2d implementation of these behaviors is fairly simple, each behavior generates a steering force vector. The nice thing about this is it allows you to create complex behaviors by prioritized blending. Perhaps the most famous use of these behaviors is Craig Ventner’s BOIDS which combines separation, alignment, and cohesion to produce emergent flocking behavior.
The steering behaviors are
seek, returns a vector directly toward a target.
flee, returns a vector directly away from a target
arrive, returns a vector that allows the ship to glide gently to a stop at the desired location
pursuit, returns a vector toward a target’s predicted position (looks very smart, instead of trying to go where the ship is, trying to go where it’s going)
avoid, returns a vector away from a target’s predicted position (wouldn’t this be nice for a missile sniper frigate?)
wander, returns a vector with a controlled amount of randomness
obstacle avoidance, returns a vector to navigate around fixed obstacles ( like asteroids!!)
wall avoidance, returns a vector to keep away from the wall
interpose, returns a vector to place yourself between one target and another (great for tanking ships)
hide, returns a vector to place a target between you and an enemy ( great for artillery ships)
path following, returns vectors to follow created paths.
offset pursuit, returns a vector to pursue to set distance and angle from a target’s position (this will fix your formation problems and make dogfights cooler.)
seperation, returns a vector to keep a minimum distance from others
alignment, returns a vector to keep a similar direction to others in the group
cohesion, returns a vector to stay within a certain distance from the group
I think it’s easy to see how these could be combined to create great behaviors for each ship. For instance, I think groups of fighters should automatically flock together (separation, alignment and cohesion) but set the priorities low so they will break and attack when other fighters come around. And I want them to hunt other fighters, so I tell them to use pursuit to try and chase them down and get into firing range and put that at a high priority. (or better yet, an offset pursuit that tries to keep them behind the fighter and in optimal weapons range) Bombers could be told to avoid enemy frigates and fighters, and pursue cruisers while wandering to avoid AA fire.
The nice thing is these behaviors can be added into your existing framework without too much additional work. The current deployment screen setup would be compatible with setting these atomic orders and you are already using sliders for priorities in your attack order setup. There is the consideration that it might be overly complicated. A better method would be to create selection of effective orders that exist by default and then allow the user to learn how to create their own orders in a similar manner to constructing ships.
I think there are few really good advantages to this approach for GSB. It would work with the existing game, your ships are already calling some method to determine their desired heading each timestep, this would simply replace that method. You wouldn’t have to change your existing movement model to make it work. It’s very easy to implement in 2d and what the steering behaviors do is easy for the average player to understand. The tricky part is tweaking the variables for each behavior to get the results you want, which is exactly the kind of gameplay I think GSB players are looking for.
I learned about these steering behaviors from a book called “Programming Game AI by Example” by Mat Buckland. It’s easily the best book on creating functional game AI in my extensive collection. It also includes example implementation for all these behaviors.