Editorials

Asherons Call: srand Explains XP Pass-up

I would be happy to tell you what I can about the process by which you pass experience to your patron, and how our changes this month affected that.

Let’s start from the beginning and look at this step by step.

1) The vassal earns XP.
2) This XP is adjusted by the vassal’s loyalty modifier.
3) The vassal adds this adjusted XP to his allegiance XP cache. There’s a couple of important things to know about this cache: the size of it depends on the level of the vassal; and this cache is *not* cleared when you log on or off, only when it is full. More about that in a moment.
4) If adding this XP causes the cache to be full or more than full, then all of that XP is passed over to the allegiance manager object, and the cache is cleared back to 0. (If the cache has not been filled, then nothing more happens at this point.)
5) The allegiance manager object finds the vassal’s patron and looks up the patron’s stored info. It uses this info to adjust the incoming XP by the patron’s leadership modifier (which also includes time sworn and number of vassal modifiers, etc).
6) Now the allegiance manager object checks to see if the patron is currently online. If he is, the allegiance manager object informs him that he has just earned some allegiance XP. If the patron has a patron, he now starts this process over at step 2).
7) If the patron is not online, the allegiance manager object stores the XP with the patron’s other info. This XP will be given to the patron when he next logs in. Now the allegiance manager object adjusts the xp by the patron’s loyalty, finds the patron’s patron, if he has one, and starts the process over with him at step 5).

In this way, the allegiance experience filters up the allegiance tree, all the way to the monarch.

With the March update we changed this system in exactly one tiny way: we changed the size of the allegiance XP cache. We did this in order to reduce extraneous messaging between objects on the server. Looking at the process above, you can see why we’d want to do this — it’s a complicated process, and if we do it every time you earn 50 XP, all the way up the tree … it adds up. So by making the cache size on the vassal larger, we reduced how often each link in the chain is sending XP up to their patron, and that means less server load.

Now, as I mentioned above, the size of the cache is dependent on the level of the vassal. It used to range between 50 xp and 2000 xp; now it ranges between 1000 XP and 1,000,000 XP. We chose these numbers based on server performance, although we may decide to tweak them based on player feedback. We didn’t expect that the change would be as noticable as it is, which is why there was also no mention of this change in the dev notes. (To be honest, I think we were thinking that the caching took place before the lyalty mod, which would mean that the amount cached was much larger.)

In your particular case, your vassal character probably hasn’t filled his cache yet. I’m assuming he’s fairly high level and has a large cache. Until he fills his cache, your patron character isn’t going to see any of that experience, no matter how many times you logon and off. As soon as you do fill that cache, your patron character will receive the experience.

I hope that helps explain the system a little better, and explains why we made this change and how it affects you.

About the author

Asherons Call: Another Rant

Previous article

Asherons Call: ACVault’s 20 Questions with Kwipette!

Next article