[crossfire] Rebalancing, difficulty curve -- simple ideas

Raphaël Quinet raphael at gimp.org
Fri Sep 1 17:21:45 CDT 2006


On Wed, 30 Aug 2006 12:53:40 +0800, Lalo Martins <lalo.martins at gmail.com> wrote:
> The other thing is that there is a level beyond which you just progress up
> to demigodhood (110+).  What level it is?  That depends on the server --
> more precisely on the exp_table.  On MF I've been told it's about 20
> something; I don't know personally as I never reached that level in MF. 
> On my own server, which is set up for children, of course a good player
> can go to demigodhood in a day or two from scratch.

Looking at the current experience tables shows that going from one
level to the next one requires doubling your exp points for each level
until you reach level 10.  Then the ratio between successive levels
drops very quickly: 1.13 for level 20, 1.06 for level 30, ... and
becomes as low as 1.01 for levels above 90.  This explains why one can
reach the "demigod" status without too much trouble after reaching
level 15-20 (the exact level depends on your skills, maps, etc.).

> The big problem is that if there is a point where the curve slopes, then
> you won't explore the world, look for new quests, or even interact much
> with other players; and on the other end this causes map makers to only
> want to make high-level quests.

In addition, the steeper slope for the lower levels can discourage
beginners from playing crossfire.  The game gets significantly easier
after the first dozen levels, both because your character can explore
more maps without fearing instant death and because it gets easier and
easier to gain levels due to the ever diminishing ratio between them.
People who have never played crossfire before can be discouraged by
the fact that the first levels are rather hard for a beginner.

> Finally, the easy answer to the curve issue is tweaking the exp_table
> carefully.  I want to start a mini-project, with the goal of tuning up a
> "perfect" (heh) exp_table.  Here's what I'd need:
> 
> - the server :-P I'd host it here but my bandwidth sucks.  I need either
> an easy way to modify the exp_table and read player files, or a person
> willing to do that for us.
> 
> - about three experienced players who are willing to play a lot of
> crossfire, to actually test the curves.  I'll play the role of the noob --
> I play better than a beginner, but not much.

As others have pointed out, it would be difficult to tune the exp
table before fixing some other issues.  But anyway, I am not sure that
setting up a test server would help.  Using experienced players may
not be the best test because these players tend to know the best ways
to gain exp in various skills.  Beginners make more mistakes and have
a harder time gaining the first few levels.  So although running a
test with experienced players could provide useful data for levels
above 15 or 20, I don't think that this would really improve the
balance for the lower levels (which are considered too hard by some
beginners).  But even for the higher levels, the test may not be very
useful if there are only a few players and if they know that they are
in a test environment.

Instead of setting up a test server, I think that it would be much
more interesting to start by monitoring what happens on the current
servers.  This would require adding a bit more logging information to
the server code, but this would have significant benefits: a larger
selection of players (from beginners to demigods) and a dataset
collected from real games instead of from games in which people know
that they are playing on a test server.

Imagine this: the next release of crossfire (1.9.2) could include a
new logging option (enabled by default) that records the following
information:
- a hash of the player name (to limit the privacy issues)
- absolute timestamps whenever a player logs in or out (so that it is
  possible to know the total playing time in real world units)
- also with timestamps, any significant gain or loss of experience in
  any skill (new level in a skill, death)
- each log message would include the total exp of the player and the
  full list of skills and their exp/level

> - ideally, a copy of MF's exp_table, which many people seem to regard as
> the best table out there, to start from

You can find this table in "lib/exp_table".  It contains three tables:
A (old), B (classic) and C (hard).  Metalforge uses table C.  You can
compare these values with http://crossfire.real-time.com/exp.html and
you will see that they are identical.

As an exercise in trying to improve the exp_table and highlight the
problems of the current tables, I have created a new wiki page:
  http://wiki.metalforge.net/doku.php/dev_todo:exp_table
It contains graphs comparing the current tables with a proposal based
on a smoother curve.  I played a bit with Gnumeric in order to have a
curve that makes it easier to gain levels at the beginning but keeps a
constant ratio for the higher levels (so after a while, it gets more
difficult than the current tables).

In case anyone is interested, I can also provide the *.gnumeric file.

Playing with this curve is an interesting exercise but it is a bit
like putting the cart before the horse: before making any adjustments,
it would be better to have real measurments of how much time an
average player needs to get from one level to the next.  We all know
that the current curves are not ideal because they are (much) too easy
for the higher levels and (a bit) too hard for the lower ones, but we
do not know by how much exactly.

> - rough consensus on the ideal curve.  Here's my draft:
> 
> * half a playing hour per level up to 5;
> * 1h/l up to 10;
> * 2h/l up to 50;
> * 3h/l up to 70;
> * 5h/l up to 90;
> * 7.5h/l up to 100;
> * 10h/l beyond 100

Does this include the time needed to regain some levels that were lost
after a sudden death?  I think that this time must be taken into
account.  If a player dies and loses one or two levels every time
he/she gains three levels, then this makes the more than twice as long
(this is especially true for beginners).

In my opinion, the ideal curve would correspond to about 1 hour per
level up to level 20 or so, including the time needed to recover after
multiple deaths.  And that should be evaluated for an average player
(not an expert, not an absolute beginner).

I think that the best way to fine tune the curve would be to start by
collecting enough data from the current active servers, like I
proposed above (the logs could be sent by the server admins or could
even be included in an extended metaserver protocol).  This would give
us a much better picture of how experience is gained or lost by the
average player.  Even if the mapping between experience points and
levels may change in the future when the exp_table is adjusted, having
some reliable data would help a lot.

Until we have this, we can keep on talking about rough guesses based
on our personal experiences, but will still be poking in the dark as
long as we do not have any real data.

-Raphael



More information about the crossfire mailing list