Procedural monster generation is a technique that spawn monsters with required attributes. Graphical representation of monster_type is generated only at loading the level to avoid costs of real-time generation.

0. Class attributes: e.g. IsFlying,IsUndead,IsAnimal,isUnderwater,isJumping are randomly chosen(contradicting attributes are removed).
N randomly chosen attributes are saved as template for this monster type, limiting the appearance/skill/attack pools.

1.Stat generation - creating a type: The monster_type is assigned random stats from a range(suited for the area or monster class) and skills are chosen from a pool for the monster class attributes. Monster of same type may have a range of variable stats(e.g. 4 to 10 damage) with boss monsters having upgrades to stats(e.g. +damage/hp) and additional skills/effects. e.g. Normal, Champion, Boss1,Boss2,Boss3.

2.Object generation/Apperance:
Most complex part which defines the level of uniqueness.
Graphical form suits class attributes(e.g. flying monsters have wings or some flying_body_part). Monster body generation usually uses a symmetric template to reduce aesthetic consequences of random generation.
Class attributes -> Type Template -> Monster model-> Coloring texture (chosen to reflect stats, e.g. boss/champion monsters given texture reflecting of their skills/stats/effects)

3.Area is populated with N copies of monster with some of them having "boss" modifiers of various quality(randomly chosen). Each monster AI is set to idle(or static to conserve CPU time).