Re: well my exp thing (fwd)

From: Mr. Wizard (jsbarrow@husc.harvard.edu)
Date: 07/24/94


On Thu, 21 Jul 1994 Guido.Witmond@si.hhs.nl wrote:

> > > what i did was this....now i have less exp.
> > >
> > > 1.  get exp for damage.
> > > 2. add all of groups levels.
> > > 3 exp gain = group_gain/num_of_levels * GET_LEVEL(ch);
> > >
> > > so a 30, a 25, and 1 would be a grtoup of 56 levels...
> > > ws the 1st level woulg get 1/56 of group exp, the 30 would gert 30/56 etc...
> >
> > A lot of muds use this same equation, and it's fine to an extent.
> > All of these muds have the same exact problem:
> >
> > MOB's EXP:  560000
> >
> > 1/56 * 560000 = 10000 EXP to the level 1 player (wow, he's level 4 already).
> >
> > Okay, the exp cap explained once more:
> >
> > MAX EXP GAINED = (MIN EXP FOR NEXT LEVEL - MIN EXP FOR CURRENT LEVEL) / INT
> >
> > where INT is minimum number of mobs that a character must defeat before
> > moving on to the next level.  The larger this number, the longer it
> > takes to level.
>  
> The exp needed for a next level is often double of what you got. This means
> this is an exponential function of the level.
>  
> Example: next exp = 1000*2^^level.
>  
> Any linear gain function gives the problem mentioned wiht the 560k mob.
> What you need is a gain function that is logarithmic.

*applaud*

Finally someone else noticed!  All the linear formulas are flawed.  While 
users like them because the exp awarded doesn not differ by much with 
level differences, they are not set up well.
  
> Example: exp gain = mob exp * (log (own level) / log (mob level)
>          you calculate this for each groupmember.
>          in case you kill a mob alone you get full exp.

This is one of many that will work.  The best way in my opinion is to 
reverse the formula for calculating exp for each level.  If your level 
system is logarithmic, then go logarithmic on the exp division.

> The problem of mortally wounding a mob so a level one can advance too fast can
> be solved by applying such logaritmic funtion to the fraction of the damage
> done by a groupmember.
>  
> example: exp gain = mob exp * (log (damage done) / log (mob hitpoints)

This doesn't solve anything if you still award exp based on kills.  The 
mortally wounding bug works like this (if I understand correctly):

1.  Two or more players group.  (Usually one is much higher in level than 
the others.)

2.  The group attacks a mob.

3.  When the mob gets down to awful, stunned or mortally wounded the high 
level group member flees, allowing the other member(s) to rack up on the 
exp for the kill.

Perhaps you weren't referring to this.

Solutions to this are more complex:

1.  For the grouped scenerio:
       Divide up the exp as if everyone was in the room for the kill, 
       then award only to people in the room.

2.  For the scenerio of two people who are not grouped.
       Only allow grouped players to attack a mob once it has been attacked.

Also, I think awarding exp on a logarithmic scale for damage done as well 
as kills makes sense.  I had only thought of altering it for kills, but 
ALL exp awarded for a group should be done on a logarithmic scale 
(assuming an exponential level system).

> This might be the best of these solutions.
> Math disclaimer. I have to brush up my maths before i can give accurate
> logarithmic gain functions. But my point should be clear: With a exponential
> function for needed exp you also need a logarithmic function for exp gain.
>  
> Guido.

Joshua Sky Barrow



This archive was generated by hypermail 2b30 : 12/07/00 PST