It happens all the time. You go and read review about the newest game of the season only to find out that “it’s a shitty console port”. What happened? Probably a lot of things, but the one I want to discuss today is the controls. Elitists claim you can’t play an FPS on a console. They claim that you need inverted controls on your joystick. They claim that lightguns are the only way to play an FPS. They claim that platformers are better on the console. Again, what’s happening?
Control Relativity
Not all controls are made equal. In one form or another they are translating the motion and position of your body into numbers your computer understands. Some provide positions, some give velocities, others give accelerations. Anyone with a little math/physics background should notice that all those are related. You can integrate or derive them to get the others. The obvious every-day case being the mouse. It provides a velocity, and your OS integrates that to an on-screen position. That said, it should be equally obvious that the integration gives a form of “lag”. You can’t click anywhere on the screen, it takes time to move the mouse there. Replace the mouse with an artist’s Wacom(tm) tablet, and the situation is different. You no longer have the “lag” of the controller, since the tablet provides position directly. The astute among you will pipe up that either way you had to move your hand there. You did. But consider how you touch type, or blindly grab the beer by your side. Now think about how you have to keep your eyes on the mouse cursor whenever you are using it. It’s easy for your brain to touch a given position, but takes a little more concentration to judge speed and time to get there. The elite gamers however would still scoff at this. Why? they turned off mouse acceleration. It’s a common feature that gives the average user a lot more precision if they move slowly, but still the ease of being able to whip the cursor around when needed. That acceleration is one more “lag” in the way, making it harder to judge where the cursor is. Turn it off, and a mouse becomes almost akin to a tablet for accuracy, as your brain can quickly learn the “corners” of your virtual space.
So, we’ve seen how position(S), velocity(V), and acceleration(A) are all related in the input. We’ve also taken a quick look at how each can introduce some virtual “lag” in the way your brain processes the input. Some things take a tiny bit more thought than others. So the problem isn’t really the type of controller people use, but how it is translated to the game. The questions you should be asking yourself are: “What information is needed for this action?” and “How can I get that from my controller with the least amount of lag?”. Different actions obviously need different types of information. Flying a plane or driving a car would seem to require a relative motion. Shooting a bad guy in the head would seem to need a position. Picking items of an inventory, again needs a position. And, tossing a bowling ball would seem to require position, and velocity. How can we get each of those with the least lag?
Ok, so you made an FPS, and you obviously need a position for the player to shoot. How can we get that? On a PC, you simply translate mouse pixels moved to player degrees turned. You have a device almost as accurate as a tablet to specify the exact position on the screen you want to turn to. Most people’s brains figure this out instinctively and get good accuracy. Elite gamers, with their hours of practice, get excellent accuracy. So those people are on their PC high-horse. Whats different about a joystick? Most games use a joystick to provide information in the same time domain as a mouse, velocity. You take the position of the joystick relative to center, and deem that to be the velocity the player is turning at. Seems like your brain should easily translate that too. And, infact many gamers seem to think it is just fine. But, it’s another form of lag hiding in disguise. See, a mouse is providing an exact velocity that can easily be integrated by either the computer or your brain to come up with a specific destination position. What’s the joystick doing? it’s providing a velocity of arbitrary magnitude that your brain can’t integrate to give a destination position. So what does your brain do? it acts like a poorly tuned PID controler (proportial, integral, derivitive!) and over or undershoots the target resulting in lots of little corrections (or help from autoaim). Your hand with a mouse moves just like a PID controller too, the difference being that you already have years of experience moving your limbs to specific positions, resulting in a finely tuned PID curve. With the joystick motion, you have to train a new PID controller in your brain to model what the game is doing. That requires time, effort, and re-tuning every time you start playing the game. Ok, so what could they do to fix it? Goldeneye managed to get it mostly right. A joystick actually provides an absolute position relative to center. Map that to the screen space, and viola! you have an aiming scheme that your brain can once again almost instantly understand without retraining. Can you see why PC gamers now think those console-ported games “feel sluggish”, or better put, “feel like my mouse is being treated like a joystick”?
But you do lots of other things in games, like drive cars, fly planes, and walk around. And there are tonnes of other controllers out there. Why do those always seem to feel better on the console?
Lets assume you want to fly a plane. The obvious result of your control scheme should be a relative motion of your plane. You’ll want to bank left, dive down, climb up. So, your filtered controls should be giving you a direction of travel. The joystick seems like the most used choice for this. But what makes it work so well? Get up and walk around. You end up with a start point, a destination, and a velocity to travel there. Your brain is plotting a path, and a smooth velocity curve to get there (most people don’t walk like robots with sharp turns). Obviously, your brain has a “travel mode”, and it pops into that same mode when walking, driving, or flying. A joystick’s input, as translated to a magnitude and velocity translates well to your walking/flying/driving direction. Now this gets translated to a mouse and keyboard and everything goes bad. Many games (even you Battlefield) translate the mouse controls and keyboard buttons as if they were instantaneous velocity inputs. The player instantly loses there sense of “center”, it becomes impossible to “level off” the vehicle, and only a continious flow of small corrections will keep it on track. The problem is that the joystick isn’t really giving instintanious velocity inputs, it’s just providing a position relative to center. You can do the same thing with a mouse, since it already has a canonical “mouse cursor” representation of position. All you need is a “center” point, so why not pick the reticule? Wing Commander Prophecy did it, and for aiming it works better than a joystick.
Where is center?
So, I mentioned “center” a few times up previously. It’s important for the different control schemes that you notice how each controller is anchored. A joystick has a inherent center point and extents. A mouse lacks a these positional anchors, but has the strength of correctly representing distance moved giving your brain a virtual position anchor. Lastly, something like a light gun would, if properly calibrated, have physical extents but no inherent center.
Obviously, a light gun, tablet, or touch screen is going to be the epitome of selection technology. The physical position anchoring makes it easy to hit an exact location. So, you pick up a Wiimote, a PSMove, or your Kinect, and think “oh it’s a light gun” only to realize that it feels a bit “off”. Lets go back to the anchoring, and how a light gun is normally calibrated. See, the computer doesn’t know where the edges of your screen are, and a light gun is really no more than a very fast frame timer keeping track of the CRT’s scanline. By calibrating the controller, you’re telling the machine times based on your angle, type of TV, and distance. Taking a look at a Wiimote, it becomes obvious that it’s precalibrated. It tracks the light-bar you put on your tv, and it has an offset to take into account if the bar is above or below the TV. What it doesn’t have is a way to explain the extents of the TV. Instead, it uses the extents of the Wiimote’s camera. This invisible FOV becomes the translation to screen coordinates. Obviously, you don’t have a physical anchor anymore. You don’t even have a center point, because you have no way of knowing the offset above/below the light bar where the virtual center point is. The whole time a player is using the Wiimote, his brain is thinking “i can just point!” when really we are back to the situations we’ve seen already where he’s really playing a poorly turned PID controller, adjusting the cursor position incrementally to get it to where he wants. Similarly with the other motion controls (though some PSMove stuff has calibration screens).
A bad port!
So what makes the controls a root cause for people yelling “Its a bad port!”. Many developers seem to miss the strengths and weaknesses of relative vs absolute positioning information and how your brain adjusts to both. They just muscle one scheme into the other, resulting in “clunky pc controls” when they treat your mouse like the same relative motion they used a joystick for. It results in consoles having “laggy and imprecise” aiming that PC people toute as “mouse only domain”. And it results in “more motion control shovelware” because people can’t physically center themselves when using those motion controls.