I posted this on ffxiv core but im going to ask here too.
I've never completely understood why it has taken SE so long to fix the exp problems in the game. Coblyns are still really the best mobs to grind on, second best is to camp at an atheryte and just do behest every hour, and parties still seem useless.
I read a lot of responses in the past saying that its a complex system and takes a long time to fix. So my question to the techies and programmers out there is why didn't they originally just do something like this, and if they did, why take months to fix it?:
Note: <<! >> is a comment. ex <<! roar >>, and im not using any specific programming language.
So to start: Have a database with every mob and a set amount of exp they would give to someone of equal level. For example. Copper Coblyn = 60.
Now if you are level 10 and kill a level 10 copper coblyn you get 60sp.
If you are level 20 and kill a level 20 copper coblyn you get 60 sp.
Then use code similar to the following:
<<! declare variables >>
Var EXPbase.integer <<! will represent the exp the mob gives if your equal level to it>>
Var EXPnorm.real <<!exp you would get from killing a mob before bonuses>>
Var EXPfinal.real <<!exp after bonuses are added>>
Var bonus.real <<!whatever the players current bonus is in % form. so they might have .10 (10%) bonus from an exp ring, or 1.0 (so you'd get double exp) bonus from behest>>
Var LVLdiff.integer <<!the difference between the level of the mob and your level>>
Var LVLmultiplier.real <<!used to alter EXPnorm based on level difference>>
Var PlayerLevel.integer <<!players level>>
Var MobLevel.integer <<!mobs level>>
LVLdiff = (MobLevel - Playerlevel)<<!get a positive # if mob is higher level, and vice versa)
LVLmultiplier = (LVLdiff*.20) <<!basically you take 20% of the level difference. So if your 5 levels lower you will end up having a level multiplier of -1, which will then ensure you get 0 exp>>
EXPbase = (read: set-exp from database) <<! so you're setting EXPbase to be the exp you would get from the mob you just killed if its equal level to you>>
bonus = foodbonus + equipbonus + eventbonus + whateverbonus <<! basically add up all the exp bonuses from various places. i just made up some examples, but you'd have set variables for every source>>
If Party=1 then
EXPnorm = EXPbase + [(LVLmultiplier)*(EXPbase)] <<! so basically saying you add the exp base to 20% of the level diff. so if your 5 levels under you end up with -EXPbase so 0exp and any more levels lower you have negative EXPnorm>>
if EXPnorm < 0
EXPnorm = 0
elseif EXPnorm > 300 <<! sets a max EXPnorm>>
EXPnorm = 300
EXPfinal = EXPnorm + (EXPnorm*bonus) <<!So you add the normal exp to whatever % bonus you have times the normal exp. So if you had 20% bonus, you would do normal exp + 20% of normal exp. This gets you the final exp >>
Elseif party=2 then same as above with party modifiers.
So the point im trying to make is if they used a formula system like this and had a database of set mob exp's they should be able to fix exp issues in hours and balance out the game for partying. But a lot of people argued it takes weeks to balance things and to fix these formulas. And my question is why can't it be as simple as this?