Groove theory
Featured Article Nominee | |
This article has been nominated for Featured Article status. Please go to the Featured Article candidacy page and discuss the page's nomination. |
Groove Theory was a cheat for Urban Dead that claimed to exploit an apparent lack of a random number generator in the game, that performing an action exactly eight seconds after a successful action would also be successful. It did work, but no longer does.
Kevan's comments when he fixed it were:-
"There is some pattern to the random numbers, playing around with them; "srand(time())" actually brings back some pretty terrible patterns, and an eight-second wait will catch some of these. I've changed the code to use a different mechanism, so Groove Theory won't work any more. (And would have looked into this earlier if anyone had actually told me about it, of course.)"
What groove theory actually exploited was a flaw in the way random numbers were generated. Each time a player performs an action, the web server launches a program to process the response. This code seeds (initializes) the random number generator with the number of seconds that has elapsed since the epoch, or January 1st, 1970. Then the random numbers are pulled from the random number generator. If the seeds have the same low order 3 bits (gave the same remainder when divided by eight), the first few "random" numbers generated would, in fact, share similar values with any set of random numbers that were generated eight seconds before or after it. Other potential patterns could also emerge and dissipate over time.
Original Groove Theory Document
Copyright 2005 by JOSH MCCORMICK All rights reserved. If you distribute this, please leave this notice intact, okay? email: jmccorm@yahoo.com
==================================================
Background -----
Two of the most important actions in Urban Dead are luck based.
The first is your search action. Be you in a hospital, looking for first aid kits, or in a police department, trying to stock up on ammo. Your chance of finding something depends on luck, and the odds aren't great. Maybe 10 percent?
The second major action in Urban Dead is attacking in combat. Based on your weapon and your skills, you've got a certain percentile chance of hitting your opponent.
But have you noticed that there is something strange about the way your luck works? If you're searching a police department, and you find an item, if you immediately search again, you almost never find anything. And if you immediately_ search again, you still don't find anything! Yet in combat, when you hit an enemy, if you immediately attack them again, you're more likely to succeed.
What is going on?
The Secret ----
Think it is random if you succeed at something or not? You're wrong! As it turns out, the game does not use a random number generator to determine success or failure. It isn't random at all. Read that again. It isn't random at all.
Well, if it isn't random, what is it? It just seems random because you didn't know how it works. As it turns out, your chances of succeeding are totally based upon your timing. Good timing means you'll almost always succeed. Bad timing means you'll almost always fail.
Good timing? Bad timing? What is this, Dance Dance Revolution? Almost. Following this method to improve your odds of succeeding requires two main parts. First, you must find the groove. Once you have found the groove, you've got to stay in the groove.
Finding the groove ----
Finding the groove is easy. The only downside is that it costs you some AP to do. Let's say you're searching for an item inside of a police department. Whenever you hit the [SEARCH] button, you need to start counting forward. You know, 1... 2... 3... 4..., like that. Count at a regular pace that is something close to 1 second per number. The count starts the moment you hit the [SEARCH] button. Not when you see a response back on your screen.
How do you know when you've hit the groove? The answer is simple. You succeed. In this case, you find something. (It doesn't matter what that something is, since I don't believe you can control what you find, only your chances of finding something.) When you find something, you've hit the groove.
So, if you hit [SEARCH] and started your count, if you didn't find anything, stop counting. Wait one second. Try again by hitting [SEARCH] and counting forward from the moment you hit that button. What is important is that you've got a good count going once you've successfully searched and found an item.
Staying in the groove ----
Okay! You hit [SEARCH] and started counting forward. You've found something. That means you're in the groove. Congratulations! You can stop wasting AP and start being successful.
Now, at this point, you've got to stay in the groove, and it can be a little difficult, for timing is everything. A success always happens at regular intervals. By my estimation, it is approximately every 8 seconds. (It may be very slightly longer or shorter for you, based on how fast you count. Everybody is different.)
But every 8 seconds or so, an action with a 10% chance of succeeding will succeed. And a search has about a 10% chance of succeeding.
Still counting forward, right? Keep counting! When you've counted through 8, hit the [SEARCH] button again. If your timing was spot-on, you'll succeed... AGAIN. (And, when you hit that [SEARCH] button again, you've got to start counting forward again from the beginning, because if it succeeds, in another eight seconds from now, you'll succeed again!) You can repeat this over and over and over. Once you are in the groove, the only thing that will cause a failure is losing your timing.
Losing your timing ----
It is easy enough to do. You might have counted too fast. If you did, you're going to try to catch the next groove a little too early. Typically, I am able to pick it back up by waiting about 1 second after I hit the [SEARCH] button, and then hitting [SEARCH] again. If you don't find anything, you may have been too late for the groove.
If you've done two searches (your regular 8 second mark, and then another 1 second later) and still haven't found anything, you may have overshot the groove. You might want to wait six seconds, and then try picking up the groove again. There is no sense in performing a [SEARCH] right after you missed the groove. Those searches will always fail. Only search around the groove marks.
Combat grooves ----
Grooving in combat is a little different, in that you have a much higher chance of success in combat. The method is exactly the same as using the groove while searching. But you have to be aware that you grooves will be fatter in combat because you have, say, a 30-60% chance to hit. So, if you attack a character, and immediately succeed, be aware that you could be at the start, middle, or tail end of a fat groove.
Fat combat grooves ----
Once you're experienced with grooves, as an advanced skill, you can take advantage of the fat combat grooves. If you attack a character at the very start of a fat groove, one second later, you can attack again and also succeed! Very easy to do, as long as there isn't any netlag. Just don't lose your timing. The eight second mark is between the start of the grooves, so if you attack, succeed, and attack again 1 second later, your next groove is going to be only about seven seconds away. A second attack in a fat groove is easier to hit than the next groove which is eight seconds away, so working a fat groove is to your benefit. If your percentage is high enough, and the lag is low, you can potentially fit three attacks into a fat groove with advanced firearms training, for example.
Changing weapons in the groove ----
Another advanced skill is the groove weapon change. Got limited ammo that you need to conserve? Almost all weapons share the same groove. Yes, you can find the groove with a punch. Then, once you're in the groove, you can switch to a pistol or shotgun. Grooving with a shotgun is groovy, indeed. If you're timing is perfect, you can kill a character with 5AP. The only exception to this seems to be the flare. I haven't had spent too much time grooving with flares, but what little research I've done seems to indicate that they're a bit different.
Weapon choice when grooving ----
Go for high damage weapons. Zombies, use your teeth. Humans, that'll be the shotgun, then pistol, then axe. The percent success is no longer important, because you're having to perform for your success instead of relying on luck. Avoid grooving with flares unless you're figured this out where I haven't. (And maybe you'll be nice and email me to let me know? jmccorm@yahoo.com)
Dealing with lag ----
If you've got some bulk transfer going on, or a P2P client running, you're going to be better off if you disable it while trying to groove to Urban Dead. Also remember, once again, that the timing is based upon when you hit the SEARCH or ATTACK button, and not when you see a response on the screen. Finally, if you miss a groove, perhaps because the server didn't come back in eight seconds, or maybe to got sidetracked, don't dispair. Keep counting up and count to 16. You'll just try to catch the next groove.
Summary of groove theory ----
I don't have the exact details, and I likely won't without the source code. But I've got a decent enough approximation, although the specific numbers are a little off.
When you perform an action, the server takes the timestamp of your request, divides it by 8 or so, and then works with remainder (0-7). If the result is 0, you're going to succeed. No question. How far after 0 (1, 2, 3, etc) is still a success depends. If you're searching, then you'll always need a zero. If you're using a weapon, how far past 0 is still a success depends on your skill level with your weapon. 6 and 7 are always a failure.
So, every 8 seconds, you can always hit upon a success.
Groovy. Comments, questions, criticisms? ----
I began researching the grooves when I noticed the subtle patterns in successes and failures in searching and combat. Experimentation led me to finally working out a larger theory that actually turned out to be easily worked and repeatable. It was just a matter of making some key observations and then coming up with a theory to explain it. If you want to email me, I'm at jmccorm@yahoo.com, and I also read the NecroTech Yahoo! group.
I didn't discover this right away when I started playing, but I've managed to earn a level 16 military character in 28 days. That, and I've had to sing for my supper on this one, between discovering the grooves, and then the working the timing to stay in the grooves. Is this cheating? Smart playing? I'm too close to the discovery to be objective. You decide.
Josh McCormick jmccorm@yahoo.com