the cost of each skill level


Although the central place for design discussion is ##crawl-dev on freenode, some may find it helpful to discuss requests and suggestions here first.

User avatar

Tomb Titivator

Posts: 911

Joined: Thursday, 17th December 2015, 02:36

Post Thursday, 14th January 2016, 23:22

the cost of each skill level

In a recent thread it came up that the skill costs use a lookup table, and the numbers there don't follow a clearcut pattern. It is shown below - sorry about the misalignment - with the total and relative costs. I added the rate at which the relative cost increases compared to the last relative cost.

  Code:
skill   total   relative      
level   cost   cost   increase in relative cost   
0   0   0   0   
1   50   50   50   
2   150   100   50   
3   300   150   50   
4   500   200   50   
5   750   250   50   
6   1050   300   50   
7   1400   350   50   
8   1800   400   50   
9   2250   450   50   
10   2800   550   100   
11   3450   650   100   
12   4200   750   100   
13   5050   850   100   
14   6000   950   100   
15   7050   1050   100   
16   8200   1150   100   
17   9450   1250   100   
18   10800   1350   100   
19   12300   1500   150   
20   13950   1650   150   
21   15750   1800   150   
22   17700   1950   150   
23   19800   2100   150   
24   22050   2250   150   
25   24450   2400   150   
26   27000   2550   150   
27   29750   2750   200   


Relative cost increases at a constant rate for about 8 levels at a time, then that constant rate increases, and the pattern repeats. Kinks appear when you reach levels 9, 18, 26. Sure, they're second degree and hard to notice, but what's the point of messing with skill training at random points? Instead of a piecewise quadratic function let's try blatantly adding a cubic element:

  Code:
skill   total   relative      
level   cost   cost   increase in relative cost   
0   0   0   0   
1   40   40   40   
2   125   85   45   
3   260   135   50   
4   450   190   55   
5   700   250   60   
6   1015   315   65   
7   1400   385   70   
8   1860   460   75   
9   2400   540   80   
10   3025   625   85   
11   3740   715   90   
12   4550   810   95   
13   5460   910   100   
14   6475   1015   105   
15   7600   1125   110   
16   8840   1240   115   
17   10200   1360   120   
18   11685   1485   125   
19   13300   1615   130   
20   15050   1750   135   
21   16940   1890   140   
22   18975   2035   145   
23   21160   2185   150   
24   23500   2340   155   
25   26000   2500   160   
26   28665   2665   165   
27   31500   2835   170   


I randomly picked 5 as a step size and 45 as the cost of gaining skill level 1, but that's actually very easy close to the original. It mostly just smoothens out some of the weird oscillations that players have no reason to suspect exist. There's no reason not to use something like this, and apparently it can be done just by changing values in the lookup table.

But let's have some fun and pretend the formula was completely quadratic, matched up to the current table until skill 10, and departed from there, in a cheaper direction:

  Code:
skill   total   relative      
level   cost   cost   increase in relative cost   
0   0   0   0   
1   50   50   50   
2   150   100   50   
3   300   150   50   
4   500   200   50   
5   750   250   50   
6   1050   300   50   
7   1400   350   50   
8   1800   400   50   
9   2250   450   50   
10   2750   500   50   
11   3300   550   50   
12   3900   600   50   
13   4550   650   50   
14   5250   700   50   
15   6000   750   50   
16   6800   800   50   
17   7650   850   50   
18   8550   900   50   
19   9500   950   50   
20   10500   1000   50   
21   11550   1050   50   
22   12650   1100   50   
23   13800   1150   50   
24   15000   1200   50   
25   16250   1250   50   
26   17550   1300   50   
27   18900   1350   50   


Let's consider this. The effect is noticeable. For roughly the same amount of experience, you get to skill 15 rather than 14, 20 rather than 18, 26 rather than 22. That's quite a rebalancing. It would require nerfs to UC/throwing aptitudes, and maybe some UC/throwing rebalancing to make it more viable in the early game, given new apts that are worse. It does make the formula much simpler and easier to convey. It could be used compensate for significantly reduced dungeon length, if the smaller amount of available XP actually becomes an issue. Besides, are there not enough XP-restricting dials as is? There's already an XP-to-skillpoint ~XL-based stepdown that can be used for calibrating available XP.

Rewarding generalization is one thing that Crawl does well, in an interesting way, yet honestly my hunch is that Crawl rewards jacks of many trades a bit too much, and could stand to reward specialization a little more, by diminishing the relative cost difference a bit. It is general good advice that training skills very high is not worth it. Crawl's also moving in a direction whereby the dungeon is a tight romp rather than an epic saga, in which case it makes sense to make maxing out skills easier, so you don't get unreasonably attached to your super-character. So my feeling for the table above is rosy right now, though I concede some may know better.

For fun, here's another quadratic version, only this time, relative cost increases every other skill level. Overall it's pretty similar to the one right above. Just a little more expensive at all skill levels.

  Code:
skill   total   relative      
level   cost   cost   increase in relative cost   
0   0   0   0   
1   100   100   100   
2   200   100   0   
3   400   200   100   
4   600   200   0   
5   900   300   100   
6   1200   300   0   
7   1600   400   100   
8   2000   400   0   
9   2500   500   100   
10   3000   500   0   
11   3600   600   100   
12   4200   600   0   
13   4900   700   100   
14   5600   700   0   
15   6400   800   100   
16   7200   800   0   
17   8100   900   100   
18   9000   900   0   
19   10000   1000   100   
20   11000   1000   0   
21   12100   1100   100   
22   13200   1100   0   
23   14400   1200   100   
24   15600   1200   0   
25   16900   1300   100   
26   18200   1300   0   
27   19600   1400   100   


And here are all four next to each other, showing total costs, for easy comparison:

  Code:
skill   right                    quadratic,
level   now   cubic   quadratic  skipping every 2nd
 0       0       0       0       0
 1      50      40      50     100
 2     150     125     150     200
 3     300     260     300     400
 4     500     450     500     600
 5     750     700     750     900
 6    1050    1015    1050    1200
 7    1400    1400    1400    1600
 8    1800    1860    1800    2000
 9    2250    2400    2250    2500
10    2800    3025    2750    3000
11    3450    3740    3300    3600
12    4200    4550    3900    4200
13    5050    5460    4550    4900
14    6000    6475    5250    5600
15    7050    7600    6000    6400
16    8200    8840    6800    7200
17    9450   10200    7650    8100
18   10800   11685    8550    9000
19   12300   13300    9500   10000
20   13950   15050   10500   11000
21   15750   16940   11550   12100
22   17700   18975   12650   13200
23   19800   21160   13800   14400
24   22050   23500   15000   15600
25   24450   26000   16250   16900
26   27000   28665   17550   18200
27   29750   31500   18900   19600


edit: it's interesting to look back at how that table was originally constructed:
https://crawl.develz.org/wiki/doku.php? ... m#proposal
The numbers were picked rather haphazardly, and nobody seemed to mind because it was such a huge improvement over the existing numbers.

For this message the author HardboiledGargoyle has received thanks: 2
byrel, duvessa

Vestibule Violator

Posts: 1508

Joined: Monday, 21st November 2011, 07:40

Post Friday, 15th January 2016, 18:10

Re: the cost of each skill level

I would go for the cubic. it's already a noticible balance change to the early game. It's certainly better than the current system. (And damn that old version was terrible... I'm surprised it took till 0.9 to kill that with fire.)
Usual account: pblur on kelbi

For this message the author byrel has received thanks:
MainiacJoe
User avatar

Tomb Titivator

Posts: 911

Joined: Thursday, 17th December 2015, 02:36

Post Sunday, 17th January 2016, 02:01

Re: the cost of each skill level

why cubic though? with the numbers I picked, total skill cost is very similar to current, the difference being no more than 8% past the first 5 skill levels. and you say a single level of an aptitude barely makes a difference... so I don't know what noticible balance change you're talking about.

This is roughly what Relative Skill Cost function looked like, maxing out at 1800:
  Code:
^     ______
|    |
|    |
|    |
|   /
|  /
| /
|/___________>

And it was changed to look like this, where it exceeds 1800 past skill level 21:
Image
There's no discernible justification for this particular choice, only that what was being changed was problematic. I don't see why, exactly, that function could not have been made simply linear. Mostly, it seems, to maintain A) skill level costs up to level 14 and B) the total amount of experience needed to raise a skill to 27. But neither of these is sacred.

If you read that link, galehar was concerned about upsetting the balance, as if Crawl was finely balanced for the existing skill costs. We keep seeing this overestimation of other people's design decisions and underestimation of our own. As far as I can tell, there were no terrible repercussions as a result of that change. Must we currently approach existing formulas the same way galehar approached 0.8 crawl - assuming that unless we mess with as little as possible, we likely break it? The balance of Crawl's current skill level costs has downsides. For example, It locks you into continuing to use the weapon skill you've been training, a bit too much, and makes it so easy for most characters to get basic spells online in late game, leading you to play the same character so often. If level 9 spells and heaviest weapons are accessible in a shortened 3-rune game, is that bad? Note too that when galehar did this, the game was longer.

Blades Runner

Posts: 546

Joined: Saturday, 7th May 2011, 02:43

Post Sunday, 17th January 2016, 02:55

Re: the cost of each skill level

I think you've made a pretty solid case for, at minimum, experimenting with different choices. IMO your proposition is simple enough that it would be a good idea at this point to make some patches implementing the various choices.

As an aid to that, here's the various data you presented in a C-compatible form:
Cubic
  Code:
{0, 40, 125, 260, 450, 700, 1015, 1400, 1860, 2400, 3025, 3740, 4550, 5460, 6475, 7600, 8840, 10200, 11685, 13300, 15050, 16940, 18975, 21160, 23500, 26000, 28665, 31500 };


Quadratic A
  Code:
{0, 50, 150, 300, 500, 750, 1050, 1400, 1800, 2250, 2750, 3300, 3900, 4550, 5250, 6000, 6800, 7650, 8550, 9500, 10500, 11550, 12650, 13800, 15000, 16250, 17550, 18900 };


Quadratic B
  Code:
{0, 100, 200, 400, 600, 900, 1200, 1600, 2000, 2500, 3000, 3600, 4200, 4900, 5600, 6400, 7200, 8100, 9000, 10000, 11000, 12100, 13200, 14400, 15600, 16900, 18200, 19600 };


For everyone else's information, the table in question is [https://github.com/crawl/crawl/blob/master/crawl-ref/source/skills.cc#L1474]here[url]

Also, here's a variant I made, because I thought 'currently getting a skill to 27 is pretty hard, and that's okay, but the cubic version makes that even harder, which probably isn't okay.'. It's a straight 50/50 average of the cubic and quadratic B tables:
  Code:
{0, 70, 162, 330, 525, 800, 1107, 1500, 1930, 2450, 3012, 3670, 4375, 5180, 6037, 7000, 8020, 9150, 10342, 11650, 13025, 14520, 16087, 17780, 19550, 21450, 23432, 25550};


EDIT: and another variant; this one goes from a 100%/0% mix cubic/quadratic at minimum level, to a 75%/25% mix.
  Code:
{0, 41, 126, 264, 456, 709, 1025, 1413, 1870, 2408, 3023, 3726, 4511, 5393, 6362, 7433, 8597, 9869, 11238, 12719, 14300, 15999, 17799, 19720, 21744, 23894, 26146, 28525};

This one was done because I thought initial skill level costs were a bit steep in the 50/50 averaged version.

Return to Game Design Discussion

Who is online

Users browsing this forum: No registered users and 9 guests

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.