User Tools

Site Tools


dev_todo:exp_table

Crossfire experience table

The current experience tables are not very well balanced. This has been discussed by some developers during the get together meeting (under the heading Crossfire needs to become more fun) and one proposal was to use a more regular exponential progression for the various levels.

Many players agree that the game is too frustrating for low-level characters but becomes too easy for high-level characters. It is not surprising that the point at which the game becomes less frustrating corresponds to a change in the experience curve (see the graphs below). The game could be improved by changing the default experience table so that it is is a bit easier for low-level characters and harder for higher-level characters.

:!: Note: A new experience table D was added to SVN since this page was written. It is unrelated to the tables D and E described here. In my opinion, the new table (which is unfortunately the default now) is worse than the previous ones because it makes the game harder for lower-level characters instead of making it easier. In addition, that new table D does not fix any of the issues for the medium and high levels. I hope that it can still be changed and replaced by the table E described here. -Raphaël

Problems with the current experience tables

There are two experience tables that are currently in use. They can be found in the file lib/exp_table. The default one is called table B (“classic”). The server Metalforge uses another table called table C (“hard”). Previous versions of Crossfire used table A (“old”), but it is not used anymore by the recent servers (tables A and B are identical but shifted by one level).

The current default table B uses an exponential progression with a factor of 2 for the first 10 levels: each new level requires twice as many points as the previous one. But then this ratio quickly drops: 1.13 for level 20, 1.06 for level 30, … and becomes as low as 1.01 for levels above 90. This means that at the higher levels, you only need to increase your exp by 1% in order to gain a new level. Then there is a sudden jump: a ratio of 6 for level 109, then a ratio of 2 for the following levels. When the old table A was still used, this ratio of 6 was introduced in order to make it hard for players to jump from level 109 to 110. Now this gap has been shifted down by one level.

This means that after gaining the first 10 levels, it gets a bit easier to gain levels. And after level 20 or so, it gets much easier. Gaining levels becomes easier and easier until level 108. Then it takes a while to reach level 109 because of the large gap (6 times more experience points required). This results in a game that is harder for the new players than for the high-level ones.

With the current set of maps and the default experience table B, the following steps take roughly the same amount of time:

  • going from level 1 to level 15 or so (15 levels)
  • going from there to level 40 or so (25 levels)
  • going from there to level 108 (60+ levels)
  • going from level 108 to level 109 (1 level)

After level 108, it takes more time to reach the following levels because there are not so many ways to gain a lot of experience.

The experience table C (Metalforge) is identical to table B for the first 20 levels, then the ratio between levels remains a bit higher so that the gap is not as big around level 108. However, the ratio is still rather low: 1.10 around level 25 and as low as 1.05 after level 60. This means that you only need to increase your exp by 5% in order to gain a new level.

How to fix the experience table

In order to re-balance the experience table so that it is not too unfair to the new players and too easy for the players above level 20 or 30, it is necessary to modify the ratio between the successive levels. Although the ratio may still be close to 2 for the first few levels, it should quickly drop to a value that remains constant for most of the table. This means that gaining levels will be a bit easier for the lower levels but will also get harder for the higher levels.

The first proposal included below (Table D) tries to do that while still staying close to the current values for the levels below 10 and above 100. This constrains the choice of the “stable” ratio to about 1.12 for most of the table. In other words, gaining one level requires an increase in exp points of around 12% for almost all levels between 10 and 100. The second proposal (Table E) does not use a steeper curve for the levels above 100 so it is possible to keep a higher ratio overall: 15% for almost all levels beyond 10.

Proposals for new experience tables

The following image is a logarithmic graph (made with Gnumeric) of the three existing experience tables (A, B, C) and the new ones (D and E) that are more balanced.

  • the green line shows the default table B (note the sudden jump around level 108)
  • the red line shows the “hard” table C used by Metalforge
  • the cyan line shows the new table D requiring an increase of about 12% between levels
  • the purple line shows the new table E requiring an increase of about 15% between levels

The new curves D and E are smoother ⇒ more balanced. You can see that the new table D becomes more difficult than the default table B around level 75 and the new table E becomes more difficult around level 60.

:dev_todo:exp_table_log2.png

The following image compares the ratio of the experience points needed between successive levels: an increase of 100% means that it is necessary to double the score, an increase of only 1% like the green curve near the high levels makes it easier to gain levels. The lines are not perfectly smooth due to rounding: only the first two to four digits are kept for each level, followed by several zeroes (these numbers are easier to read for us humans counting in base 10).

:dev_todo:exp_table_ratio2.png

And here are the numeric values for the current experience tables (A, B, C) and for the new ones (D and E).

Level A (Old) B (Classic) C (Hard/Metalforge) D (Progressive 12%) E (Progressive 15%)
1 0 0 0 0 0
2 1000 2000 2000 2000 2000
3 2000 4000 4000 4000 4000
4 4000 8000 8000 7200 8000
5 8000 16000 16000 11500 14400
6 16000 32000 32000 16700 23000
7 32000 64000 64000 21700 32300
8 64000 125000 125000 27100 38700
9 125000 250000 250000 33100 45300
10 250000 500000 500000 39100 52100
11 500000 900000 900000 44900 59900
12 900000 1400000 1400000 51700 68900
13 1400000 2000000 2000000 59400 79200
14 2000000 2600000 2600000 67800 91100
15 2600000 3300000 3300000 77200 105000
16 3300000 4100000 4100000 88000 120000
17 4100000 4900000 4900000 99500 139000
18 4900000 5700000 5700000 111000 159000
19 5700000 6600000 6600000 125000 183000
20 6600000 7500000 7500000 140000 211000
21 7500000 8400000 8500000 157000 242000
22 8400000 9300000 9500000 175000 279000
23 9300000 10300000 10600000 196000 320000
24 10300000 11300000 11800000 220000 369000
25 11300000 12300000 13000000 246000 424000
26 12300000 13300000 14300000 276000 487000
27 13300000 14400000 15600000 309000 560000
28 14400000 15500000 17000000 346000 645000
29 15500000 16600000 18500000 388000 741000
30 16600000 17700000 20000000 434000 852000
31 17700000 18800000 21700000 486000 980000
32 18800000 19900000 23400000 545000 1130000
33 19900000 21100000 25200000 610000 1300000
34 21100000 22300000 27000000 683000 1490000
35 22300000 23500000 29000000 765000 1710000
36 23500000 24700000 31100000 857000 1970000
37 24700000 25900000 33300000 960000 2270000
38 25900000 27100000 35600000 1070000 2610000
39 27100000 28300000 38000000 1200000 3000000
40 28300000 29500000 40500000 1350000 3450000
41 29500000 30800000 43200000 1510000 3970000
42 30800000 32100000 46000000 1690000 4560000
43 32100000 33400000 48900000 1890000 5240000
44 33400000 34700000 52000000 2120000 6030000
45 34700000 36000000 55200000 2380000 6940000
46 36000000 37300000 58600000 2660000 7980000
47 37300000 38600000 62100000 2980000 9170000
48 38600000 39900000 65900000 3340000 10500000
49 39900000 41200000 69800000 3740000 12100000
50 41200000 42600000 73900000 4190000 14000000
51 42600000 44000000 78200000 4690000 16000000
52 44000000 45400000 82700000 5250000 18400000
53 45400000 46800000 87500000 5880000 21200000
54 46800000 48200000 92500000 6590000 24400000
55 48200000 49600000 97800000 7380000 28100000
56 49600000 51000000 103300000 8270000 32300000
57 51000000 52400000 109100000 9260000 37100000
58 52400000 53800000 115200000 10400000 42700000
59 53800000 55200000 121500000 11600000 49100000
60 55200000 56600000 128200000 13000000 56400000
61 56600000 58000000 135300000 14600000 64900000
62 58000000 59400000 142700000 16300000 74600000
63 59400000 60800000 150400000 18300000 85800000
64 60800000 62200000 158600000 20500000 98700000
65 62200000 63700000 167100000 22900000 114000000
66 63700000 65200000 176100000 25700000 131000000
67 65200000 66700000 185600000 28800000 150000000
68 66700000 68200000 195500000 32200000 173000000
69 68200000 69700000 205900000 36100000 199000000
70 69700000 71200000 216800000 40400000 228000000
71 71200000 72700000 228300000 45200000 263000000
72 72700000 74200000 240300000 50700000 302000000
73 74200000 75700000 252900000 56800000 347000000
74 75700000 77200000 266200000 63600000 399000000
75 77200000 78700000 280200000 71200000 459000000
76 78700000 80200000 294800000 79700000 528000000
77 80200000 81700000 310200000 89300000 607000000
78 81700000 83200000 326300000 100000000 698000000
79 83200000 84700000 343200000 112000000 803000000
80 84700000 86200000 361000000 125000000 924000000
81 86200000 87700000 379700000 141000000 1060000000
82 87700000 89300000 399300000 157000000 1220000000
83 89300000 90900000 419900000 176000000 1400000000
84 90900000 92500000 441500000 197000000 1620000000
85 92500000 94100000 464200000 221000000 1860000000
86 94100000 95700000 488100000 248000000 2140000000
87 95700000 97300000 513100000 277000000 2460000000
88 97300000 98900000 539400000 311000000 2830000000
89 98900000 100500000 567000000 348000000 3250000000
90 100500000 102100000 596000000 390000000 3740000000
91 102100000 103700000 626400000 436000000 4300000000
92 103700000 105300000 658300000 489000000 4940000000
93 105300000 106900000 691900000 547000000 5680000000
94 106900000 108500000 727100000 613000000 6540000000
95 108500000 110100000 764100000 687000000 7520000000
96 110100000 111700000 802900000 769000000 8640000000
97 111700000 113300000 843700000 861000000 9940000000
98 113300000 114900000 886500000 965000000 11400000000
99 114900000 116500000 931500000 1080000000 13100000000
100 116500000 118100000 978700000 1220000000 15100000000
101 118100000 119700000 1028200000 1390000000 17400000000
102 119700000 121300000 1080300000 1590000000 20000000000
103 121300000 122900000 1134900000 1810000000 23000000000
104 122900000 124500000 1192300000 2080000000 26400000000
105 124500000 126100000 1252500000 2390000000 30400000000
106 126100000 127700000 1315800000 2750000000 35000000000
107 127700000 129300000 1382200000 3250000000 40200000000
108 129300000 130900000 1451900000 3960000000 46200000000
109 130900000 785400000 1525100000 4950000000 53200000000
110 785400000 1570800000 2100000000 6440000000 61200000000
111 1570800000 3141600000 4200000000 9330000000 70300000000
112 3141600000 6283200000 8400000000 15000000000 80900000000
113 6283200000 12566400000 16800000000 27000000000 93000000000
114 12566400000 25132800000 33600000000 50000000000 107000000000
115 25132800000 50265600000 67200000000 100000000000 123000000000

Conclusions

  • Crossfire should be a bit easier for low-level characters (below 20) and harder for high-level characters (90 and beyond).
  • The experience table should be as progressive as possible (constant exponent) instead of becoming easier at high levels.
  • The suggested experience table E is more progressive and becomes harder than the Metalforge table after level 90.
  • The experience table should be updated before attempting to re-balance the spells and other parts of the game.
dev_todo/exp_table.txt · Last modified: 2008/06/25 04:41 (external edit)