Feature Specification: Rewards System

Scripted ALFA systems & related tech discussions (ACR)

Moderators: ALFA Administrators, Staff - Technical

User avatar
Overfilled Cup
Orc Champion
Posts: 437
Joined: Tue Apr 05, 2005 6:45 am

Post by Overfilled Cup »

two points Fionn:

What is the cutoff/wk...a sunday thing or a rotational system that tracks the past 7 days.

and who has the scripting ability to implement. Because it sounds grand in concept.
User avatar
Fionn
Ancient Red Dragon
Posts: 2942
Joined: Sun Jan 04, 2004 7:07 am
Location: Seattle, WA

Post by Fionn »

XP/hr, averaged over the previous [week] would be one way. XP / [previous 7 days, 10 days, 30 days] would be another way. The first benifits the 80/wk player, the latter the 5/wk player.

I think that's a descision for Admin/HDMs. As for coding, it's not hard. We're tracking pHP, pLocation, pEffects, etc, it isn't tough to add one more item as a counter, and track XP awards. If we do all this in an external (and replicated DB), then we have the added benifit of datamining across all of ALFA. If we do it as a String stored on the PC Bic, we have the advantage that the rate tracks to all servers.
PC: Bot (WD)

Code: Select all

     -----          -----          -----          -----
    /     \        /     \        /     \        /     \
   /  RIP  \      /  RIP  \      /  RIP  \      /  RIP  \      /
   |       |      |       |      |       |      |       |      |
  *| *  *  |*    *| *  *  |*    *| *  *  |*    *| *  *  |*    *|
_)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_(
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

You are correct Khaz. These are two separate issues. One is the farming problem, the other is the RP/immersion opportunity. I think the reason the two often get confused is because the latter is the basis for the actual algorithm (XP inversely proportional to number of kills).

Both are strictly applicable to dim ret though so I think vetting each concept is still appropriate.
Fionn wrote:I still vote we set a global dim ret script that tracks XP / hr or XP / wk and gradually lowers all awards as you ramp up.
This is obviously a leveling rate throttle, and while it's certainly a form of diminishing returns, it has more to do with enforcing slow advancement (correct me if I'm wrong here). We may be swinging a bit too wide in this discussion, so if we start getting into a lengthy debate, I think it'll need to move into it's own thread so we don't derail progress on this one.

My personal opinion is that it takes too microscopic a view of XP rewards to be fair as a global implementation (playing 10 hours consecutively in 1 week will not equal 1 hour a day for 10 days) and it's very much one sided (penalties for excessive XP but nothing for meager XP). I'm very leary of tampering with XP in this fashion. Furthermore, people pursue adventure for the rewards, and they expect them to be commensurate with the risks they take. A global XP throttle as you described could invert or eliminate altogether the risk vs reward balance, which makes me uncomfortable. (player kills a mob of 100 goblins and a hill giant, but ends up getting less for that hill giant than a goblin)
User avatar
Fionn
Ancient Red Dragon
Posts: 2942
Joined: Sun Jan 04, 2004 7:07 am
Location: Seattle, WA

Post by Fionn »

one sided (penalties for excessive XP but nothing for meager XP).
If DMs set their modules to award for the casual player, and our global scripts prevent it from being abused by the marathon player, this is *not* one sided. As it stands, we have often seen XP throttled to the point the only peeps advancing were focused on little else.

It should be fairly easy to nudge *both* sides towards the middle. The level/month proposal only addresses the fast leveler (and effectivly makes it One Rate to Rule Them All).

If a PC gets enough XP off 100 Goblins to count, he likely can't take out a Hill Giant ;) My point is to throttle the guy incrementally as he wades through the Goblins, Orcs, Lizards, etc. The guy that kills fights rarely will 'learn more' from each fight than the guy that fights 6-10 times a night.
PC: Bot (WD)

Code: Select all

     -----          -----          -----          -----
    /     \        /     \        /     \        /     \
   /  RIP  \      /  RIP  \      /  RIP  \      /  RIP  \      /
   |       |      |       |      |       |      |       |      |
  *| *  *  |*    *| *  *  |*    *| *  *  |*    *| *  *  |*    *|
_)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_(
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

Coming back to the original intent to document current behavior, here's what I've found by looking at the code. It appears like the dim ret script actually sets the XP scale for rewards, not just the penalty. The algorithm rewards a maximum of 25% of standard XP and is scaled downward as follows:

1 Visit = no penalty (25% of standard XP awarded)
2,3 Vists = 5% penalty
4,5,6 Visits = 10% penalty
7,8,9,10 Visits = 15% penalty
11,12,13,14,15 Visits = 20% penalty
16+ = no experience (0 XP awarded)

Is this the correct interpretation? I'll add it above and can alter it as need be.

I'll also add the TRIBAL variable as that doesn't alter any aspect of the algorithm. It merely gives us the possibility of adding finer controls within the dim ret script or other AI systems down the line.
User avatar
Fionn
Ancient Red Dragon
Posts: 2942
Joined: Sun Jan 04, 2004 7:07 am
Location: Seattle, WA

Post by Fionn »

Those numbers sound about right for spawn specific DimRet. I strongly feel we should expand that functionality to allow group (EL vs CR) awards and have some sort of decay rate. If we don't wish to move to a global negative feedback scenario, then do it on the existing DimRet functionality.

It is bs to bet XP from mobs after your 16th visit in a week. It is not bs to get XP from them your 16th visit in a year. This allows DMs to be a bit freer with XP without fear that people will abuse it. The existing paradigm gives only so much per server, then you're down to DM awards. This favors PCs that travel servers - both in their share of DM attention and the fact they get an essentially infinite supply of spawns to farm.

For the sytem you have, I'd simply change it to visits/week and increase the penalties.
Visits/Week........XP rate
1.......................25% of standard XP awarded (no penalty)
2-3....................15%
4-6......................7%
7-10....................3%
11+.....................0%

The problem with this is that PCs will continue to acrue wealth without XP. We really need to simply stop this at the source. If the mobs come back that often, we need to have them flee someone who has killed them recently. This could be done simply by checking the party and lowering the spawn % if anyone is 'feared' by this spawn. Alternately, we could set an onDeath/onPercep for all mobs and have it affect Moral (we'd need to correct flee to actually run to the AT and despawn)
PC: Bot (WD)

Code: Select all

     -----          -----          -----          -----
    /     \        /     \        /     \        /     \
   /  RIP  \      /  RIP  \      /  RIP  \      /  RIP  \      /
   |       |      |       |      |       |      |       |      |
  *| *  *  |*    *| *  *  |*    *| *  *  |*    *| *  *  |*    *|
_)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_(
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

*bows down at the feet of Fionn's superbly aligned chart*

Is that an IG week or an RL week? Would a change to the dim ret scale require admin/standards approval?

(In regards to fleeing, I also think a movement rate increase may be warranted just to ensure no easy pickings.)
User avatar
Fionn
Ancient Red Dragon
Posts: 2942
Joined: Sun Jan 04, 2004 7:07 am
Location: Seattle, WA

Post by Fionn »

Oh, the details of *anything* we do will need Admin approval. I would certainly get that before we sit down to code on this.

Our current logs already makes an Exit Report for each PC. It logs XP and GP gains, as well as time elapsed. I'd far rather use that for a global marker on the PC (at least per server) than worry about it per spawn. If you've already gotten 10K in one week, you shouldn't be getting full XP just because you've never fought *Red* Shield Orcs before, only Black, Blue, Brown, Green, and Paisly.

The exact numbers we settle on aren't too important to me, but I'd really rather see a holistic system for control rather than this cherry pick approach that doesn't address DM awards, statics, or new NESS flags as the DMs change things about (let alone a DM that forgets to tag NESS with an ID). I know a place on SD i can get 200XP in about 10 minutes every day. Murky would spank anyone that did it, but he shouldn't *have* to be the safety valve.

Code: Select all

int AdjustXPForXPRate(int nXPAward)
 //takes the total XP award and adjusts for the PC's current XP/hr over the last RL week
{
  int limit = 150; //max RL hourly rate
  int target = 50; //amount below limit where we wish people to be

  object oPC  = GetTarget());
  int hours     = GetHoursLastWeek(oPC);
  int XP         = GetXPLastWeek(oPC);
  double rate = XP/hours;
  if (rate < 1) rate = 1;
  if (rate > limit) rate = limit;
  int award = nXPAward * (
    (limit - rate) / (limit - target)
  //e.g. (150 - 150) / (150 - 50) = 0% - you are at/over limit - no more XP
  //e.g. (150 - 100) / (150 - 50) = 50% penalty since you are at target
  //e.g. (150 - 50) / (150 - 50) = 100% no penalty since you are at half target
  //e.g. (150 - 1) / (150 - 50) = 150% bonus since you aren't advancing
  )
  return award;
}
Any such system needs to allow DMs to bypass it, and also adjust the PC's current % rate. This should be a system to relieve DMs of management tasks, not take control away. Even if we don't tie this into the XP awards, there is no reason not to display an *informational* screen on the XP wand to show a PC's weekly, monthly and total XP/hr (date last leveled, number of times dead, etc).
PC: Bot (WD)

Code: Select all

     -----          -----          -----          -----
    /     \        /     \        /     \        /     \
   /  RIP  \      /  RIP  \      /  RIP  \      /  RIP  \      /
   |       |      |       |      |       |      |       |      |
  *| *  *  |*    *| *  *  |*    *| *  *  |*    *| *  *  |*    *|
_)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_(
User avatar
NickD
Beholder
Posts: 1969
Joined: Sat Jul 31, 2004 9:38 am
Location: Auckland, New Zealand

Post by NickD »

As another XP issue, we currently have 2 other XP alteration things that come to mind.

1. In a group of varying levels, the higher level characters get a bigger share of the XP.

2. If a monster is deemed too strong for a character (CR=Character Level + 4 I think) no experience is awarded.

In these cases will dim ret be considered?
Current PCs:
NWN1: Soppi Widenbottle, High Priestess of Yondalla.
NWN2: Gruuhilda, Tree Hugging Half-Orc
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

NickD wrote:1. In a group of varying levels, the higher level characters get a bigger share of the XP.
Hmm...in 3.5e, it's actually recommended that you award XP based on individual CR. So, each party member would be awarded XP based on their level and the monster's CR divided by number of party members as opposed to calculating average party level first and awarding an equal share of XP to each player.

Dim Ret should apply regardless as the deduction is a % of the XP awarded.
NickD wrote:2. If a monster is deemed too strong for a character (CR=Character Level + 4 I think) no experience is awarded.
I'd say not. Dim ret should only apply if XP > 0, but since dim ret is tracked per spawn point, not creature, it'll be difficult to factor this in I think.
User avatar
Fionn
Ancient Red Dragon
Posts: 2942
Joined: Sun Jan 04, 2004 7:07 am
Location: Seattle, WA

Post by Fionn »

We don't award an equal share, we award based upon (used to be avg level) highest level, then that is divided amonst all the levels of the party.

We used to follow 3.0 and calc average level, but this wound up with a serious exploit: PC10 takes a pair of PC1 into the woods, kills a CR5 (no challenge to CR10) and is awarded 10/12ths of a Party4 vs CR5 award. This caused anyone over about 5th to skyrocket if they 'showed the greenhorns the ropes'. It also resulted in free XP for those standing in the back 'covering' the veteran.

This was flat out changed to highest level as this has little effect on a balanced party. I would highly oppose changing to individual CR awards, as this would allow a PC1 to get an award for a CR5 as if he'd killed it with a single other PC1, rather than as part of a party with a PC10 (which he may have had no active part in).
PC: Bot (WD)

Code: Select all

     -----          -----          -----          -----
    /     \        /     \        /     \        /     \
   /  RIP  \      /  RIP  \      /  RIP  \      /  RIP  \      /
   |       |      |       |      |       |      |       |      |
  *| *  *  |*    *| *  *  |*    *| *  *  |*    *| *  *  |*    *|
_)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_(
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

I'll note that XP formula as it's an important standard to be aware of.

For the record, here's how XP would break down between the three methods (XP based on CR table in DMG 3.5e):

PC1 + PC5 team up to kill a CR3 creature.

1. Individual lvl:
PC1 = 900xp/2 = 450xp
PC5 = 750xp/2 = 375xp

2. Highest lvl (5):
PC1 = 750xp/2 = 375xp
PC5 = 750xp/2 = 375xp

3. Average lvl (3.5 rounded up to 4):
PC1 = 800xp/2 = 400xp
PC5 = 800xp/2 = 400xp
User avatar
Fionn
Ancient Red Dragon
Posts: 2942
Joined: Sun Jan 04, 2004 7:07 am
Location: Seattle, WA

Post by Fionn »

No.

In all but the first, you should be dividing the TOTAL award by the number of levels, and awarding each PC his 'share'. This means the PC5 gets 80%.

Not sure if that should also be used for the first method, or some hybrid.
PC: Bot (WD)

Code: Select all

     -----          -----          -----          -----
    /     \        /     \        /     \        /     \
   /  RIP  \      /  RIP  \      /  RIP  \      /  RIP  \      /
   |       |      |       |      |       |      |       |      |
  *| *  *  |*    *| *  *  |*    *| *  *  |*    *| *  *  |*    *|
_)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_//(/|_)(__)/\\_(
User avatar
NickD
Beholder
Posts: 1969
Joined: Sat Jul 31, 2004 9:38 am
Location: Auckland, New Zealand

Post by NickD »

I've never gotten 450XP for a creature of any CR on ALFA :shock: I remember when orcs used to be 15XP in PnP. And the XP to level up doubled every level. :shock:

Anyway, none of the above are what we have now, as the higher level character should get more XP. This is because it is assumed that the higher level character does more work, and the lower level characters are more likely to "hang around the back". It's part of the whole anti twinking thing. Over a year before I came here, I played on a non-RP server and I got to level 16 in a week by just tagging around with the higher level characters, watch them kill mobs and getting XP for it. I got bored very quickly, and it's something we should at least try to avoid here.
Current PCs:
NWN1: Soppi Widenbottle, High Priestess of Yondalla.
NWN2: Gruuhilda, Tree Hugging Half-Orc
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

That XP was just for illustration NickD (straight out of the DMG)...it's scaled way down in ALFA. It's the method which I was trying to compare.

So Fionn, you're saying a PC gets XP based on the percentage of the total party level they are?

In the example above, ALFA's formula then becomes:

(base XP)/(total character levels) * (character level) = XP earned per character

750xp/(5 + 1) = 125

PC5 = 125 * 5 = 625
PC1 = 125 * 1 = 125

PC5 gets effectively 83% of the XP.

Is that it?

Method 1 is the 3.5e XP distribution and method 3 is the 3e XP distribution. Level only determined the base XP, not the distribution of it, to my knowledge.
Locked