Difference between revisions of "Monster Generation"
From DoomRL Wiki
(added arachnotron max level) |
Omega Tyrant (Talk | contribs) (Updated/corrected values and reordered based on minimum depth) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
Each monster has a minimum dlevel, a maximum dlevel, a weight, and a danger rating. Minimum level and maximum level determine whether the monster can appear on a floor at all. Weight indicates relative likelihood of appearing. Danger indicates (inversely) how many can be generated. | Each monster has a minimum dlevel, a maximum dlevel, a weight, and a danger rating. Minimum level and maximum level determine whether the monster can appear on a floor at all. Weight indicates relative likelihood of appearing. Danger indicates (inversely) how many can be generated. | ||
+ | |||
+ | The displayed minimum level is valid for ITYTD and HNTR, and it is smaller at higher difficulties (-3 for HMP and -6 for UV/N!), which means that tougher monsters start appearing earlier in the game. Other values are unaffected by difficulty. | ||
For the more all enemies that can normally spawn, here are the values. | For the more all enemies that can normally spawn, here are the values. | ||
Line 13: | Line 15: | ||
|style="text-align: left; padding-left: 1ex"|'''Danger''' | |style="text-align: left; padding-left: 1ex"|'''Danger''' | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Former | + | |style="text-align: left"|[[Former human]] |
|0 | |0 | ||
|12 | |12 | ||
Line 19: | Line 21: | ||
|1 | |1 | ||
|- | |- | ||
− | |style="text-align: left"|Former | + | |style="text-align: left"|[[Former sergeant]] |
|2 | |2 | ||
|15 | |15 | ||
Line 25: | Line 27: | ||
|2 | |2 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Former | + | |style="text-align: left"|[[Former captain]] |
− | | | + | |5 |
|15 | |15 | ||
|10 | |10 | ||
|3 | |3 | ||
|- | |- | ||
− | |style="text-align: left"|Imp | + | |style="text-align: left"|[[Imp]] |
|0 | |0 | ||
|17 | |17 | ||
Line 37: | Line 39: | ||
|2 | |2 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Demon | + | |style="text-align: left"|[[Demon]] |
|4 | |4 | ||
|20 | |20 | ||
Line 43: | Line 45: | ||
|4 | |4 | ||
|- | |- | ||
− | |style="text-align: left"|Lost | + | |style="text-align: left"|[[Lost soul]] |
|6 | |6 | ||
|16 | |16 | ||
Line 49: | Line 51: | ||
|3 | |3 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Hell | + | |style="text-align: left"|[[Hell knight]] |
|9 | |9 | ||
|15 | |15 | ||
Line 55: | Line 57: | ||
|6 | |6 | ||
|- | |- | ||
− | |style="text-align: left"|Cacodemon | + | |style="text-align: left"|[[Cacodemon]] |
|10 | |10 | ||
|50 | |50 | ||
Line 61: | Line 63: | ||
|6 | |6 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"| | + | |style="text-align: left"|[[Pain elemental]] |
− | | | + | |10 |
− | | | + | |40 |
+ | |4 | ||
|6 | |6 | ||
− | |||
|- | |- | ||
− | |style="text-align: left"| | + | |style="text-align: left"|[[Former commando]] |
|12 | |12 | ||
− | | | + | |21 |
− | + | ||
|6 | |6 | ||
+ | |7 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Baron of | + | |style="text-align: left"|[[Baron of hell]] |
|12 | |12 | ||
|N/A | |N/A | ||
Line 79: | Line 81: | ||
|10 | |10 | ||
|- | |- | ||
− | |style="text-align: left"|Arachnotron | + | |style="text-align: left"|[[Arachnotron]] |
|13 | |13 | ||
|50 | |50 | ||
Line 85: | Line 87: | ||
|9 | |9 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Revenant | + | |style="text-align: left"|[[Revenant]] |
|13 | |13 | ||
|N/A | |N/A | ||
Line 91: | Line 93: | ||
|12 | |12 | ||
|- | |- | ||
− | |style="text-align: left"|Mancubus | + | |style="text-align: left"|[[Mancubus]] |
|15 | |15 | ||
|N/A | |N/A | ||
Line 97: | Line 99: | ||
|12 | |12 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Arch-vile | + | |style="text-align: left"|[[Arch-vile]] |
|16 | |16 | ||
|N/A | |N/A | ||
Line 103: | Line 105: | ||
|14 | |14 | ||
|- | |- | ||
− | |style="text-align: left"|Nightmare | + | |style="text-align: left"|[[Nightmare imp]] |
|30 | |30 | ||
|60 | |60 | ||
Line 109: | Line 111: | ||
|6 | |6 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"| | + | |style="text-align: left"|[[Elite former human]] |
|40 | |40 | ||
− | | | + | |80 |
+ | |4 | ||
|6 | |6 | ||
− | |||
|- | |- | ||
− | |style="text-align: left"|Nightmare | + | |style="text-align: left"|[[Nightmare demon]] |
+ | |40 | ||
+ | |N/A | ||
+ | |6 | ||
+ | |8 | ||
+ | |- style="background: #333;" | ||
+ | |style="text-align: left"|[[Nightmare cacodemon]] | ||
|51 | |51 | ||
|N/A | |N/A | ||
|6 | |6 | ||
|10 | |10 | ||
− | |- | + | |- |
− | |style="text-align: left"|Nightmare | + | |style="text-align: left"|[[Nightmare arachnotron]] |
|50 | |50 | ||
|N/A | |N/A | ||
|4 | |4 | ||
|12 | |12 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Bruiser | + | |style="text-align: left"|[[Bruiser brother]] |
|50 | |50 | ||
|N/A | |N/A | ||
Line 139: | Line 141: | ||
|14 | |14 | ||
|- | |- | ||
− | |style="text-align: left"|Lava | + | |style="text-align: left"|[[Elite former sergeant]] |
+ | |60 | ||
+ | |90 | ||
+ | |3 | ||
+ | |8 | ||
+ | |- style="background: #333;" | ||
+ | |style="text-align: left"|[[Elite former captain]] | ||
+ | |70 | ||
+ | |N/A | ||
+ | |3 | ||
+ | |10 | ||
+ | |- | ||
+ | |style="text-align: left"|[[Lava elemental]] | ||
|70 | |70 | ||
|N/A | |N/A | ||
Line 145: | Line 159: | ||
|16 | |16 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|Shambler | + | |style="text-align: left"|[[Shambler]] |
|80 | |80 | ||
|N/A | |N/A | ||
Line 151: | Line 165: | ||
|14 | |14 | ||
|- | |- | ||
− | |style="text-align: left"|Agony | + | |style="text-align: left"|[[Elite former commando]] |
+ | |80 | ||
+ | |N/A | ||
+ | |2 | ||
+ | |14 | ||
+ | |- style="background: #333;" | ||
+ | |style="text-align: left"|[[Agony elemental]] | ||
|80 | |80 | ||
|N/A | |N/A | ||
|1 | |1 | ||
|20 | |20 | ||
− | |- | + | |- |
− | |style="text-align: left"|Cyberdemon | + | |style="text-align: left"|[[Cyberdemon]] |
|80 | |80 | ||
|N/A | |N/A | ||
|1 | |1 | ||
|30 | |30 | ||
+ | |- style="background: #333;" | ||
+ | |style="text-align: left"|[[Nightmare arch-vile]] | ||
+ | |90 | ||
+ | |N/A | ||
+ | |3 | ||
+ | |20 | ||
|} | |} | ||
Line 189: | Line 215: | ||
|10 | |10 | ||
|- | |- | ||
− | |style="text-align: left"| | + | |style="text-align: left"|4-9 × demon |
− | + | ||
− | + | ||
|10 | |10 | ||
+ | |22 | ||
+ | |4 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"|1 × | + | |style="text-align: left"|1 × baron of hell, 4-9 × imp |
− | | | + | |13 |
|21 | |21 | ||
|10 | |10 | ||
Line 201: | Line 227: | ||
|style="text-align: left"|1 × pain elemental, 3-8 × lost soul | |style="text-align: left"|1 × pain elemental, 3-8 × lost soul | ||
|13 | |13 | ||
− | | | + | |25 |
|8 | |8 | ||
|- style="background: #333;" | |- style="background: #333;" | ||
− | |style="text-align: left"| | + | |style="text-align: left"|1 × former commando, 2-6 × former sergeant |
+ | |15 | ||
+ | |21 | ||
|10 | |10 | ||
− | |||
− | |||
|- | |- | ||
|style="text-align: left"|1 × baron of hell, 2-4 × hell knight | |style="text-align: left"|1 × baron of hell, 2-4 × hell knight | ||
Line 248: | Line 274: | ||
|N/A | |N/A | ||
|2 | |2 | ||
+ | |- | ||
+ | |style="text-align: left"|2 × pain elemental, 2-5 × cacodemon | ||
+ | |30 | ||
+ | |N/A | ||
+ | |4 | ||
|} | |} | ||
Notice that monster groups are the only way for some enemies to appear on very deep levels. | Notice that monster groups are the only way for some enemies to appear on very deep levels. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Each level is given a total danger rating depending on depth and difficulty level. Monster placement usually proceeds as follows: while the total danger of enemies placed so far is less than the danger rating of the level, pick a new monster or monster group and add it (entirely) to the level. Picking a monster or group is done using the weights as relative probabilities for all the monsters and groups with a valid dlevel range. When a monster group is picked, all its ranges are resolved uniformly and independently. Each monster is added to a random empty tile; for monster groups, each monster is added separately. | Each level is given a total danger rating depending on depth and difficulty level. Monster placement usually proceeds as follows: while the total danger of enemies placed so far is less than the danger rating of the level, pick a new monster or monster group and add it (entirely) to the level. Picking a monster or group is done using the weights as relative probabilities for all the monsters and groups with a valid dlevel range. When a monster group is picked, all its ranges are resolved uniformly and independently. Each monster is added to a random empty tile; for monster groups, each monster is added separately. |
Latest revision as of 19:33, 7 August 2024
Technical | |
This article discusses technical aspects of DoomRL and will be of limited interest to most players. |
Each monster has a minimum dlevel, a maximum dlevel, a weight, and a danger rating. Minimum level and maximum level determine whether the monster can appear on a floor at all. Weight indicates relative likelihood of appearing. Danger indicates (inversely) how many can be generated.
The displayed minimum level is valid for ITYTD and HNTR, and it is smaller at higher difficulties (-3 for HMP and -6 for UV/N!), which means that tougher monsters start appearing earlier in the game. Other values are unaffected by difficulty.
For the more all enemies that can normally spawn, here are the values.
Monster Generation Parameters | ||||
Monster | Minimum | Maximum | Weight | Danger |
Former human | 0 | 12 | 10 | 1 |
Former sergeant | 2 | 15 | 10 | 2 |
Former captain | 5 | 15 | 10 | 3 |
Imp | 0 | 17 | 8 | 2 |
Demon | 4 | 20 | 6 | 4 |
Lost soul | 6 | 16 | 10 | 3 |
Hell knight | 9 | 15 | 6 | 6 |
Cacodemon | 10 | 50 | 6 | 6 |
Pain elemental | 10 | 40 | 4 | 6 |
Former commando | 12 | 21 | 6 | 7 |
Baron of hell | 12 | N/A | 6 | 10 |
Arachnotron | 13 | 50 | 4 | 9 |
Revenant | 13 | N/A | 5 | 12 |
Mancubus | 15 | N/A | 7 | 12 |
Arch-vile | 16 | N/A | 4 | 14 |
Nightmare imp | 30 | 60 | 8 | 6 |
Elite former human | 40 | 80 | 4 | 6 |
Nightmare demon | 40 | N/A | 6 | 8 |
Nightmare cacodemon | 51 | N/A | 6 | 10 |
Nightmare arachnotron | 50 | N/A | 4 | 12 |
Bruiser brother | 50 | N/A | 6 | 14 |
Elite former sergeant | 60 | 90 | 3 | 8 |
Elite former captain | 70 | N/A | 3 | 10 |
Lava elemental | 70 | N/A | 1 | 16 |
Shambler | 80 | N/A | 3 | 14 |
Elite former commando | 80 | N/A | 2 | 14 |
Agony elemental | 80 | N/A | 1 | 20 |
Cyberdemon | 80 | N/A | 1 | 30 |
Nightmare arch-vile | 90 | N/A | 3 | 20 |
Additionally, the are monster groups. Monsters groups have their own minimum and maximum levels and weights that are used instead of the values for the the individual monsters. The effective danger of a group is the sum of the dangers of its monsters.
Monster Groups | |||
Monsters | Minimum | Maximum | Weight |
1 × former sergeant, 2-6 × former human | 7 | 16 | 10 |
5-8 × imp | 5 | 8 | 10 |
1 × hell knight, 2-6 × imp | 9 | 12 | 10 |
4-9 × demon | 10 | 22 | 4 |
1 × baron of hell, 4-9 × imp | 13 | 21 | 10 |
1 × pain elemental, 3-8 × lost soul | 13 | 25 | 8 |
1 × former commando, 2-6 × former sergeant | 15 | 21 | 10 |
1 × baron of hell, 2-4 × hell knight | 20 | N/A | 4 |
3-6 × arachnotron | 20 | N/A | 3 |
2 × arch-vile, 4 × former captain, 4 × former sergeant, 3-6 × former human | 20 | N/A | 2 |
2 × baron of hell, 2-3 × former captain, 2-3 × former sergeant | 20 | N/A | 5 |
2 × arch-vile, 2-5 × mancubus | 20 | N/A | 4 |
2 × arch-vile, 2-5 × revenant | 20 | N/A | 4 |
2 × arch-vile, 3-9 × baron of hell | 25 | N/A | 4 |
2 × arch-vile, 2-8 × former captain, 2-3 × mancubus | 25 | N/A | 2 |
2 × pain elemental, 2-5 × cacodemon | 30 | N/A | 4 |
Notice that monster groups are the only way for some enemies to appear on very deep levels.
Each level is given a total danger rating depending on depth and difficulty level. Monster placement usually proceeds as follows: while the total danger of enemies placed so far is less than the danger rating of the level, pick a new monster or monster group and add it (entirely) to the level. Picking a monster or group is done using the weights as relative probabilities for all the monsters and groups with a valid dlevel range. When a monster group is picked, all its ranges are resolved uniformly and independently. Each monster is added to a random empty tile; for monster groups, each monster is added separately.
The total danger level is calculated from dlevel as follows:
Difficulty | Danger |
I'm Too Young to Die | 6 + 2.2 × dlevel |
Hey, Not Too Rough | 0.6 × sqrt(500 × dlevel) = 13.4 × sqrt(dlevel) |
Hurt Me Plenty | 20 × sqrt(dlevel) |
Ultra-Violence | 32 × sqrt(dlevel) |
Nightmare! | 40 × sqrt(devel) |
In addition to these monsters, certain level features (e.g. vaults) may cause additional monsters to spawn on the level without counting against this limit.