Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 05-26-2024, 05:08 AM
Torven
Sarnak
 
Join Date: Aug 2014
Posts: 59
Default A Treatise on EverQuest's Experience Calculations

This treatise covers everything I understand about EverQuest's experience calculations. My research focus is older eras of EQ (up though Planes of Power) but much of it is still relevant to Darkpaw servers as of this writing. When I say "Darkpaw" I mean EverQuest in 2024 or recent to 2024. When I say "Sony" I generally mean EQ circa 1999-2004. Read carefully so you do not mix up my explanations of modern EQ with old EQ as there have been many changes over the years and I will sometimes compare the two.

In EverQuest a player's progress is represented by a single experience value that is the total lifetime sum of every experience gain minus every experience loss. (can't be negative) This is stored in a very large integer number. From this single value the player's level is calculated formulaically. This is a bit unusual as the level is subordinate to the experience instead of vice versa. It makes some sense for them to have done this in a game where delevleing is possible, and it makes changing levels after an experience gain or loss easy to calculate. The downside is that it's inflexible to modify: you cannot easily change the amount of experience required for a specific level for example. Thus EQ required some kludgy workarounds which I will explain in the relevant sections.


The Basic Math

There are two basic functions EQ uses for experience: (brackets mean doesn't always apply)

Exp required to level = player_level^3 * class_mod * race_mod * hell_mod

Exp gained from kills = mob_level^2 * ZEM [* group_bonus] [* group_split] [* class_mod] [* HBM] [* MLM]

ZEM stands for "Zone Experience Modifier". (or multiplier if you like) All zones have a ZEM value. A ZEM of 75 is the baseline and is what most outdoor zones had.

Level exp per kill in old EQ was capped at one eighth of the level's exp, which is 12.5%. On Darkpaw's servers this cap is 7.5% at very low levels, which is a rare case of modern EQ being less forgiving, although there is a weird scaling exp bonus that is added after the exp is capped starting at level 8 and increases to 10% after a dozen or so levels. AA exp never had a cap.

class_mod is a number from 9 to 14 depending on the player's class:

Warrior: 9
Rogue: 9.05
Cleric, Druid, Shaman: 10
Wizard, Enchanter, Magician, Necro: 11
Monk: 12
Ranger, Paladin, Shadowknight: 14

The class_mod was applied to exp gains to cancel out the class penalties after January 2001 for all classes except rogues and warriors. This does not apply to AA exp. (this mod would be divided by 10 first or the entire result would be divided by 10 such that a Ranger for example would get 40% more exp if using this double digit notation)

race_mod is a value from 95 to 120 depending on the player's race:

Halfling: 95
Barbarian: 105
Ogre: 115
Troll, Iksar: 120
Everybody else: 100

Note that I will be using the words "modifier" and "multiplier" interchangeably. These terms are all player invented and what Sony called them is unknown. Also Sony's numbers may have had the decimals in different places, e.g. class_mod may have been three digits and race_mod two or whatnot, and sometimes ZEMs are represented in decimal format, but the end result would be identical as long as the decimals were moved complementary since they're all multiplications.

The group_split multiplier is a number between 0 and 1 when sharing exp in a group and works more or less like one might expect (e.g. it's 0.2 in a five-man group of the same levels) although there is more to it. See the groups section for details. In Luclin two new multipliers were added which are called the HBM and MLM for short in this document and are discussed in their sections. Not shown above is a possible server bonus multiplier (Al'Kabor had 20%, so 1.2) and a possible individual NPC multiplier which certain Planes of Power NPCs had.

The exp gain formula on Darkpaw servers has changed significantly and I do not understand how it works now. The above formula should be considered accurate only for older eras of EQ. Exp from kills on Darkpaw servers is significantly higher than in old EQ and I don't know why. A race modifier to cancel racial penalties and bonuses is likely applied to exp gains in modern EQ however.


Hell Levels and hell_mod

hell_mod is a number Sony used to make the higher level game take longer to advance. (require more kills to level) For levels 1 through 29 this value is 1.0. For levels 30-34 this value is 1.1; For levels 35-39, 1.2; For levels 40-44, 1.3; For levels 45-50, 1.4. Kunark levels increase this every level and often by more than 0.1. This number is where so-called "hell levels" come from.

Without the hell_mod, the increase in exp required per level from the previous level quickly trends toward zero percent. For example, level 4 requires nearly twice as much exp to level as level 3 does, but level 29 requires only about 7.4% more exp than level 28 does. Exp gain also trends toward being flat, so without a hell_mod the amount of kills needed to level would otherwise end up about 25 white con kills for all levels with a ZEM of 75.

Hell levels (a term players came up with) were levels that required twice as much exp to complete as a normal level. The hell levels were 30, 35, 40, 45. These arise because the hell_mods are not increased gradually and instead are constant for each tier of levels. Since the exp required for a level is the total lifetime sum of exp, multiplying that number by 1.1 after previously multiplying by 1.0 is essentially multiplying all the previous 29 levels combined by an extra 10% instead of just the singular level 30. If Sony had increased it gradually each level then the hell level effect would be far less noticeable.

Since Kunark only had 10 levels, and because of the flattening exp curve, and to prevent previous levels requiring more exp then the current level, Sony had to crank up the hell_mod every level. Levels 54 and 59 feel like hell levels (they're less than double previous level exp however) because at those levels the hell_mod increases more than in previous levels. (from +0.1 to +0.2 at level 54 and from +0.2 to +0.3 at level 59) It's the rate of increase of the hell_mod which creates the hell level effect. Level 60 is a fast level because the hell_mod doesn't increase at all there when the previous level it had increased by 0.3, so the exp required to go from 59 to 60 is much less than from 58 to 59.

The hell_mods for Kunark levels are: 51 1.5, 52 1.6, 53 1.7, 54 1.9, 55 2.1, 56 2.3, 57 2.5, 58 2.7, 59 3.0, 60 3.0.

Some old exp calculators list level 60 as 3.1 but that is incorrect. We can know the hell mods for 1-60 because they were in the client.

The hell_mods for PoP levels are: 61 3.225, 62 3.45, 63 3.675, 64 3.9, 65 4.125. An increase of 0.225 per level.

I know PoP's hell_mods because of two reasons: one, I estimated them from an Al'Kabor log of my bard being powerleveled and I was able to add up the kills and estimate the experience gains and how much gain was required to level. Also because Darkpaw's servers now show player experience within 1/1000th of a percent; that plus knowing how much numeric experience is lost on death allows me to compute a very close estimate. (see death section for details) The Al'Kabor data and Darkpaw data matched. At first I thought it might be +0.2 and my AK estimates were off, but they were off by about the same amount in the same direction, and the Darkpaw data is very conclusive. My AK estimates ended up being very close using +0.225.

Hell levels were effectively removed in the Luclin era with bonus exp multipliers. I'll go over that in a later section. It's important to understand that the hell_mods have never changed.


Simple Exp Example

A human cleric needs:

1,000 lifetime experience to reach level 2
8,000 lifetime experience to reach level 3
27,000 lifetime experience to reach level 4
64,000 lifetime experience to reach level 5

level 2 requires 1,000 additional experience to complete from 0% in level 1
level 3 requires 7,000 additional experience to complete from 0% in level 2
level 4 requires 19,000 additional experience to complete from 0% in level 3
level 5 requires 37,000 additional experience to complete from 0% in level 4

As a consequence of this system, changing a player's experience value may cause the player's level to change by more than one. If you set a player's total experience value on the server to 40,950 administratively then they will end up level 4.5, no matter what their starting level was, when they kill an experience granting mob or they zone. (a little higher if killing a mob as the kill exp will be added)

Incidentally a cap on experience didn't exist before Kunark. You could fill up your experience bar at level 50 and then continue to add more exp after, then you could die and not visibly lose exp in your bar until it fell below the "full exp" value for level 50. When Kunark launched they removed this excess exp so players didn't log in at a level above 50 on day one of Kunark.

See this link for a classic experience calculator: http://web.archive.org/web/200206122...aps/eqexp.html


Race and Class Penalties and Bonuses

Experience required per level is not the same for every player and changes depending on race and class. (modern EQ however cancels the differences out with multipliers) Prior to Velious, exp gained per kill was the same for everybody and the penalties/bonuses were represented in the exp needed for leveling. Class and race penalties do not apply to AA exp. (at least when exp is set to 100% AA exp. see the AA section for details)

Most races require the same exp. Barbarians, Ogres, Iksars and Trolls require more experience to level. Halflings require slightly less experience per level. The Halfling bonus was supposed to be for Humans but Sony made an error and accidentally applied it to Halflings. (I don't recall seeing a dev quote of this but that's the rumor) Because of the rigid experience system, they couldn't easily fix this without changing every Halfling and Human's levels when they logged in after the patch, so they left it that way. (technically they could have fixed this the same kludgy way they did with class modifiers but they didn't bother)

Classes started out requiring different amounts of experience to level when the game launched in 1999. Hybrids required significantly more (~40%) and casters required slightly more. Rogues and warriors required slightly less. (~10%) Priest/healing classes were the baseline.

The class penalties were effectively removed from the game in January 2001, which was shortly after Velious launched. To accomplish this they simply granted more experience per kill to the classes that required more exp to level by multiplying gains by class_mod, canceling out the penalty. Had they instead set the class_mods to 1.0 it would have granted players extra levels at login which they didn't want. They also applied the class_mod for experience loss on death, otherwise the extra exp would have significantly reduced death penalties for these classes. This probably inspired their hell level smoothing later on as it's a similar solution.

Race penalties were removed in the September 19 2006 patch. The class bonuses for Warriors, Rogues and Halflings were left in much longer, until 2019. It's worth mentioning that race stats do make a large difference in leveling speed at low levels, so it's not like Sony added the penalties for no reason.

This producer's letter describes the reasoning behind the January 2001 changes: https://web.archive.org/web/20010124...s/letter.shtml
Reply With Quote
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 08:53 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3