Evolution Reduction via Destruction


Have you ever wondered how distroying alien spawners ended up helping the aliens evolve? Or have you ever wanted a way to reduce the alien evolution factor? Or do you sometimes want to be left in peace to build your factories, but find peaceful mode a little too easy? This MOD solves these problems :) Destroying alien bases will reduce alien evolution This MOD is designed to introduce a new difficulty level between Peaceful and Normal

Tweaks
8 years ago
0.13 - 0.14
13

g Great Idea

8 years ago
(updated 8 years ago)

Just Wanted to say thanks, and give some suggestions for mod combinations to anyone reading this.

For a while i wanted to play the marathon mod using bobs mods as a base but unless peaceful mode was enabled after a short while fighting the space bugs becomes similar than throwing rocks at a tank. This mod allows to balance the extra complexity that other mods add with reasonable chance to survive without your head being chewed off by angry worms.

Obviously peaceful mode would also fix this problem but it also removes a big part of the game, there is no longer a need to manage your pollution and to build defenses.

8 years ago

I am glad that you appreciate it.
I am in the same boat for me peaceful mode is just boring, but many times I just want to be left alone to debug my circuit networks.

I would be glad to hear any feed back an ideas that you may have on how to improve the mod, as atm all the values I have entered are just a the get this working stage and are probably not balanced at all (unless I am really good at guessing) :P.

I have included a config.lua file which should make altering the hard values easy, however I have hard coded the evolution reduction to be less effective the greater the evolution factor is, this makes it easier to reduce the evolution factor in the early game but will require significant alien massacres (attempted alien genocide) to reduce the evolution factor late game.

I was thinking of attempting to modify this so that it was based on the technology level some how, so that it would be easy to reduce the evolution factor when you don't have much tech but, when you have power armor etc and able to wipe out entire alien bases in seconds the evolution factor would not be as greatly affected.

8 years ago
(updated 8 years ago)

I think that the easiest way of doing it would be by using the spawner kill count, i havent done any factorio modding but the value should be available as its displayed in EVO GUI module.

This is just a guess but probably using some sort of formula like this (the code will be incorrect, this is just to show the idea):

baseValue = 0.0002 (just a guess)
spawnersKilled = factorio.spawnersKill
ratio = 1/((spawnersKilled/400)+1) (+1 is to prevent division by 0 )
reductionOnKill = baseValue * ratio

this would result into the following function :
killCount => ratio

100 => 0.8
200 => 0.66
300 => 0.57
...........
1000 => 0.28
2000 => 0.16
3000 => 0.11

basically at the beginning the ratio is relatively high but it drops fast and the more you kill the lower it is but the slower it drops. changing the 400 to 100 would result in much faster drop and increasing it would result in a slower drop so that value could be something set in the configs so anyone can figure out their own

i think this would work better than the approach to reduce the reduction based on the current evo factor. as this method would reduce it the more its features are used. if its based on the current evo factor and the reduction is the highest on low evo levels then keeping it low all the time would result in biters never evolving at all, on the other hand if you tried to play passively at the beginning and didnt kill their spawners then by the time you start killing them it would change very little.

Regarding the game lore i think that it makes sense to assume that the biters are mutating thanks to all the pollution that is introduced in their environment. and those who are closer get exposed more so if you kill them off the rest will not get as much exposure and will evolve more slowly. however unlike in the game in reality the pollution cant really vanish. its simply spreading through the whole planet and while its not as high as near the base it still makes the biter to sometimes mutate anyway so killing off the ones that are close to the base gets less effective.
Also the biters usually send their young to make their own nest and it makes sense that sometimes the ones that were born close to the base move further away and are able to spread their mutations (evolution level )

Let me know what you think about the idea :)

8 years ago
(updated 8 years ago)

Another idea would be to keep it based on current evolution level (the higher the evolution level the lover the effect ) but rather than reducing the evo level stop it increasing for some time. so if you kill a spawner for the next 2 minutes the evo level stays the same. and if you kill 10 spawners then the level stays the same for 10 minutes etc. sooner or later you would have to do some actual work in the factory so the evo level would inevitably increase and the higher it gets the less of a timeout you get by killing them.

from the lore point of view it also makes sense. killing the more exposed creatures stops the spread of new mutations but it would not really make them loose the ones that are already spread through their population. I think that both ideas could work. but both require some value in the config to tweek the difficulty as based on the mods you are using this mod could be anything starting from overpowered to not having any impact at all. maybe you can make 2 mods :)

8 years ago

third idea would be to just change this line in your mod
altered_evolution = (current_evolution - (reduction_factor * (1- current_evolution)))
to
altered_evolution = (current_evolution - (reduction_factor * (1- current_evolution)))

this would make the evolution drop from kills almost non existant at the beginning but significant on decent evolution levels.

In my experience the biters get really dangerous when evo is over 0.5 so if i just killed them while they are less than that i could keep getting the best reduction benefits and keep them under 0.5 indefinitely. if on the other hand i either forgot to kill them and the evo got too high it would probably game over for me as even if i managed to kill the now much stronger enemies it would give little benefits.

this suggestion would however be less lore friendly as i dont see any scenario where polluting the world more rather than less would reduce the mutations of biter species as a whole by just killing off some of them

8 years ago
(updated 8 years ago)

for compatibility with other mods what you could do is to check for the most popular and most game changing like bobs or marathon or space extension (currently i haven't played with other that would impact the difficulty drastically but any mods that adds lots of extra complexity qualifies)

and if they exist then modify the base value with a modComplexityRatio. while anyone can change the config it would probably help if a pre set rules for the most common mods would exit and people would not need to wonder is 0.0002 the right value for their setup

for vanilla i dont even see why this mod would be required unless played with really low resource settings. but with my setup where i use bobs(complexity ) marathon (bandwidth problems, far more resources required to build the same things than without it) and pace extension (simply insane research requirements to finish the game) i would need to have control of at least 10 times the area i would need in vanilla. Before i started this palythrough i was considering peaceful mode but luckily saw your mod

8 years ago
(updated 8 years ago)

had another idea for a mod. designed for people who want to make their own lives difficult and in the end be proud that they managed it somehow. :D not sure how much work is required but the idea would be to add weight to items and add it as a limiting factor as well as the already existing inventory space factor. basically no more carrying around 10 tons of iron plates just for exercise. some sort of weight would be required for most items and im not really sure how it would be calculated. could be static for all basic things like ores and plates and a fraction of the total number of ingredients for something that requires multiple parts. probably here is an opportunity for new research to increase the carry capacity. and it would also increase with various power armors.

there should also be a max item weight so you wouldn`t need to use a train to transport a single item.

but this would force people to do things more automatically than carrying around full inventory of ores like i usually do :D
basically more complicated supply chains.
It would be less useful after the supply drones are built but maybe a maximum weight limit could be set for each level of drone so that a better one would also have a higher weight capacity.
you could go even further and reduce the move speed after lets say 75% of the carry limit is reached and do the same for the drones.

i have absolutely no idea if this is possible and if it wouldnt just make the game freeze due to too much calculations. but its a thought. :)

8 years ago

Like you said, it is very easy to keep the evolution factor low, while it is low and you have the tech to annihilate the aliens, hence the reason that I want to include a tech modifier into the equation

Thanks for your ideas, I will definitely consider the spawner kill counter thing too. but I would like a way where its effects can be reduced to an interval between 0.0 and 1.0 (0-1) but as there potentially could be an endless kill count, I am currently unsure on how to do this.

Then do the same with the technology to generate another interval (0-1),

Evolution factor is already an interval of 0-1

The evolution factor could then be reduced by the product of the reduction factor and the average of the three intervals subtracted from 1.

8 years ago

I have read a few posts and ideas about a weight limit being implemented on Factorio, however other than just reducing the players speed or dropping shit all over the floor, I really wouldn't know a good way of doing it, especially when someone was to order 5000 steel plate via logistics robots etc.

8 years ago

i think that the main problem with the technology tree approach would be the fact that all players use mods, if they found yours then its almost certain they had found other mods as well and most mods add tech to the tree, you could just count the numer of tech and divide 100 by that number to get the overall value of a single tech but it would not really be fair as mod might add a tech for 10 red science or like all techs from the space expansion where a single tech cost 6000 of all science packs or more.

the reason i suggested the kill count was that this is directly related to your mod. every time you destroy a base you reduce the evo factor and the next time you destroy a base you would reduce the evo factor a bit less. etc. so you have to destroy more and more bases to keep reducing the evo factor at an equal rate and sooner or later destroying bases will give such small reductions that it will not be worth it just for the sake of reducing the evo factor. you have to build your base at some point anyway.

Thanks for your ideas, I will definitely consider the spawner kill counter thing too. but I would like a way where its effects can be reduced to an interval between 0.0 and 1.0 (0-1) but as there potentially could be an endless kill count, I am currently unsure on how to do this.

ratio = 1/((spawnersKilled/400)+1) this would do just that (the 400 i think is too high though )

when spawnersKilled = 0 the formula would be 1/((0/400) +1) = 1/1 so the full base value would be used for reduction

if spawnersKilled is 400000 (you would be the Hitler for space bugs ) and the result would be 1/(400000/400)+1 = 1/1001 = 0.001 and if the reduce base is multiplied by 0.001 then the actual reduction for that last kill would be too tiny to notice

8 years ago

yer I get your point with the technology factor, some form of weighting system would have to come into play before it could be implemented so I will put that on the back burner atm.

The kill count thing has been considered and you have convinced me that it is the best way to go atm.

However this needs to be done carefully as I don't wish accidentally encode a time expiration on the MOD. ie 400 is way to high for early game like you said, however it could also be considered way too low for extended play games.

ie my long term game that I started when v0.12.0 came out has nearly 300+ running hours, now I don't know the exact kill count but it is probably something similar to WWII.

I wouldn't consider myself particularly pleasant towards the aliens, however I wouldn't consider myself as a Hitler either LOL.

But I think you are on to something with the Hitler statement!

IMO some one that has killed X number of aliens in a 10 hour game should be penalized more than some one that has killed X number of aliens in a 20 or 100+ hour game.
What do you think about this?

I think the kill count needs to be calculated on a logarithmic scale and in a timed manner

something where killing lots in quick succession will gradually reduce the reduction factor out to a minimum level, but over time these effects will wear off.

8 years ago

i think your idea is a good options, its also a bit more complex, im not sure how to do it exactly , basically we dont get statistical data about the spawner kills based on time, we only get the total number since the beginning. im not sure how the game storage works but if it allows to store an array of variables then what we can do is add an array that stores kill count for the current day when the event that changes this day to the next is called(if there is such an event) or alternatively cauculate this on number of ticks per day and then divide total game ticks by that number.

so we would be able to get how many kills were made during the last period(game day)

there is a problem with this though. you would have days when you kill 50 bases and then days when you kill none as you are building stuff, and i think that this could mess things up a bit.

an alternative approach and a more simple one would be to use a modifier for this based on total time elapsed.

for example 2 playthroughs

1) 25 days have passed and i killed 150 bases
2) 10 days have passed and i killed 10 bases

in the config we set a base kill count per day lets say 3

so we calculate what is the allowed kill count for that duration
1) 103 = 30
2) 25
3 = 75

we calculate if the actual kill count is higher
1) 10 - 30 = -20
2)150 -75 = 75
if this value is < 0 we use the full base rate
if its > 0 we calculate the ratio in this case 1/(75/3) (allowed per day / total excess kills )
ALLOWED 3
EXCESS 10 20 30 50 100
ALLOWED/EXCESS 3.333333333 6.666666667 10 16.66666667 33.33333333
RATIO 0.3 0.15 0.1 0.06 0.03

and we apply the ratio to the base reduction value.

this would mean that if you kill more than the allowed value per dayu on average you get less reduction if for the first 10 days you dont kill anything at all and then do biter genocide for the first 30 biter bases you will get good reduction but after that the reduction will go down fast. then if you were peaceful for a while and let time go by you would be able to reduce the evo level again

its also possible to do the allowed per day dynamically. basically increase it based on the days passed , so it starts with 3 (as in previous example just a random value to show the idea) so the formula goes like base allowed + some number(0.02)*daysPassed so after 20 days the calculations would assume that you are allowed 4 kills per day and after 100 days that you are allowed to kill 8 per day on average

this would make waiting before more kills more effective , the ratio would climb back up faster if you have done excessive killing in the past

8 years ago

i think that for the formulas you should use google spreadsheets or excell to set the base values and then all the calculations for both short and long durations and different amounts of enemies killed so you dont have to do an actually play-through to realise that the formulas should be different

8 years ago

I just completed another MOD called Aussy Bush for regrowing burnt/destroyed Forrest and giving the player an option to manually plant tree saplings.

Any way it uses FIFO stacks, so I have become familiar with how they work in Factorio, so storing and retrieving the information on how the player has dealt with the aliens over the last few (how ever many you want) days should not be a problem.

So we wont even really need to access the Factorio statistics at all we just make our own.

On kills we just record the event and make the calculation for the evolution reduction once per day.

Day length in ticks shouldn't be too hard to figure out and we can just put that as a variable in config anyway.

Now we just need to figure out the hard part, what should be included in the calculation as we have opened up the possibility to include the bugs also along with the worms and bases.

I am not sure about putting a hard cap on the number of bases per day, as that would enforce the players behavior to need to go out hunting for their quota each day.

Sometimes I like just spending entire play sessions just building and other play sessions, I just want to kill things

8 years ago

I was thinking, even though you might not want to directly reduce the evolution factor when killing bugs, the number of bugs killed could be a good indicator of the current situation.

Say the majority of the bugs killed, have been killed by turrets it may be a good indicator that the bugs are attacking your base frequently.
But if the major bugs killed is by the player then it could indicate that the player is attacking the bugs.

What about a factor that took this into account?

7 years ago

There seems to be a mod that limits the evolution via research packs available.

New response