So I was reading a book called Trailblazer; Trailblazer is a modification of the d20 tabletop game system designed to smooth it out and provide consistency. Here's a review:
http://rpggeek.com/thread/733184/the-thinking-gms-dd-3-75.
One of the core concepts is that of the "spine;" that monsters of a particular level should have stats which fall within certain values (hit dice, base attack, and saving throws; damage output is largely based on hit dice). This is so that enemies are consistently a reasonable challenge for the players; that is, consume a particular amount of the player's resources (hit points, spells per day, etc).
So I was thinking, that ought to work REALLY well for a rougelike. Something like this:
Mechanics: The player initially has 20 hit points, and hits for 4 damage. Every level, the player gets +5 hit points. The loot generator is set up such that the player can find a better weapon (+1 damage output) on starting every 4th level, and better armor (-1 damage taken) starting every 5th level; assume useful loot drops are reasonably likely. Combat is supposed to be pretty dangerous, so the player should be able to kill the enemy in 3-4 hits, and will die if hit 10 times.
So when an enemy is created, rather than having hard stats which are tweaked during balancing, the enemy generator turns to an algorithm.
For example, an area features bandits, which should be level 5 enemies. At 5th level, the player is expected to have 40 hit points, deal 5 damage per hit, and have a damage reduction of 1. So the bandits would have 17 - 22 hit points (3-4 hits), and deal 4 damage (10 hits to kill the player). Bandit brutes, which attack half as fast, would hit for 8 damage, and bandit rogues, which attack twice as fast, would hit for 2 damage. A champion bandit would just be a 7th level bandit (20-25 hp, 5 damage).
To keep monsters from feeling identical, we'll just do what we've always done; give them abilities. If snakes inflict poison and thieves steal from the player, they'll feel very different even if they have the same health and damage. You might need to give particular abilities a level value; for example, the poison above makes the creature more dangerous, while the stealing not so much. So a snake might be generated with the stats of, say, a creature 2 levels lower to account for the damage his poison deals.
Note that the idea is to generate creatures based on how powerful the character SHOULD be; if they dive too fast, they'll run into creatures they can't handle. Conversely, if they have the option to grind, that would be a useful option. You'd need to make sure that your advancement system lines up with the generator.
Has any one implemented something like this? Thoughts?