Player XP calcuations help
#1
Greetings! New poster here.

I'm looking for some help with player experience calculations. I'm working on an online calculator to help gauge where to best level based on monsters XP and your character's clvl.

Tool uses the patch MPQ .txt files that have been ported to MySQL as it's data source. I'm pretty sure I'm generating the correct base XP for each monster, but having trouble calculating the actual XP a character receives per kill after factoring in the clvl 70+ penalty and the various penalties from differences between clvl and mlvl.

I think I have the lvl70+ penalty down correctly - it's just x/1024 where x comes from the experience.txt table, correct? It's the rules for mlvl//clvl differences that have me confused, and the order in which these two penalties are applied.

A 'beta' page of the calc is up in a temporary location at:
Beta calculator

There's a link to the PHP code I'm using for the mlvl//clvl calcuations. If anyone could review that code, or provide a basic tutorial on the rules (or a link to the rules) I'd certainly appreciate it.

Thanks!
Reply
#2
Considering that the mlvl/clvl penalties are multiplicative with the experience.txt table, the order really shouldn't matter. I suppose if you were trying to handle the trunctaction, it'd be safe to bet that the mlvl/clvl penalties are applied before the 70+ penalties, which were implemented in a later patch.

http://www.battle.net/diablo2exp/basics/ex...xperience.shtml


One thing, though, that you should reallly, really take into acount with your experience calculator, is monster density. It doesn't matter much if a monster is your ideal kill if there are only 30 of them per area.
Great truths are worth repeating:

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 21:9

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 25:24
Reply
#3
I hate Diablo 2, 1.10. If I read that right, a level 98 character on his way to 99 only recieves ~0.5% of the normal experience perkill? Does this apply to single player too?

If I change the x value you mentioned above, will that remove this ridiculous non-sense (not like I'm ever going to play diablo 2 again, but still, I'd like to at least think it would be worth my time if I did).
--Lang

Diabolic Psyche - the site with Diablo on the Brain!
Reply
#4
Do you really need lvl 99 over 98?

75 is given. 85 is perfectly attainable. If some people wanna waste their lives away for the sake of status on the ladder of some free game, to up that lvl number just once more from 98 to 99, fine by me.
Great truths are worth repeating:

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 21:9

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 25:24
Reply
#5
here are some ideas for your exp calculator:

there should be a function that it calculates the average exp of all monsters in an area... (i actually realized that, but just in access..., the problem i have is that i don't know how often a monster spawns in a certain area, i just know THAT it spawns, maybe you know an answer...)

the reason to calculate this is simple: if you go exping in a certain area you kill every monster an not just one

so its much more handy to see with what level you should exp in which area...

the second thing you could do is calculate the expfe ratio you get, so you can see where you can kill fast AND get a lot of exp!! based on area would be perfect, but there is the same problem as mentioned above...

Paxinor
Reply
#6
Expfe ratio would be worthless, since different mobs have different resistances to different characters and different degrees of lethality and difficulty, not to metnion the intangible benefits of that specific mob's AI (e.g. certain mobs are "intelligent" enough to stop just short of firewalls, allowing you to cast another firewall under them while they wait for the first to disipate, a couple of mobs have flee when another mob near them is killed making them more accessable to characters with weak cc, ranged attackers are easy bait for barbs with taunt, certain mobs are more agressive than others and tend to bunch up in different geometries best suited to different AoE attacks, etc).


Keep it simple. If I wanted ALL the data on a given monster, I'd just look it up at d2data.net . Keep it to their exp, lvl, resists, & hp seperately; monster density is one of the few things d2data.net doesn't list (their spawn pack size). We don't need on-the-fly analysis.
Great truths are worth repeating:

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 21:9

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 25:24
Reply
#7
i totally agree with you and you always have to look "manually" at the area

BUT first you can adjust your char to the levels with a good expfe ratio and you can still look at the resits after you selectet, let's say the 5 areas with the best expfe ratio

let's make an example: small monsters have usually a very good expfe ratio so it might be usefull to skill a skill which is good againgst monsters like imps or fallens or whatever

and second its not that hard to select the right level. Lets say you are level 30.. You only should play in areas where the monsterlevel is 25 - 30 (okey maybe 31 oder 32 is also possible) then you have left maybe 10 areas, and i tell you the expfe ratio goes from 0.5 to 1.5 and thats a pretty big difference even if you dont calculate totaly exactly and leave factors like resists away!

so you take the best 3 expfe ratio areas and look at them manually. Take the one which is the easiest for your char based on the other, not calculatet stats

you have to think a littlebit but im sure it would increase your leveling speed!!

and it would be maybe more usefull than just knowing the exp per single monster!
Reply
#8
Thanks for the suggestions. I am planning on adding monster density and spawn sizing - just trying to learn enough about it to do so somewhat accurately. Looks like monstats.txt holds MinGrp and MaxGrp fields that determine group size, and levels.txt holds MonDen - which indicates how densely populated an area is. Those should help.

Also trying to estimate XP from unique/boss packs. Just from quickly reviewing the txt files there's some intriquing areas like Up & Lo Kurast, with the lowest monster density overall but each with 7-9 unq groups in hell.

Also will be adding avg HP's and relative HPs under each resist (i.e. 50% fire resistance means a 1000HP monster will have 2000 'fire' HPs.
Reply
#9
yeah sounds good...

i personaly think that exp callculations per level are much more handier than exp callculations per monster...

you definitly have to take in the resits too, and especially the resist imunes!! because its very usefull to know in which area the least Lightning Imunes are for a Javazon...

in normal and nightmare the expfe ratio is maybe more important (especially in normal) for fast leveling because you dont make that much damage but in hell the imunes and the resits will be very very important

im gonna try to create some table which are handier than the original ones... if you want i could send you a description for those tables maybe you can use them for your skript


another question is:

is it better to kill very fast in a one player level and get less experience or kill slowly and recieve less exp, that may be very interessting and i am pretty sure that there are big differences from for example e melee weapon or a frozen orb...

sadly i somehow couldnt find the file where the rules about how much stronger the monsters get per new player and how that party exp system works now

so if anyone nows the forumla or where it is please tell me

of course some of you maybe think now, that it's pretty useless to callculate such things because everybody "sees" how fast you exp in what area

but often the feeling doesn't tell you the truth... that isn't only a rule for diablo that's a general rule for all siences...
Reply
#10
okey i did it!

i calculatet the areas where the different elements make the most damage

what i did was: calculate the average HP. then i needed a formula for the resists for multiply the HPs. The Formula for Health with resists is: HP*(1/elementresit*0.01)

so now i createt the correct HPs with the resis. For imunes (>= 100) i put in 10000 so the exp/HP would be very small and then affect the average of the expfe ratio very negativ per level...

for the ones with no resists i put in the factor 1

so now i could calculate the average exp/hp per area and this ratio tells us in what areas our elements are the most effective!

the results were pretty clear!

phys damage in act 5 hell

0.58 exp/HP => 3 best levels: Wordstone level 3, Hell3, Bloddy Foothils

magical damage

1.07 expfe(!!!!) Hell3, Worldstone 2,3

fire

0.86 exp/HP cellar of pity, halls of anguish, glacial caves 2

lightning

0.79 - 0.59 crystalized cavern 1, throne of destruction

cold

0.6 - 6.5 worldstone, hell1/hell2

poison

0.79 halls of anguish, hell1, areat plteau

as we see, magical damage is the absolut best element, and because blessed hammer is a good skill to (the quality of the different skills IS NOT included in this calculation, of course...) he well be the absolute best char to reach a very high level very fast!!

fire is pretty good too, cold is basicly the worst element

as i said before: the skill mathers to, but the cold skill has to be twice as god as the magical skill to catch up!
Reply
#11
That's a very impressive calculator. I have written my own little one in Excel, too :)
It is indeed the case that mlvl/clvl calculation are before the lvl70+ penalty ones, but that's about the only thing i've looked into, code wise. They're all integer division btw, so rounded down, but unless you use the correct order you might never get the exact same numbers as the game uses. (I'm trying to find that out myself right now, posted at the PK). Also the mlvl >= clvl + 10 penalty is 2/256 now, this has changed from 1.09 to 1.10. The tables are in d2game.dll, at 6FD293A4 and 6FD293D0D0.

I had like a day to find out why a quill rat in normal (players 6) gives 1 exp and not 2 to a lvl 78 char. :D
Reply
#12
Poison damage does much more damage than it really does, in that is does its normal damage, and it also removes any regeneration from a monster. So if they are regenerating 100 life per second, and your poison does 100 damage per second, you are, for all purposes, doing 200 life per second. The same with physical if you have prevent monster heal.
And about the cold... It chills enemies, making it safer (and frozen orb, for example, can hit enemies more reliably [than magic hammer] from a farther distance away), and safer is better in HC.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)