Despite the festive period, I did manage to get a fair bit of work done on the solar system-wide fleet movement mechanics. A lot of that is framework stuff that isn't too exciting to talk about, but the two notable additions since my last article include a spline-based node-to-node pathing system and the accompanying system map which features seamless zooming from the detailed planet view level all the way out to the current system overview.
Tactical map view
So the map view actually started life as a simple 2D representation of the in-game solar system editor layout, with icons positioned over objects that could be clicked on and so forth. It worked okay, and I spent some time trying to design suitable icons for planets and ships and such, but it seemed cluttered, and I couldn't help but worry that this view was probably going to the most commonly used way to keep track of everything and it really didn't fit as well with the planet view as I'd have liked.
But that's okay, I've got time to go down a few wrong roads if it leads to better design decisions. And a Homeworld-esque map display is definitely working better. There are quite a few tricks involved in getting this effect to look right-- it would be easy if everything could just be placed relative to each other even at large distances but that would lead to floating point issues (and floating origin doesn't really work so well for rts games). So despite appearances, the system map is actually a tiny scaled down representation at the Unity origin, much smaller than one of the normal sized planets, and cameras are paired such that the view direction of the normal sized planet matches the tiny low poly version when required, and then we switch between the cameras when zooming in or out (with zooming in ironically resulting in zooming out, and vice versa). It's virtually seamless, doesn't require alternate models/icons for everything, and 3D objects (such as ships) can be effortlessly represented exactly where they should be. Personally, I think that's the tactical display we always need!
Spline based ship movement
You may have noticed the strange lightsaber-like things hanging around the planets in the gifs above: these are the current 'debug' visualizations of the paths that ships will be able to take to move from planet to planet and to all other points of interest in the system (including moons). I don't believe that total freedom amounts to a decent strategy game, so my vision of a space strategy title includes the kind of choke points that are easy to incorporate when you're fighting amongst mountains, trees and buildings and the like. Space lacks any of these natural obstructions, so I'm arguing that ships would generally always travel in straight lines from point to point, and move in the orbital sphere when near a planet that they intend to interact with in some manner (sending units and supplies down, receiving resources, attacking installations, defending ground units, etc).
With this posited, I can build a node network between planets, moons, etc, that can inform a system-wide path-finding system for space vessels, and using splines makes sense since we can draw a path (linear or curved) for each ship that follows each of the paths provided by the path-finding system whenever a move/attack order is given. Not only that but ships can have an offset to the direction of the spline, can animate independently of heading, and things like evasive maneuvers can be achieved through manipulation of the local spline path itself.
In order to reach this lofty goal, however, I started by introducing the placement of these 'space lanes' into the solar system editor, including branching points which allow for some intricate design of routes between nodes/objects.
Going forward I'll be dealing with the final obstacles to a full system-wide movement system: connecting to planetary orbits and moving in spline-guided great circles around the orbital layer (I have a non-spline system already, but it makes sense to switch over completely to splines at this point).
As always, thanks for reading, and please do check out the developer diaries on Youtube if you'd like a bit more detail and to see things in action. Stay safe :)