Help me make biters more impactful

Don't know how to use a machine? Looking for efficient setups? Stuck in a mission?
Post Reply
Kingdud
Long Handed Inserter
Long Handed Inserter
Posts: 76
Joined: Sat Dec 16, 2017 3:23 am
Contact:

Help me make biters more impactful

Post by Kingdud »

So here's what I'm after: I want the biter bases around my base to be capable of absorbing *all* of the pollution my factory outputs, and I want them to send groups of bugs against my walls as fast as my pollution cloud permits.

So, for example, let's say my actual base defense perimeter is 3x3 chunks. I will have a 1 chunk buffer (so 4x4 total area) of no-mans land thanks to artillery. From there, I'd like the pollution cloud to never grow bigger than 6x6 or 7x7 (assuming no water) because the 1-2 chunks deep of biter spawners are capable of spawning waves of biters so quickly that I am facing a constant stream of bugs trying to get into my base. I'm talking about a base producing millions of pollution per minute. A Behemoth Biter costs 400 pollution to join the attack, and a spiter takes 200. So at 1 million pollution/min, I expect no less than 3,334 bugs/minute to stream into my defenses. Suddenly, the power draw and ammo production of/for my defenses becomes an actual concern.

I have already tried to accomplish this, but I hit a few roadblocks and I'd love to know what, if anything, can be done to overcome them:
  1. The easiest tweak is to change the spitter/biter spawners to only produce behemoth biters/spitters. This is easily done via mod.

    Code: Select all

    data.raw["unit-spawner"]["biter-spawner"].result_units[2] = { "medium-biter", {{0.2,0}, {0.6,0.3}, {0.7,0.1}, {1,0}} }
    data.raw["unit-spawner"]["biter-spawner"].result_units[3] = { "big-biter", {{0.5,0}, {1,0}} }
    data.raw["unit-spawner"]["biter-spawner"].result_units[4] = { "behemoth-biter", {{0.9,0}, {1,1}} }
    data.raw["unit-spawner"]["spitter-spawner"].result_units[3] = { "medium-spitter", {{0.4,0}, {0.7,0.3}, {0.9,0.1}, {1,0}} }
    data.raw["unit-spawner"]["spitter-spawner"].result_units[4] = { "big-spitter", {{0.5,0}, {1,0}} }
    data.raw["unit-spawner"]["spitter-spawner"].result_units[5] = { "behemoth-spitter", {{0.9,0}, {1,1}} }
  2. The next thing I noticed is that, despite there being ample pollution, the spawners don't spawn very often. Why? Oh, more settings! (these make them spawn one biter/spitter every 6 seconds, and buffer enough pollution to spawn 4 biters or 8 spitters)

    Code: Select all

    data.raw["unit-spawner"]["biter-spawner"].spawning_cooldown = {360,1}
    data.raw["unit-spawner"]["biter-spawner"].pollution_absorption_absolute = 1600
    data.raw["unit-spawner"]["spitter-spawner"].spawning_cooldown = {360,1}
    data.raw["unit-spawner"]["spitter-spawner"].pollution_absorption_absolute = 1600
  3. I next noticed that, even still, biters are not spawning as fast as they should. The reason why, I eventually realized, is that chunks don't actually hold enough pollution to keep up with biter spawning production, so some map tweaks are needed! These make the chunks (able?) to hold more pollution, and spread that pollution out faster.

    Code: Select all

    data.raw["map-settings"]["map-settings"].pollution.diffusion_ratio = 0.25
    data.raw["map-settings"]["map-settings"].pollution.expected_max_per_chunk = 3200
  4. Biters still won't spawn as fast as I think they should, but i chalked that up to the game deciding that only one spanwer on the map gets to spawn a biter on any given interval, for some reason? I'm fuzzy on that theory and moved on to the next problem: max_gathering_unit_groups. It defaults to 30. That means, at any point in time, there can be 30 groups on the map in any state (forming, moving to attack, attacking). If a single biter glitches out and goes idle outside of your defenses, then that number drops to 29, because that single biter counts as one of those 30 group slots. The problem with increasing this is that it DRAMATICALLY impacts UPS. As in, setting this to from 30 (default) to 50 will cause your entity update time to shoot up into the 100s of ms for the 99-th percentile.
  5. The second limit I see is max_group_gathering_time. It defaults to 36000, which is 10 minutes. (It's in ticks). You'd think "oh, the forming group hit max_unit_group_size (200) in 2 minutes, the wave will go attack early!" but it won't, or at least, appears not to. Rather, the group will sit there idle until the pre-determined wait time for their attack passes, then they will move out; further putting pressure on that 30 group limit. But, if I set this value too low, then you don't end up with max_unit_group_size units in your group, due to spawners not spawning units as fast as they should, for some reason. Don't forget to tweak min time too, but it also can't be too low.
  6. The third limit I found is max_unit_group_size. The number of biters spawned and 'alive' for the entity update is roughly max_unit_group_size * max_gathering_unit_groups + (data.raw["unit-spawner"]["spitter-spawner"].max_friends_around_to_spawn * # of spitter-spawners on map) + (data.raw["unit-spawner"]["biter-spawner"].max_friends_around_to_spawn * # of biter spawners on map). Once you go much above 10,000 or so biters, Factorio falls apart pretty quickly. I'm not sure why. Well, apart from the silly number of biters.
  7. The next thing I tried to tweak was how fast the groups move. If you make their move speed faster than default, they gain the ability to simply run right through your defenses. If you try to set max_member_slowdown_when_ahead too high, groups just string out when they have to cover a lot of ground to your base and never form that 'death ball' that actually breaks defenses. The best thing you can do is give units that fall behind a MASSIVE speed boost to catch up.

    Code: Select all

    data.raw["map-settings"]["map-settings"].unit_group.max_member_slowdown_when_ahead = .8
    data.raw["map-settings"]["map-settings"].unit_group.max_group_slowdown_factor = 1
    data.raw["map-settings"]["map-settings"].unit_group.max_member_speedup_when_behind = 7
I did try a few other things.

Code: Select all

max_wait_time_for_late_members, 
path_finder.long_cache_size
path_finder.short_cache_size
max_friends_around_to_spawn
max_count_of_owned_units
I've basically hit a wall where I can't seem to do anything to make that constant stream (or massive deathballs) of biters attacking my base, at a rate where the spawners are completely consuming my pollution cloud. Is this something that Factorio will simply never be able to do? Is Rampant or some other enemy AI mod the answer? Is there a way to have biters on a map with massive pollution output, but still not have UPS go to complete crap / at least have the game not stutter? I'm down to try a lot of things.

Edit: I'm also ok with settings that would make biter bases/worms spawn much faster, meaning I had to have artillery ammo production on lock to keep them at bay. Basically, I don't really care *how* the pollution gets spent, so long as it gets spent. Skulls for the skull throne! I mean, er. The one thing I'm not ok with is biters that have a million HP / move super fast / etc. The current behemoth biters and spitters are properly designed. I just want their attack logic upgraded a bit, or ...something, so that the pollution gets spent without having to resort to 1 million HP bugs.

User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1121
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: Help me make biters more impactful

Post by NotRexButCaesar »

Kingdud wrote:
Sun Aug 30, 2020 1:11 am
Biters still won't spawn as fast as I think they should, but i chalked that up to the game deciding that only one spanwer on the map gets to spawn a biter on any given interval, for some reason?
This was mentioned in a friday facts, and is true (there was a bugfix where only one spawner was spawning all the biters). The devs basically fixed what you are trying to do because it was a bug. I'm not sure how to do what you want, as the devs specifically didn't want that to happen.
—Crevez, chiens, si vous n'étes pas contents!

Post Reply

Return to “Gameplay Help”