While I'm on the record as liking the current system well enough, I do still have thoughts.
I think it makes the most sense to start from the top and work down the ranks as a starting point. To avoid the problem of a lack of low-rank officers, some minimum rank ratio could be enforced - the current 2:1 (naval) and 3:1 (ground) would be fine IMO, but if you want to be more flexible for players 1:1 and 2:1 would probably be fine and I think most people would prefer this - even 1:1 globally would be okay just as long as some limit is in place so we don't have 500 generals commanding three colonels.
A ratio system would probably just be awkward and not entirely realistic. On one hand, I think most militaries tend to promote people if there's an important higher position that needs to be filled, like anything requiring an admiral rank for example, so if a race has not enough officers and admiral-level positions are unfilled this is not very realistic. On the other hand, for a very undersized rank structure using strict ratios could lead to having numerous jobless admirals "commanding" a navy of 5 ships in a conventional start. Thus, I think it is better to promote upwards as needed subject to minimum ratios.
The potential challenge I see is that you need to find the right balance between, essentially, commercial/auxiliary ships, fighters, and command modules (AUX, ENG, etc.) without unduly limiting how the players can set up a rank structure. Commercial ships are a particular problem because the relevant bonuses are often rare, particularly the Logistics bonus which is the only one needed for freighters, colony ships, transports, etc. which also tend to be the most numerous commercial classes - I wouldn't want a large fleet of freighters to throw off the numbers when I only have a handful of qualified commanders for them anyways. My first thought here is to fill all the military ship rank requirements first, then the commercial ships.
The tricky bit is then how to handle the auxiliary modules, because as things currently stand a commander will be taken out of a sub-command position if there is a ship command available for which they qualify. If we fill the requirements for military ship commands first, then (military) sub-commands, then commercial ship commands (and sub-commands I guess), we can have situations where the sub-commands will not actually be filled if some of the officers in those roles are pulled out to command freighters or whatnot. I'm not sure how big of a problem that would be in practice, though, especially if the minimum rank ratio is chosen reasonably.
I would also suggest after thinking about it having a rule that no more officers will be auto-promoted to a certain rank if there are already, say, 10% of officers idle at that rank. This will prevent an issue like the following:
- Rank structure starts at Lieutenants (LT) who are expected to command fighters, and advances to LCDR who are expected to command freighters, small military craft, and sub-command jobs.
- Due to large amounts of freighters, many LTs are promoted to LCDR who are then idle as they lack any Logistics skill.
- Player ramps up fighter production, and lacks LTs to command them while dozens of LCDRs stand around the water cooler complaining about their boring jobs.
That being said I am not sure if this rule would really fix a problem, or just create a new problem, so it may not be needed. I would say try the basic idea (fill from top, minimum rank ratios, fill military jobs before commercial) and then see if it needs tweaking.
For ground forces I think it is easier - fill from the top with a minimum rank ratio. Not having sub-command jobs or commercial formations makes this a lot easier to manage.
I would also appreciate being able to exclude ship classes from having commanders (and ground formations too!). Designs such as sensor probes/platforms, small rescue shuttles, etc. don't really need commanders and I'm sure there are other special cases players have come up with over the years.
I think this would be great! With the exception that if you manually assign a commander it would stick and they wouldn't be removed (sometimes I want this for RP purposes). But the system wouldn't try to assign commanders for them or include them in the calculations.
This is another good point, sometimes I don't want a commander to be removed from their role for any number of reasons, maybe they still receive the promotion but remain in their current ship command (obviously this wouldn't work for sub-command jobs).
I'd like to suggest an alternative way to deal with not having enough officers to fill all of the available positions. What if you implemented an "accelerated officer training" as a construction project? This would simulate an empire realizing "We need officers, NOW!" and investing resources to a one time push for extra entry level officers. (If you think that this idea has merit, I'll let everyone else debate over what the inputs and outputs of this need to be for it to be balanced.)
I am not a big fan, mainly as no matter how big you make the "FOR EMERGENCY USE ONLY!!" sign this is probably something that people will build all the time since academy output is usually an important bottleneck (especially once retirements are at full speed). I prefer to leave this bottleneck in place as it motivates interesting decisions about shipbuilding and class design.