Character Ages may be different

Started by Tiernan, March 08, 2004, 07:26:51 AM

Characters may notice the age of their character has changed.  This is a result of efforts to align the game clock with the real-world clock.

I will provide more details later, but players should be advised that this is expected.

I'm requesting that players do not flood the staff with bug reports and wishes.

As I promised, more details about time handling and why the whole age snafu happened.

Layman's explanation:

Without getting overly technical, the passage of time used to be measured based on how many iterations through a processing loop.  For those of us who remember LP records, imagine each spin around the turntable being like a Zalanthan minute.  If you were like me as a kid, sometimes you made it spin faster so the singer sounded like Alvin the Chipmunk, and sometimes you made it spin slower so it sounded like a drunken baritone.  That's how time used to progress.  The more people online doing things and tasking the server, the slower the passage of time.  (So yes, HRPTs really do seem to last forever!)

The dilemma:

You could not accurately forecast what time it will be (or was) in Zalanthas because the passage of time was fluid and dynamic.  Sometimes 10 minutes a Zalanthan hour, sometimes 14 minutes, roll the dice, take your best guess.  I did a lot of data collection and analysis to come up with the average Zalanthan hour being about 10 RL minutes.  Trust me, loads of data all say it is so.

Now throw in a reboot, which attempts to make a "best guess" at what time it should be in Zalanthas based on the real-world clock.  Since Zalanthan time wasn't synchronized with the real-world, this guess was usually very wrong.  (I'm sure everyone can vouch for how awkward it was to relog into the server after a reboot to find the calendar had advanced / retreated by several days/months).

Adding salt to the wound, character ages are based upon two factors.  The first is the real-world time you created the character.  The second is the age you specified for your character to be at creation time.  Armed with this, the game would attempt to take a "best guess" at what age your character was, based on what it thought the difference in Zalanthan time was from your "real-world birthdate" to the present.  Just like the algorithm for figuring out what Zalanthan time ought to be from the real-world clock, this too was not very accurate.

Quick recap:

1) The progression of Zalanthan time and real-world time were not the same.

2) Upon booting, the server attempted to set Zalanthan time based on real-world time.  (Because of #1, this was usually inaccurate).

3) The server calculated character ages based on the real-world creation date of the character.  (Because of #1, this too was usually inaccurate).


The Solution:

Synchronize the passage of time in Zalanthas to the real-world passage of time.  (Easier said than done).

Knowing that a Zalanthan hour on average was about 10 real-world minutes I did a bunch of dimensional analysis and came up with this Zalanthan Time to Real-World Time chart:

10 RL minutes          =              1 ZT hour
90 RL minutes          =              1 ZT day
1 RL day                  =              16 ZT days

Let me comment that the last conversion of 1:16 was one of two important reasons for using 10 RL minutes / 1 ZT hour.  Having the ratio of Zalanthan days to a RL day is a very good thing to have.  For all the math geeks in the playerbase let me say that modulo arithmetic makes the conversion much less complicated and much more accurate.  For modulo arithmetic to work, we need to have a baseline ratio in place. 10:1 for minutes to hours is clean and simple, 1:16 for days is also clean and simple.  As long as Zalanthan days and RL days are in sync, we can manage everything else.

After that, there's simply no even ratio of ZT weeks to RL weeks, ZT months to RL months, or ZT years to RL years.  So, the best we can do is 1:16 on the days.  Continuing on with the dimensional analysis and conversion chart:

1 RL week                             = 112 ZT days or 48.5% (~1/2 ZT month)
14.4 RL days (~2 RL weeks)   = 1 ZT month
43.3 RL days (~6 RL weeks)   = 1 ZT year
1 RL year (365 RL days)         = 8.4 ZT years

And for grins:

3335.1 RL days (~9 RL years) = 1 ZT age

So why did my character's age get changed?

Alright, remember how I said your character's "Zalanthan birthdate" was stored in real-world creation time?  Well, because Zalanthan time is now synchronized with the real-world clock, the server is now able to accurately calculate what hour/day/month/year/age your character's birthday is.  It is also able to accurately calculate the amount of Zalanthan time which has elapsed since then to the present.  The guesswork and high variablilty of estimating your character's age is gone.  Knowing that your character was celebrating his/her Xth birthday on a real-world date, we can add the difference from then to now to X years and voila, your character's true age (not estimated age from before).  Guesswork's gone and boy were those guesses off!

What else does this mean?

It means that now things IC / game-related which require predictability of the game clock (eg. Collecting rent for apartments, disbursement of monthly salaries, etc.) are now really predictable.  I can tell you if you just got paid today that your next payday is 14.4 RL days from now.  The server now has the ability to do a lot more automated stuff if we want to take advantage of it.

Also, once I finish on a cgi utility, we'll put up a webpage that lets you figure out what Zalanthan date it will be for a real-world date.  (eg.  You want to have everyone meet at 7pm EST the following friday... now you can say "Let's get together at dawn on the 79th and plan our next move.")  Sure, you can still OOC the rl-date if you want, but now you have more info at your disposal to make things more realistic.

Summary:

1) Synchronization provides consistency

2) Synchronization provides predictability

3) Synchronization provides accuracy

4) Synchronization allows for automation of time-relative activities