I stated somewhere that the early game of Angband was a bit too easy. I was wrong, I was basing that statement mostly from playing mages. After starting a bunch of new characters with a wide variation in class and race, to test the stream of nightlies, I've come to the conclusion that the early game is way too easy.
The problem is that the first fifth of the game can basically be skipped. Just dive as fast as you can, gaining levels on the way, and before you need to stop you are at dlvl 20. This means we miss the fun that could be had from progressing a bit slower through those levels. Finding ego items that would be useful in the first levels, but could be discarded already at dlvl 20-30, etc. The game simply becomes shorter.
The main reason for this is that it's very easy to get multiple blows these days. Damage output for a lvl 1 melee character is way out of balance with the monsters he will face.
So, combat needs to be redesigned, well that's nothing new, and we are closing in on 3.3, so that issue is for another time. We can however make one small adjustment that would help balance this issue a bit. We can give starting characters less overpowering stats.
Time to switch viewpoint: How come we have the stats we have today?
Once upon a time there was a basic roller. This was balanced so the player would have a fun start in the game. When I mention balanced, I mean that the roller was (and is) designed to give the player very good stats compared to the 3d6 D&D system it was based on.
On the mission to reduce tedium an auto-roller was introduced. The auto-roller just rolled the roller until some minima you specified had been achieved. All was not fine though, the auto-roller stopped after 100 000 rolls IIRC, so you still had to reroll several times to get the best stats you could get.
Then the point based system was introduced. You now had three ways to get your stats. To ensure that the tedium of rolling was finally killed, the point based system was designed to allways beat the auto roller (well, it is still possible to get better results rolling, but not in any practical sense).
Later, when noone used the auto-roller any more, the auto-roller was removed, and thus we arrive at the current situation: One roller, that gives challenging stats, and a point based system, designed to always beat the best stats you could possibly roll. Meanwhile, the creatures in the dungeon have stood still in their development.
I suggest a small step backwards for the players, while staying far away from the tedium of rolling. The innovation of the point based system was great. The only problem is that it was compared to the auto-roller. Today the auto-roller does not exist, so it should be compared to the roller. I propose that we change the price/stat from (1,1,1,1,1,1,2,4) to (1,1,1,1,2,3,4,5). So, how does this compare to the standard roller? A few stat configurations could be beaten 1-2 times in 10 000 rolls (I've run a simulation for 100 million rolls). I do not believe that will risk introducing tedium.
The two main effects will be that you cannot get a few stats as high as before, and if you go for a few high stats, you will have a lower total count than before. You will still be able to get 24 points in stat increase if you spread them among all stats, so if you feel it's important to have a high total you can still get that. You will have to think more about each point and what you really need, and your number of blows/round will probably be a bit lower.
Some examples of stats you could buy:
In most games you can choose a difficulty level from a wide range. This range needs to be wide to accomodate a wide variety of players and playstiles. In Angaband even the 'challenge' races/classes are too easy with the point based system, while the standard roller is a big jump harder. I propose to smooth that gap, and make room for a bit more challange in the early part of the game.
PS.
Implementation is really easy, in birth.c, change the line:
static const int birth_stat_costs[18 + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 4 };
to:
static const int birth_stat_costs[18 + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 4, 5 };
PSS.
I did my first actual code change, with subsequent compile and testing today
The problem is that the first fifth of the game can basically be skipped. Just dive as fast as you can, gaining levels on the way, and before you need to stop you are at dlvl 20. This means we miss the fun that could be had from progressing a bit slower through those levels. Finding ego items that would be useful in the first levels, but could be discarded already at dlvl 20-30, etc. The game simply becomes shorter.
The main reason for this is that it's very easy to get multiple blows these days. Damage output for a lvl 1 melee character is way out of balance with the monsters he will face.
So, combat needs to be redesigned, well that's nothing new, and we are closing in on 3.3, so that issue is for another time. We can however make one small adjustment that would help balance this issue a bit. We can give starting characters less overpowering stats.
Time to switch viewpoint: How come we have the stats we have today?
Once upon a time there was a basic roller. This was balanced so the player would have a fun start in the game. When I mention balanced, I mean that the roller was (and is) designed to give the player very good stats compared to the 3d6 D&D system it was based on.
On the mission to reduce tedium an auto-roller was introduced. The auto-roller just rolled the roller until some minima you specified had been achieved. All was not fine though, the auto-roller stopped after 100 000 rolls IIRC, so you still had to reroll several times to get the best stats you could get.
Then the point based system was introduced. You now had three ways to get your stats. To ensure that the tedium of rolling was finally killed, the point based system was designed to allways beat the auto roller (well, it is still possible to get better results rolling, but not in any practical sense).
Later, when noone used the auto-roller any more, the auto-roller was removed, and thus we arrive at the current situation: One roller, that gives challenging stats, and a point based system, designed to always beat the best stats you could possibly roll. Meanwhile, the creatures in the dungeon have stood still in their development.
I suggest a small step backwards for the players, while staying far away from the tedium of rolling. The innovation of the point based system was great. The only problem is that it was compared to the auto-roller. Today the auto-roller does not exist, so it should be compared to the roller. I propose that we change the price/stat from (1,1,1,1,1,1,2,4) to (1,1,1,1,2,3,4,5). So, how does this compare to the standard roller? A few stat configurations could be beaten 1-2 times in 10 000 rolls (I've run a simulation for 100 million rolls). I do not believe that will risk introducing tedium.
The two main effects will be that you cannot get a few stats as high as before, and if you go for a few high stats, you will have a lower total count than before. You will still be able to get 24 points in stat increase if you spread them among all stats, so if you feel it's important to have a high total you can still get that. You will have to think more about each point and what you really need, and your number of blows/round will probably be a bit lower.
Some examples of stats you could buy:
Code:
Today Proposed (+8, +8) (+8, +5) or (+7, +6, +2) (+7, +7, +7) (+6, +6, +5) (+6, +6, +6, +6) (+5, +5, +5, +5) (+5, +5, +5, +5, +4) (+5, +5, +4, +4, +4) (+4, +4, +4, +4, +4, +4) (+4, +4, +4, +4, +4, +4)
PS.
Implementation is really easy, in birth.c, change the line:
static const int birth_stat_costs[18 + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 4 };
to:
static const int birth_stat_costs[18 + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 4, 5 };
PSS.
I did my first actual code change, with subsequent compile and testing today
Comment