Quote:
I feel something coming... something terribly bad... something we did this whole t4a thing for, to avoid this one problem..
A LOOP, OH GOD!
I'm going to assume that was a failed attempt at sarcasm as merely a manifestation of your ignorance of the issue, rather than blatant stupidity.
So allow me to enlighten you.
The reason we upgraded from t3a to t4a was not to avoid a loop.
The reason we upgraded from t3a to t4a was t3a stores time as a signed 32 bit integer, which can store a value between 2147483647 and -2147483647. It also stores time in 10ths of a second, so 3 seconds is 30 time.
If you divide 2147483647 / ( 600 sec/min * 60 min/hr * 24 hr/day * 365 day/yr ) you will end up with 6.8 years of uptime.
Obsidian was up longer than 6.8 years, but due to a few rollbacks or the long downtime in the early years, the in-game time reached 6.8 years a little later than that.
When it hit it's maximum value, it tried to add more time, since it didn't know better.
If you work with computers, you know that when you add 1 to a signed value that is at maximum, it "overflows", and turns negative.
so 2147483647 + 1 tenth of a second = -2147483647.
At this point the server then did 3 things at once.
1. It went about checkign everythign like normal, first checking decay times/etc
2. It realized a lot of things were created at a time that hadn't happened yet, so it either deleted them, or set their create time to the current time.
3. It went oh shit, this shouldn't be happening, and aborted counting time, while resuming all other functions of the shard. As a result, the passage of time stopped.
So after that last tick, we were perpetually stuck at a point in time 6.8 years before the shard went online the very first time.
This is very different from an infinite loop, where the following things happen:
Example Code:
Code:
x = 1
this is our start point
x = x / 2
if x > 0, then go to start
The computer will keep dividing x by 2, since it will never reach 0. Since it is not done with what it's doing, it will keep doing it, and will not do anything else.
What sphere does, is when it notices any set of instructions has been repeated for more than 5 minutes, it aborts that instruction, and continues on with what it was doing.
That means that no matter what infinite loop is created, the shard will only pause for at most 5 minutes, then will resume like normal except for whatever minor bug the loop itself created. As far as the computer is concerned, those 5 minutes never happened, so the first second after it resumes is counted as if the loop never happened, not the shard suddenly does 5 minutes of work.
Quote:
T3A time stop = permanent problem due to variable overflow. Time jumped back 13.6 yeras in time in the shard, and as everyone knows, timetravel destroys objects due to paradoxes.
Code Infinite Loop = counting problem for 5 minutes at most, does no real harm, then resumes like normal till next loop happens.