Theoretically the only fair way to scale difficulty would be to balance it, as you say, for 1 player. Then insure that the difficulty scales for additional players. More HP, yes, but also more offense. To be equal, the number of HP killed/player should be equal between /players 1 and /players 8, but also the amount of offense offered by the monsters/player should be equal. Now the tricky part is in estimating the additional difficulty to add due to the advantage of 8 coordinated well built players, versus some stoggy computer driven AI. Ok, so how would you do it? The no brain way would be to generate 8 times more monsters, but that would at some point just lag the server. Better to add some monsters to a set maximum # / level and then scale up the damage delivered by all monsters -- add more champions, boss packs, and packs of boss packs.
If you did this, then you could remove the hireling versus boss adjustments and just count every NPC (and maybe summons) as a partial player due to their less than human kit and skills(maybe 1/10 summons and 1/3 for mercs).
I'm a big believer in writing fuzzy algorithms that interpolate midpoints, rather than extrapolate past a normal. That it, in generating the monster for a level, the server should first note who is in the game and determine an amount of HP and offensive power for that level, then determine the right # of monsters to build (#=X uniques + Y champions + X*(4-8) minions + Y*(4-8) minions + fill in the rest randomly), and then interpolate to the right HP and offensive power / monster. You could even get fancy and determine an offensive value for special abilities. You could base experience on that HP*offensive power level, and determines treasure class adjustments to better reward those who take on the toughest monsters packs.
Now you might be saying, "Hey, but there can be people in different parties in different acts, or in different parts of the map." I would say, party up -- I would have it so that difficulty would not change for monsters already spawned so that if a Act 1 player is in the midst of the battle for their life with a boss, and 7 lvl 80+ players join it doesn't instantly turn a challenge into a blood bath.
If you did this, then you could remove the hireling versus boss adjustments and just count every NPC (and maybe summons) as a partial player due to their less than human kit and skills(maybe 1/10 summons and 1/3 for mercs).
I'm a big believer in writing fuzzy algorithms that interpolate midpoints, rather than extrapolate past a normal. That it, in generating the monster for a level, the server should first note who is in the game and determine an amount of HP and offensive power for that level, then determine the right # of monsters to build (#=X uniques + Y champions + X*(4-8) minions + Y*(4-8) minions + fill in the rest randomly), and then interpolate to the right HP and offensive power / monster. You could even get fancy and determine an offensive value for special abilities. You could base experience on that HP*offensive power level, and determines treasure class adjustments to better reward those who take on the toughest monsters packs.
Now you might be saying, "Hey, but there can be people in different parties in different acts, or in different parts of the map." I would say, party up -- I would have it so that difficulty would not change for monsters already spawned so that if a Act 1 player is in the midst of the battle for their life with a boss, and 7 lvl 80+ players join it doesn't instantly turn a challenge into a blood bath.