The Worms are natural allies of Biters and Spitters and will attack you if you get close enough. They act like static turrets and will not follow you, but due to much greater range, in comparison to other enemies, will be able to inflict damage with out leaving the nest. However, their static nature does render them more vulnerable to certain attacks.
Like any other enemy, worms come in 3 sizes, their power increasing with size. Unlike Biters and Spitters, Big and Medium Worms can be created directly after start of a new game, and will not always spawn near spawners. Their appearance is not dependent on time. (see http://www.factorioforums.com/forum/viewtopic.php?f=23&t=6454)
Worms deal acid damage.
The game evolution factor is a global variable that determines what kind of biters will be spawned. You can check the variable in the dev console:
It goes from 0 (not evolved at all) to 1 (maximal evolution). At the moment the evolution factor can only increase. This evolution factor is increased by three kinds of events:
- The passage of time very slightly increases the evolution factor.
- The production of pollution (globally) increases the evolution factor.
- Destroying the enemy spawners significantly increases the evolution factor.
All these values are set in mapsettings. There they can also be changed / modded.
Current (0.9.1) default settings are:
-- percentual increase in the evolution factor for 60 ticks (game second) game.player.print(game.mapsettings.enemy_evolution.time_factor
-- percentual increase in the evolution factor for 1000 Pollution Units game.player.print(game.mapsettings.enemy_evolution.pollution_factor)
-- percentual increase in the evolution factor for every destroyed enemy spawner game.player.print(game.mapsettings.enemy_evolution.destroy_factor)
The percentages are applied on the base of (1 - current_evolution_factor). So for instance destroying the enemy spawner in the beginning of the game results in increase of evolution factor by 0.005 (half a percent) while doing this when the evolution factor is 0.5 the increase is only 0.0025 (quarter a percent).
As of 0.9.1 the biter spawning is done probabilistically based on the current evolution. Lets imagine a wheel - the "spawning wheel". We will be slicing that wheel as a cake. Small biters take the first 0.3 part of the wheel, medium ones the middle 0.3 part and big biters take the last 0.4. When a biter is about to be spawned the random point on the wheel is selected limited by the current evolution. So in theory while the evolution is below 0.3 there should be only small biters, then slowly medium ones will enter and in the end the big ones. The composition of the biter animation in the end should be 0.3-0.3-0.4. There is one more factor called the spawn_shift - this is a mechanism when the further away from the starting location the more the "rolling of the wheel" is shifted towards one. That means that if the shift is 0.2 for instance that at the time when evolution factor is 0.25 the result for spawning is actually 0.2 + 0.25 = 0.45 and a medium biter might be spawned.
Besides choosing what kind of biter will be spawned the evolution also influences the spawning interval. As of 0.9.1 this interval (spawning_cooldown in the enemy-spawner definition) is interpolated between 360 (0 evolution) and 150 (1 evolution) ticks.
All the values for the spawner (distribution of the biters based on evolution, the spawning shift, spawning_cooldown, etc.) can be modded from the data.
Sometimes a small group of biters will leave their base to create a new base. This group will search for a suitable spot that's about 3 chunks away from existing biter bases and 3 chunks away from any of your buildings. Once they have found a suitable spot the group of biters dies and forms a new base. This new base will first be very small (about one spawner and a few worms) but will get some additional spawners within a small area as time passes. This base-wide expansion is somehow limited (the blog says something about 7, but that doesn't seem to match reality in some cases).