Dynamic per-ship-class caps possible (as of 3.3 i think)

  • We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Pancakelord

Lord of Pancakes
43 Badges
Apr 7, 2018
3.374
12.268
  • Cities: Skylines - Green Cities
  • Stellaris: Leviathans Story Pack
  • Cities: Skylines - Natural Disasters
  • Hearts of Iron IV: Together for Victory
  • Stellaris: Ancient Relics
  • Cities: Skylines - Mass Transit
  • Surviving Mars
  • Hearts of Iron IV: Death or Dishonor
  • Imperator: Rome
  • Stellaris: Digital Anniversary Edition
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Cities: Skylines - Parklife
  • Stellaris: Distant Stars
  • Shadowrun Returns
  • Cities: Skylines Industries
  • Imperator: Rome Deluxe Edition
  • Cities: Skylines - After Dark
  • Stellaris: Nemesis
  • Europa Universalis IV
  • Stellaris: Necroids
  • Crusader Kings III
  • War of the Roses
  • Cities: Skylines
  • Stellaris: Federations
  • Magicka: Wizard Wars Founder Wizard
  • Cities: Skylines - Snowfall
  • Stellaris: Lithoids
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Hearts of Iron IV: Cadet
  • Hearts of Iron IV: Colonel
  • Stellaris - Path to Destruction bundle
  • Stellaris: Megacorp
  • Stellaris: Synthetic Dawn
  • Crusader Kings II
  • Stellaris
  • Cities: Skylines Deluxe Edition
  • Sword of the Stars II
  • March of the Eagles
  • Darkest Hour
So, preamble:
You have 1 global fleet cap. All your ships contribute to this cap in different ratios (1,2,4,8,16,32 from corvette up to star killer) but it comes with 2 drawbacks from a "class-vs-class" pov:
  1. you can exceed it with a simple energy cost (whilst the AI cant really do the same - for now, anyway, i'm sure its on the custodial to-do list eventually)
  2. you have no real restrictions on getting "the best" ships in the game - battleships (with L/XL builds) and corvettes (with very specific builds) this often relegates the middling ships (destroyers and cruisers to "upgrade fodder". To be used briefly in the midgame, then forgotten about.
There have been myriad threads on combatting this phenomena - one i call battleship syndrome - but, getting closer to the point now, there is a way to compel you to use different ships.
1646256635933.png

Per ship-class limits


Titans (2.0) added support for shipclasses limited to "Z/FLEETCAP" ( MIN = X MAX = Y) - by default titans support between 1 and 20 titans., with the other 19 coming from 1/200th FC.

You could extend this to other ship classes (e.g. limiting them to some % of total fleet capacity) but they would be forever capped to some fixed-at-startup arbitrary ratio. And this would apply to all empires equally.
1646256899209.png
1646256842492.png

this is found within \\Stellaris\common\ship_sizes\00_ship_sizes.txt (you'll need to manually add the empire_limits = {...} block as only the titan comes with it by default, but all ship classes support it)

And for a long time this was all we could do with this.

But through the power of expanded variable usage we get this:
1646257067104.png

my_destroyer_variable_test is a variable that is sitting in the country scope - and only the country scope.
  • For non modders, this means it is a number on a sticky note stuck on to the side of your head that the game can read whenever it looks at you.

By default the variables my_destroyer_variable_test and my_corvette_variable_test do not exist in a new game so the game treats them as zero and uses my hard coded base values - easily fixed by setting the variables.

And below we see what happens when we update my_corvette_variable_test in real time in the game.

  1. Our total supported number of corvettes rises to 300 when VAR = 0.5 (140 fleet cap * 1/0.5 + 20 base fleet cap)
  2. Our total supported number of corvettes dips to 64 when VAR = Pi (140 fleet cap * 1/Pi + 20 base fleet cap)
1646257191141.png
1646257166204.png

If you tried to build 65 corvettes the game wont let you. See the error message:
1646257532013.png
1646257560729.png
1646257993098.png

This is the same kind of error message youd get if you tried to build too many titans (ironically only titans have this special dynamic limit, juggs, colossi and star-killers work differently)

Alright so what does it mean?
  • It means you can now have both powerful and scarce ships in Stellaris.
  • It means you could now create GC-resolutions that ban 50% of battleships
    • You could have a base battleship cap of 100% of your fleet capacity (140 in the above case, so support for 140/8(naval use per ship) = 17.5 = 17 battleships)
    • But after a GC resolution reducing you to 50% of your capacity you would have support for ((140*0.5)/8 = 8.75 = 8 battleships)
    • This could be applied unequally to GC members - for example the custodian could ban all ships bigger than a corvette to non council members (and you can bet it'll be a council of 1)
    • Conversely in crisis times, you could raise the celing for all members in the GC letting them spam out KA-Battleships.
  • You could give special civics or traditions or empire wide effects from other sources (e.g. "cruiser berths" as a starbase building) that increase capacity of ship-class X for your empire. Perhaps some special "big gunz" AP gives you twice the battleship capacity, in return for 50% less corvette - cruiser capacity and so on.
  • Humiliation wars could impose actual fleet limitations, slashing fleet capacity post-war and even banning all battleships - for example. Any surplus ships you have over the cap could just be erased until you are compliant, in such a scenario. In the case of a gc ruling you'd be sanctioned until you delete them (or conquer the galaxy).
  • Several kinds of anchorages
    • one that adds "lots" of fleet capacity but doesnt shift ratios
    • one that adds less fleet capacity but increases corvette/destroyer/cruiser/battleship capacity (respectively)
    • one that simply adds +1 Titan support (or +1 jugg support) - for extra brokenness.
      • This would work by a monthly script updating the respective mod_shipclass_ratio_variable by summing up various anchorages in your empire and doing some simple maths.
  • "Wartime powers" edicts could increase your caps significantly at a monthly cost - either auto-deactivating at the end of a war (if non-militarist) or persisting (but at an even higher cost) if militarist...
  • And more i havent thought of yet.
What you do with this knowledge is up to you.
 
Last edited:
  • 18Like
  • 8
  • 4Love
  • 3
  • 1
Reactions:
Given that Destroyers and Cruisers are under-used in the vanilla game, after the mid game phase, it makes sense to offer good options to make Destroyers and Cruiser take up less effective Naval Cap, while being more stingy with options for Corvettes and Destroyers.
 
  • 4
Reactions:
Well, this would be one way to force players to build different ship classes.

I personally would prefer something along the lines of HoI's screening mechanism to incentivize building mixed fleets. But that would also require some big overhauls to the fleet manager and other components of the game

But I'm pretty sure that something along these lines is pretty much mandatory if you want to avoid a game where you end up building mono-ship fleets. Because:
  • If players can get away with building one universal ship, most will do it.
  • No matter how much you rebalance the ship class, chances are you're going to end up with one class being the best overall (if only because the meta tends to settle on one thing) and some build to counter the meta-fleet. So if we end up with a cruiser-meta in 3.6 with destroyers being their counters, we've not really gained much.
 
  • 5Like
  • 3
Reactions:
Does Stellaris 3.3 have the issue where enemy fleets pick targets within only one ship class at a time?

Because spreading out damage across your whole fleet is a significant mechanical advantage which would push towards a mono-fleet if that targeting constraint is in place, and removing that issue -- having enemy ships choose targets randomly within the whole fleet -- would open up mixed-fleet compositions.
 
  • 3
  • 2Like
Reactions:
I personally would prefer something along the lines of HoI's screening mechanism to incentivize building mixed fleets. But that would also require some big overhauls to the fleet manager and other components of the game
It really wouldnt take a massive rework. They moved ship targeting logic in to code back in like 1.5

The AI seems (from what I remember) to target the nearest ship first - but when it needs to make a decision (e.g. if 2 ships are in range) it'll pick a small one if it's mostly got small guns, or a big one if it's got M or L guns. Idk how rockets or strike craft decide what to do.

Code:
#this file ( and all files in this folder ) is reloadable with console command "reload behavior"
#filewatcher is enabled for all files in this folder

ship_behavior = {
    name = "default"
    preferred_attack_range = median#max/min/median/12/412..    #this is the distance to target the ship wants to keep when attacking
 
    formation_distance = 10                #when orbing/following ship will try to keep this distance to assigned position
    return_to_formation_distance = 60    #when attacking the ship will switch to passive mode if distance to assigned position is greater that this

    collision_awareness = 0.75            #how much we try to avoid other ships
    attack_move_pattern = none            #stationary/charge/follow/stationary/none
    passive_move_pattern = orbit
 
    desc = "DEFAULT_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 500        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 20        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 100        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}

ship_behavior = {
    name = "aggressive"
    preferred_attack_range = 10.0
    formation_distance = 40
    return_to_formation_distance = 60
 
    collision_awareness = 0.5
    attack_move_pattern = charge
    passive_move_pattern = charge
 
    desc = "AGGRESSIVE_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 5000        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 20        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = -10000        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}

ship_behavior = {
    name = "defensive"
    preferred_attack_range = max
    formation_distance = 12
    return_to_formation_distance = 15
    collision_awareness = 0.35
    attack_move_pattern = stationary
    passive_move_pattern = follow
 
    desc = "DEFENSIVE_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 50        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 20        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 100        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}

ship_behavior = {
    name = "corvette_default"
    preferred_attack_range = 10
    formation_distance = 10
    return_to_formation_distance = 60
 
    collision_awareness = 0.5
    collision_strafe = 1.0                            #collision_strafe allows the ship to move in any direction while colliding with another
    collision_radius = 1.0
    attack_move_pattern = orbit
    passive_move_pattern = charge
 
    desc = "CORVETTE_DEFAULT_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 500        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 20        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 0            #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}
ship_behavior = {
    name = "destroyer_default"
    preferred_attack_range = median        #max/min/median/12/412..    #this is the distance to target the ship wants to keep when attacking
 
    formation_distance = 10                #when orbing/following ship will try to keep this distance to assigned position
    return_to_formation_distance = 60    #when attacking the ship will switch to passive mode if distance to assigned position is greater that this

    collision_awareness = 0.75            #how much we try to avoid other ships
    collision_strafe = 0.5                #collision_strafe allows the ship to move in any direction while colliding with another
    collision_radius = 1.0
    attack_move_pattern = none            #stationary/charge/follow/stationary/none
    passive_move_pattern = follow
 
    desc = "DESTOYER_DEFAULT_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 500        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 20        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 100        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}
ship_behavior = {
    name = "cruiser_default"
    preferred_attack_range = median        #max/min/median/12/412..    #this is the distance to target the ship wants to keep when attacking
 
    formation_distance = 10                #when orbing/following ship will try to keep this distance to assigned position
    return_to_formation_distance = 10    #when attacking the ship will switch to passive mode if distance to assigned position is greater that this

    collision_awareness = 0.75            #how much we try to avoid other ships
    attack_move_pattern = orbit            #stationary/charge/follow/stationary/none
    passive_move_pattern = orbit
 
    desc = "CRUISER_DEFAULT_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 500        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 20        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 100        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}

ship_behavior = {
    name = "battleship_default"
    preferred_attack_range = max
    formation_distance = 120
    return_to_formation_distance = 150
    collision_awareness = 1.0
    collision_radius = 1.0                            #collision_radius is a multiplier on the radius specified in the ship size
    collision_strafe = 0.5                            #collision_strafe allows the ship to move in any direction while colliding with another
    attack_move_pattern = none
    passive_move_pattern = charge
 
    desc = "BATTLESHIP_DEFAULT_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 1.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 0            #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 0            #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 500        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
        angle_to_target_penalty            = 1000        #score -= <angle_to_target_penalty> * ( angle to target / 180 )
    }
}

ship_behavior = {
    name = "battleship_sniper"
    preferred_attack_range = max
    formation_distance = 120
    return_to_formation_distance = 50
    collision_awareness = 0.2
    collision_radius = 1.0                            #collision_radius is a multiplier on the radius specified in the ship size
    collision_strafe = 2.5                            #collision_strafe allows the ship to move in any direction while colliding with another
    attack_move_pattern = stay_at_range
    passive_move_pattern = charge
 
    desc = "BATTLESHIP_SNIPER_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 2.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 1000        #flat bonus for keeping previous target
        damage_value                    = 2.5        #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 0            #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 0            #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 500        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
        angle_to_target_penalty            = 10000        #score -= <angle_to_target_penalty> * ( angle to target / 180 )
    }
}

ship_behavior = {
    name = "stellarite_default"
    preferred_attack_range = max        #max/min/median/12/412..    #this is the distance to target the ship wants to keep when attacking
 
    formation_distance = 75                #when orbing/following ship will try to keep this distance to assigned position
    return_to_formation_distance = 100    #when attacking the ship will switch to passive mode if distance to assigned position is greater that this

    collision_awareness = 0.9            #how much we try to avoid other ships
    attack_move_pattern = flee            #stationary/charge/follow/stationary/none
    passive_move_pattern = charge
 
    desc = "STELLARITE_DEFAULT_BEHAVIOR_DESC"
 
    targeting = {
        component_target_weight_mult    = 100.0        #score += <weights based on target ship size from components> * <component_target_weight_mult>
        keep_previous_target_bonus        = 100        #flat bonus for keeping previous target
        damage_value                    = 5            #score += estimated damage dealt ( including damage to shields ) * <damage_value>
        low_health_bonus                = 500        #flat bonus if estimated damage will kill the target in a few shots
        shield_focus_value                = 5            #score += estimated shield damage dealt * shield damage bonus * <shield_focus_value>
        armor_focus_value                = 5            #score += enemy armor * shield penetration value * <armor_focus_value>
        already_incoming_damage_penalty = 200        #score -= ( fleet total estimated damage to enemy / enemy max HP ) * <already_incoming_damage_penalty>.
        distance_to_fleet_penalty        = 2000        #score -= manhattan-distance between enemy and fleet * <distance_to_fleet_penalty>
        size_difference_penalty            = 100        #score -= Abs( ship size - enemy ship size ) * <size_difference_penalty>. "Pick a fight with someone your own size!"
        transport_target_penalty        = 50000        #if( target is transport ) score -= <transport_target_penalty>
        civilian_target_penalty            = 100000    #if( target is civilian ) score -= <civilian_target_penalty>
    }
}
IDK how much of that persists through to 3.3. in code [civilian targeting by AIs is a hard setting in country_types now I think, for example, rather than part of the targeting equation], but i'm guessing most of the core logic is the same. That is to say, distance, shield:Armor ratio (based on the number of anti-shield or anti-armor -tagged weapons probably) & target ship size vs subject ship size are the main factors in determining who shoots at what.

IF they
  1. added a "combat threat" stat on all ships (with the base amounts being higher on big ships) - which acts as multiplier on the overall "target priority" equation.
  2. then added modules/aux components that lets you increase or decrease this stat (e.g. on small ships)
You would have a not quite perfect way to emulate screening - destroyers packed with "+combat threat" modifiers and PD modules could shoot down missiles & soak up direct-fire damage for battleships, for example.

Does Stellaris 3.3 have the issue where enemy fleets pick targets within only one ship class at a time?

Because spreading out damage across your whole fleet is a significant mechanical advantage which would push towards a mono-fleet if that targeting constraint is in place, and removing that issue -- having enemy ships choose targets randomly within the whole fleet -- would open up mixed-fleet compositions.
I think that was fixed a while back? The issue if i remember right was they would not switch targets after locking on to one. But i think part of that is because distance remains the biggest factor, followed by size - I used to fake this on older builds of the game by just using slower thrusters on battleships - and pair it with a corvette to get the max sublight speed, back when that glitch still worked lol.

But I'm pretty sure that something along these lines is pretty much mandatory if you want to avoid a game where you end up building mono-ship fleets. Because:
  • If players can get away with building one universal ship, most will do it.
  • No matter how much you rebalance the ship class, chances are you're going to end up with one class being the best overall (if only because the meta tends to settle on one thing) and some build to counter the meta-fleet. So if we end up with a cruiser-meta in 3.6 with destroyers being their counters, we've not really gained much
Yeah there is still room for balancing, of course, but in areas that arent specifically dps-damage statistic oriented.

For example, I'm a firm believer that cruisers should be the "main" endgame combat vessel whilst Battleships ought to be more expensive - and actually even more powerful (and now limited, properly) than they already are - titans even moreso. A titan showing up should be akin to the manifestation of a god of war. But bringing one down should literally slap 10% war exhaustion on to an enemy (maybe scaled based on how many titans they have at the point of destruction).
Other things could help, like
  • lengthening repair times on big ships,
  • giving Battleships and titans inherent +starbase damage bonuses (and all other ships a flat -% starbase damage debuff) - likely hand in hand with a starbase rework.
  • or disabling repairs on captured starbases (any/any without shipyards) OR only repairing at own/allied stations with shipyards or anchorages would also play in to this.
  • increasing war exhaustion cost for losing big ships, further (tbh i dont actually know if this is even a thing as-is, the war screen is fifty shades of broken), whilst increasing their base emergency retreat chance
    • so your small ships will be obliterated more, but capital ships routinely will escape - but might spend literal months in dry-dock - repairs and upgrades should always take less time than rebuilding a ship from scratch but repairing 100% of HP and AP should probably take somewhere in the range of 75% of the days of building a whole new ship. Catching and killing these capital ships will make the war end faster.
  • Scaled reductions to interstellar (the time between stars) speed based on the ratio of capital to tiny ships in a fleet.
    • So a fleet with all corvettes moves at the "full" speed on the side of the hyperdrive, one with all battleships (and bigger) moves at (say) -60% speed. A mixed-composition fleet moves at some ratio between 0- -60%.
    • You can run mixed fleets and have your forces arrive concurrently.
    • You can run separate-class battle groups and have battleships arrive mid-battle like the cavalary they are and so on.
    • Some Aux mods or titan/jugg auras could offset this (with the opportunity cost being youre missing out on other things).
    • This makes small ship heavy builds more viable. but (combined with something like -base starbase damage) they'd be good for tying down enemies till the capital ships show up and wipe the floor with everyone.
  • Adding special effects to some aux mods to synergise with some ship classes -
    • e.g. a small movement speed boost [more pronounced on ships with less armor?] for first 5 days of battle from any booster AUX mods,
    • bonuses to range for X days (every Y days in battle) from reactor boosters (that act a bit like weapon-capacitors)
    • shields can recharge to 50% once in combat if you have shield capacitors, tested every week or something
    • Starbase Ion cannons deal area of effect damage whenever they kill a ship (e.g. 50% damage applied to all/friendly-only ships around the target in X units)
    • obviously these are script driven and carry performance issues if done wrong, but they offer "non statistical" ways to make some ship classes or aux mods more interesting so shouldnt be discounted.
 
Last edited:
  • 4
  • 3
  • 1Like
Reactions:
Well, this would be one way to force players to build different ship classes.

I personally would prefer something along the lines of HoI's screening mechanism to incentivize building mixed fleets. But that would also require some big overhauls to the fleet manager and other components of the game
I'm not familiar with HoI's Screening mechanism, but I think targeting logic would need to be changed up to use it. If Picket Computers screen for line computers, line computers screen for Artillery, and artillery computers screen for carrier computers they could be made relevant.
But I'm pretty sure that something along these lines is pretty much mandatory if you want to avoid a game where you end up building mono-ship fleets. Because:
  • If players can get away with building one universal ship, most will do it.
  • No matter how much you rebalance the ship class, chances are you're going to end up with one class being the best overall (if only because the meta tends to settle on one thing) and some build to counter the meta-fleet. So if we end up with a cruiser-meta in 3.6 with destroyers being their counters, we've not really gained much.

We end up with Meta fleets because statistically there is a best kind of ship, you can lower that gap but it requires a lot of time and effort in Balancing.

If you really want to break up the Meta what you need is Randomness, the problem in Stellaris is you can pick any 2 empires at the same tech level and find very similar ship builds and combinations. If Randomly Empire A gets really Good Battle Ships with Really Good Plasma Cannons then they would be incintivised to use Plasma Cannon Battleships if Empire B gets really Good Cruisers with Kinetic Batteries they will be incinitivized to use that combination, because each empire has different strengths and weaknesses you will face different compositions and need to change your strategy or builds. This can break up the Meta.
 
  • 3Like
Reactions:
If you really want to break up the Meta what you need is Randomness, the problem in Stellaris is you can pick any 2 empires at the same tech level and find very similar ship builds and combinations. If Randomly Empire A gets really Good Battle Ships with Really Good Plasma Cannons then they would be incintivised to use Plasma Cannon Battleships if Empire B gets really Good Cruisers with Kinetic Batteries they will be incinitivized to use that combination, because each empire has different strengths and weaknesses you will face different compositions and need to change your strategy or builds. This can break up the Meta.
Y'know this is an interesting idea. Definitely would not be something everyone likes. But it might be interesting if component trees (i.e. disruptors+emitters/lasers/neutron torps etc) had global modifiers that influenced their fire rate, range or damage.

Maybe every time you complete an energy tech it rolls a stat for one of these.

And you get what you get, and have to play around that, by T5 you might see one empire has huge range buffs in lasers - leading to M or S guns that can compete outside their normal ranges.

...Maybe ancient relics could be used to fix / enhance rolls or something.
 
  • 4Like
Reactions:
Y'know this is an interesting idea. Definitely would not be something everyone likes. But it might be interesting if component trees (i.e. disruptors+emitters/lasers/neutron torps etc) had global modifiers that influenced their fire rate, range or damage.

Maybe every time you complete an energy tech it rolls a stat for one of these.

And you get what you get, and have to play around that, by T5 you might see one empire has huge range buffs in lasers - leading to M or S guns that can compete outside their normal ranges.

...Maybe ancient relics could be used to fix / enhance rolls or something.
There is a Lot they can do if they decide look at 2400 everyone should have some many different buffs and nerfs that they all look different. I would like to see unique techs, techs that give a special randomized powerful bonus and you can only get so many. There could be events too, your shipyard engineers may have found an innovative way to increase power efficiency on your destroyers, now you have 200 more power to play with. There could be a refresh on event ships, you can reverse engineer them for new sections and get the MSS slots from the raider corvettes.

Traditions and Ethics could help shape your rolls, for example:
Authoritarians value the lower class less and are happy to use cannon Fodder thus reduce the cost of building corvettes destroyers and Cruisers. They also want to protect the Nobles commanding the Battleships and titans so they get a health buff. Egalitarians go and do the opposite, everyone is important so small ships get health buffs and cost reductions on the big ships so they can cover for the weaker ones. Expansion may lead to speed bonuses for getting around a wide Empire, Prosperity may lead to Power increases to use and protect your greater prosperity.
 
  • 1
Reactions:
It really wouldnt take a massive rework. They moved ship targeting logic in to code back in like 1.5

The AI seems (from what I remember) to target the nearest ship first - but when it needs to make a decision (e.g. if 2 ships are in range) it'll pick a small one if it's mostly got small guns, or a big one if it's got M or L guns. Idk how rockets or strike craft decide what to do.
I hadn't looked at any of the game files, but it's good to see something to build on already exists. If good fleet composition would actually lead to better behaviour in battles (and not just better numbers being crunched), that would obviously be awesome.

I mostly meant that a change as I would've preferred (give some kind of bonus for "good" fleet composition) would need changes in several places in the UI, so that the system could be understood by the players. You would have to see how good your fleet composition is in the fleet designer as well as when you've selected a fleet.

If the forum's full with "I've merged a 20k fleet and a 10k fleet, now it's only 25k" posts, the system would've already failed .
 
  • 1
Reactions:
Another example of the "schizophrenia" in this forum... a week ago i posted a thread to talk about the old 1000 fleet cap limit... only downvotes... the reason:

ARBITRARY LIMITS ARE BAD!!!!, QQ

A week later someone posts a thread about arbitrary limits, but with more words...

WE LOVE THAT!!!
 
  • 5
  • 1Haha
Reactions:
Another example of the "schizophrenia" in this forum... a week ago i posted a thread to talk about the old 1000 fleet cap limit... only downvotes... the reason:

ARBITRARY LIMITS ARE BAD!!!!, QQ

A week later someone posts a thread about arbitrary limits, but with more words...

WE LOVE THAT!!!
The old approach to what i've posted was bad because it was arbitrary. You had no way to dynamically set up fleet caps in game. I both demonstrated this (months ago in a dd thread) and explained what was needed at the time for it to be good - the inclusion of variables. Which we now have.

This system is good because it allows for the possibility of other mechanics to interact with it. setting your fleet to have no more than 40% battleships - with zero ways to influence that - IS bad and IS arbitrary.

Setting it to be 40% battleships by default - and making it a number that can be
  • raised (e.g. with special anchroages, taking militarism, certain edicts or tradtions / being the crisis) or
  • lowered (by GC resolutions banning ship use, or via post-humiliation war effects)
is a good thing as it ties an otherwise meaningless variable to something tangible in the game world and gives you the potential to change it through various means. Dont like that the GC slashed your valid battleship limit by 50%? Vote to repeal it or leave and kill everyone.

In the same vein, a hard cap of 1000 naval capacity does nothing except set an artificial celing on large empires. Where is the gameplay in that? The current system lets you build above that and performance is good in 3.3.1 - even though there is later game slowdown, largely due to ship pathing during wars.

The sole reason to dial back naval capacity is for performance. Except, AIs currently never hit 1000 Naval cap, so it's really a player self control issue.
  • The real issue is that the individual sizes of fleets are too large.
  • if you shrank the average fleet size by 50% you'd see a far more substantive boost to performance without ever imposing a hard cap.
    • [not by shrinking fleet capacity, but rather by increasing base costs/upkeep of individual ships - so most empires really only afford half as many vessels as they currently can, with 50% fewer vessels in play, thats a lot less pathing going on.
Do I think that fleet sizes should be reduced? Yes. I dont really enjoy battles with >500 vessels it looks messy, and so many vessels pathing can degrade performance.
But is a hard fleet cap the way to go about it? No. The effects of a hard cap would really only be felt by players minmaxing. most AIs would never get near that.
There are more subtle ways to do this - such as through reducing the overall number of ships in the galaxy by tuning upfront costs & upkeep costs - making it harder, financially, to amass so many ships.
 
Last edited:
  • 4Like
  • 3
  • 3
Reactions:
For example, I'm a firm believer that cruisers should be the "main" endgame combat vessel whilst Battleships ought to be more expensive - and actually even more powerful (and now limited, properly) than they already are - titans even moreso. A titan showing up should be akin to the manifestation of a god of war. But bringing one down should literally slap 10% war exhaustion on to an enemy (maybe scaled based on how many titans they have at the point of destruction).
Other things could help, like
  • lengthening repair times on big ships,
  • giving Battleships and titans inherent +starbase damage bonuses (and all other ships a flat -% starbase damage debuff) - likely hand in hand with a starbase rework.
  • or disabling repairs on captured starbases (any/any without shipyards) OR only repairing at own/allied stations with shipyards or anchorages would also play in to this.
  • increasing war exhaustion cost for losing big ships, further (tbh i dont actually know if this is even a thing as-is, the war screen is fifty shades of broken), whilst increasing their base emergency retreat chance
    • so your small ships will be obliterated more, but capital ships routinely will escape - but might spend literal months in dry-dock - repairs and upgrades should always take less time than rebuilding a ship from scratch but repairing 100% of HP and AP should probably take somewhere in the range of 75% of the days of building a whole new ship. Catching and killing these capital ships will make the war end faster.
Perhaps you know the way repair has worked for a long while: slap on 2% hull/armor regen while docked at a qualified starbase. This means all ships no matter how damaged will be fully repaired by the end of 50 days. I don't think about repair most of the time, but for most of my time playing Stellaris I placed a very high value on % hull/armor regen. It frees up my mindspace finding places to send my fleets for repair. I gravitate toward it wherever I can find it.

I'm not sure what to think now that Regenerative Hull Tissue and similar components give % regen. On one hand, I feel this is what these components should always have done, so they are "fixed" now. Before, just the fact % regen existed rendered them obsolete in my mind. On the other hand, 0.5% is pretty decent considering it's 1/4 of what ships experience while being actively repaired. Will I ever bother with starbase repairs now? Also, large ships recover much more hull/armor per day than small ones, and more often leave combat damaged rather than destroyed.

So lately, repairs to larger ships have gotten faster and more worth it than ever before. I have long found it weird that shipyards have no effect on repairs. Perhaps repairs could work like retrofitting, although iirc that takes some processing power.
 
  • 1
Reactions:
The old approach to what i've posted was bad because it was arbitrary. You had no way to dynamically set up fleet caps in game. I both demonstrated this (months ago in a dd thread) and explained what was needed at the time for it to be good - the inclusion of variables. Which we now have.

This system is good because it allows for the possibility of other mechanics to interact with it. setting your fleet to have no more than 40% battleships - with zero ways to influence that - IS bad and IS arbitrary.

Setting it to be 40% battleships by default - and making it a number that can be
  • raised (e.g. with special anchroages, taking militarism, certain edicts or tradtions / being the crisis) or
  • lowered (by GC resolutions banning ship use, or via post-humiliation war effects)
is a good thing as it ties an otherwise meaningless variable to something tangible in the game world and gives you the potential to change it through various means. Dont like that the GC slashed your valid battleship limit by 50%? Vote to repeal it or leave and kill everyone.

In the same vein, a hard cap of 1000 naval capacity does nothing except set an artificial celing on large empires. Where is the gameplay in that? The current system lets you build above that and performance is good in 3.3.1 - even though there is later game slowdown, largely due to ship pathing during wars.

The sole reason to dial back naval capacity is for performance. Except, AIs currently never hit 1000 Naval cap, so it's really a player self control issue.
  • The real issue is that the individual sizes of fleets are too large.
  • if you shrank the average fleet size by 50% you'd see a far more substantive boost to performance without ever imposing a hard cap.
    • [not by shrinking fleet capacity, but rather by increasing base costs/upkeep of individual ships - so most empires really only afford half as many vessels as they currently can, with 50% fewer vessels in play, thats a lot less pathing going on.
Do I think that fleet sizes should be reduced? Yes. I dont really enjoy battles with >500 vessels it looks messy, and so many vessels pathing can degrade performance.
But is a hard fleet cap the way to go about it? No. The effects of a hard cap would really only be felt by players minmaxing. most AIs would never get near that.
There are more subtle ways to do this - such as through reducing the overall number of ships in the galaxy by tuning upfront costs & upkeep costs - making it harder, financially, to amass so many ships.
Wait, wait i have seen screenshots on this forum showing AIs with fleets above or near 1000 fleetcap... with the NOW improved AI...
The stuff you propose to raise the default 40% battleship ratio would just become no brainers another "must" have meta, so its not really helping that much...

An 1000 fleetcap on the other side would means you cant use your inflated alloy production for 20 massive doomstacks... it doesnt really matter if those doomstacks are 100% battleships or mixed fleets... a high alloy production with a 1000 fleet cap would still mean you have an advantage over your enemies because you could produce more reinforcments...

I dont think that your proposal or mine are great or would solve the actual core problem... i dont like the max 1000 fleetcap very much... but it would help way more.... in a perfect stellaris world... you could have both mechanics... your proposal just looks nicer because it is too easy to go 3000 or even more fleetcap...

If you propose such a thing, what iam not totally oppose of, dont water i down with variables... keep your core max 40% battleships and thats it... every variable allowing to increase or decrease it will be to powerful to ignore thus becoming meta... as i said before...
 
Perhaps you know the way repair has worked for a long while: slap on 2% hull/armor regen while docked at a qualified starbase. This means all ships no matter how damaged will be fully repaired by the end of 50 days. I don't think about repair most of the time, but for most of my time playing Stellaris I placed a very high value on % hull/armor regen. It frees up my mindspace finding places to send my fleets for repair. I gravitate toward it wherever I can find it.

I'm not sure what to think now that Regenerative Hull Tissue and similar components give % regen. On one hand, I feel this is what these components should always have done, so they are "fixed" now. Before, just the fact % regen existed rendered them obsolete in my mind. On the other hand, 0.5% is pretty decent considering it's 1/4 of what ships experience while being actively repaired. Will I ever bother with starbase repairs now? Also, large ships recover much more hull/armor per day than small ones, and more often leave combat damaged rather than destroyed.
I agree with you about repairs being a very important stat. The other one (that's effectively been depreciated in vanilla) is interstellar speed - but thats a topic for another time.

I'm fine with the nano-aura & nanite repair system, the latter requires sacrificing a titan aura - so there's a fairly hefty opportunity cost at play, which is good (and only works on the "current" fleet - a technical limitation of auras means that they either work on the same friendly fleet as the titan, or any enemy fleets the titan is fighting) and it comes late in the game when alpha strikes will obliterate most things, diminishing the importance of repairs to a degree, whilst nanite repair systems use up one of like 10 nanite income in the whole galaxy - so the nanite repair system is a waste in most cases IMO. I usually reserve them for economic things that will indirectly get me more ships.

But, regenerative hull tissue feels more than a little strong, especially if you get it early enough. I used it in an FP game recently, and good god I straight up chain-warred across the galaxy inside of a century losing like 5% of my forces each time, tops, lol.
  • It's basically free and - despite it's name - also repairs armor.
1646581646668.png
1646581721409.png
1646581763059.png

  • I feel like the armor regen on regenerative hull is what makes it so strong, given how cheap and easy it is to get. Were i to change it i'd do something like:
  • Stripping away armor regen from it & buffing hull regen to 1% to compensate
  • Then adding "Regenerative Armor plating I-V", unlocked by having the regenerative tech and corresponding armor plating tier-tech; adding:
    • 50% less armor than usual armor plating - at each tier
    • But adds a flat (not %) armor regen - so it's less aggressively scaling with ship armor, as big ships can pack more regenerative armor modules.
    • using a mix of this and "normal" armor will give you smaller static regen, and higher AP total (but less than going full in to normal armor modules).
That way you can regen hull with that aux mod.
But to regen armor, either sacrifice total armor to get static AP regen, or you go find a starbase for armor repairs.

So lately, repairs to larger ships have gotten faster and more worth it than ever before. I have long found it weird that shipyards have no effect on repairs. Perhaps repairs could work like retrofitting, although iirc that takes some processing power.
Technically everything takes processing power. Those daily regen ticks take processing power too. it's in code so it'll execute much faster than some event script, to the point of being negligible, but the load is still there.

I think setting base repair speed to like 0.01% and then setting it to only allow repairs around shipyard or anchorage starbases (increasing repair % per ship yard) is not a bad idea.
 
  • 5Like
Reactions:
  • I feel like the armor regen on regenerative hull is what makes it so strong, given how cheap and easy it is to get. Were i to change it i'd do something like:
  • Stripping away armor regen from it & buffing hull regen to 1% to compensate
  • Then adding "Regenerative Armor plating I-V", unlocked by having the regenerative tech and corresponding armor plating tier-tech; adding:
    • 50% less armor than usual armor plating - at each tier
    • But adds a flat (not %) armor regen - so it's less aggressively scaling with ship armor, as big ships can pack more regenerative armor modules.
    • using a mix of this and "normal" armor will give you smaller static regen, and higher AP total (but less than going full in to normal armor modules).
That way you can regen hull with that aux mod.
But to regen armor, either sacrifice total armor to get static AP regen, or you go find a starbase for armor repairs.
I think I'd make the Regenerating Armor utility components not require regenerative hull tissue tech, but require the living metal resource. That pushes them later in the game (T3 to T5) and provides another use for a very under-utilized resource.

Also if it's possible to implement the distinction, I think it'd make sense for regenerating armor components to only regenerate armor up to the amount provided by those components, so if you're using a mix of regenerating and non-regenerating you can't get a full heal.
 
  • 3Like
Reactions:
a technical limitation of auras means that they either work on the same friendly fleet as the titan, or any enemy fleets the titan is fighting
Are you sure about the "technical" part of the limitation? To me it seems like an intentional design.

After all it works fine with auras from starbases and Juggernauts (aka. mobile starbases)
 
Are you sure about the "technical" part of the limitation? To me it seems like an intentional design.

After all it works fine with auras from starbases and Juggernauts (aka. mobile starbases)
I meant Technical in that it cant be circumvented via modding, its a limitation in how it's been implemented, intentional or not doesn't really factor in to it. Yes starbase defensive auras work a little differently - likely because the stations "above" scope is the system, whilst a ships "above" scope is its fleet (also, if you go back to much older game versions it was possible to have neutral auras, affecting neutral factions - was interesting blocking neutrals with FTL inhibitors - that doesnt seem to work anymore) Besides, repair auras aren't available for juggernauts, or starbases, in vanilla to my knowledge.
 
  • 1
Reactions:
The old approach to what i've posted was bad because it was arbitrary. You had no way to dynamically set up fleet caps in game. I both demonstrated this (months ago in a dd thread) and explained what was needed at the time for it to be good - the inclusion of variables. Which we now have.

This system is good because it allows for the possibility of other mechanics to interact with it. setting your fleet to have no more than 40% battleships - with zero ways to influence that - IS bad and IS arbitrary.

Setting it to be 40% battleships by default - and making it a number that can be
  • raised (e.g. with special anchroages, taking militarism, certain edicts or tradtions / being the crisis) or
  • lowered (by GC resolutions banning ship use, or via post-humiliation war effects)
is a good thing as it ties an otherwise meaningless variable to something tangible in the game world and gives you the potential to change it through various means. Dont like that the GC slashed your valid battleship limit by 50%? Vote to repeal it or leave and kill everyone.
Random order reponses.

GC decisions are designed to be ignored. If I have fifty battleships and suddenly its not legal to have that many I will just ignore it, the only realistic penalty is loss of diplomatic standing. Let alone anyone who is not in the GC is wholly unbound by its decisions. After all why would a FP or DE care what the GC states nor how could it affect them anyway?

Limiting how many you can have in your navy doesn't do much. You can still mono fleet it and nearly close to it. Fleet composition needs work and this would likely involve revamping what each hull size can carry and minimum ranges based on weapon size. The restrictions on what a ship could carry would be to eliminate torpedo corvettes whereas the restriction on ranges lets smaller ships get close enough to where the big ships cannot engage them with their larger or spinal mount weapons.

To take that idea further we need to decide what roles each ship class has. This would require changing section compositions. I would split (G) in T and M - Torpedoes simply being too large for most ships.
Corvettes - General purpose light weaponry and missiles; no heavy weapons like torpedoes
Destroyers - General purpose but suited for point defense emplacements.
Cruisers - the defacto carrier or missile boat; have hangar sections in all three spots with a carrier section available. Can mount T in similar numbers to Hangars
Battleships - nearly all sections favor L/G weapons and sections with support of small and medium don't get enough slots to make them always a good choice
Titans - Auras, Spinal, etc.

So now that we have roles what about supporting them.

Simply limit repair to bases with anchorages and or shipyards and require at least two of these buildings to repair cruisers and four anything larger. Also require a Crew Quarter building to support crews.

Which brings me to bases, we should remove the capture of bases from the game. When you take one down its reduced to Outpost. I am not likely to know the difference between a Blorgs food service ports or their waste disposal system (exactly what hose attaches WHERE) and is that button for the lights or depressurize the hull.

By reducing bases to outposts it makes deep penetrations into enemy territory more time consuming and in total war scenarios you will have to build bases in new territory to ease your efforts or provide a healthy stream of replacements.


I could really care less if you make fleets of all battleships and it would not matter if their weapons had a minimum range to where corvettes, destroyers, and fighters, could get to and effectively be immune unless you had your own. At the same time I really think Torpedoes need to be made the equivalent of a Large weapon slot so that we don't have this silliness of torp vettes
 
The sole reason to dial back naval capacity is for performance. Except, AIs currently never hit 1000 Naval cap, so it's really a player self control issue.
  • The real issue is that the individual sizes of fleets are too large.
  • if you shrank the average fleet size by 50% you'd see a far more substantive boost to performance without ever imposing a hard cap.
    • [not by shrinking fleet capacity, but rather by increasing base costs/upkeep of individual ships - so most empires really only afford half as many vessels as they currently can, with 50% fewer vessels in play, thats a lot less pathing going on.
Do I think that fleet sizes should be reduced? Yes. I dont really enjoy battles with >500 vessels it looks messy, and so many vessels pathing can degrade performance.
But is a hard fleet cap the way to go about it? No. The effects of a hard cap would really only be felt by players minmaxing. most AIs would never get near that.
There are more subtle ways to do this - such as through reducing the overall number of ships in the galaxy by tuning upfront costs & upkeep costs - making it harder, financially, to amass so many ships.
I briefly mentioned this in an earlier thread, but with the concern expressed above, could a shift to a more minimalist fleet structure deliver the kind of performance-hit reduction that is being sought? By minimalist fleet structure, I mean something where fleets and their squadron subsets are the moving units, and individual ships are more like component pieces of the units and have less customization. I don't really have much details mapped out for this idea - yet! - and I know that the ship customization and faux-RTS fleet control are two big things that have drawn players to Stellaris and kept them here. But if that level of detail is causing issues big enough to degrade the experience for a significant portion of the player base, then maybe a look at this type of a solution might have merit.
 
I just want to bring up one thing, sometimes I build only battleship because it’s cost efficient and computer friendly. If you force people into mixed flee, you have to think about performance.