Friday, March 5, 2010

Why Can't I Fly My Spaceship With A Joystick?

One of the more annoying questions that gets asked repeatedly, usually the person asking has already established that ship control in Eve is limited to double clicking in the direction you want to go, or selecting 'orbit this thing while my guns kill it'. There's a very good techincal reason for this heavy limitation on direct control, and it's all about making the game playable for pilots regardless of how slow and laggy your connection is. You see the clients and servers of Eve all run a simulation of everything in space near your ship, this is referred to as 'the grid'. The trick is to keep everything on grid moving as smoothly as possible while sending the absolute minimum amount of data between your computer and the server.

So, when you arrive at an asteroid belt the server sends you information on all the asteroids on grid, their locations, sizes and types, and after that it doesn't need to send your computer any more information, unless one gets mined out and disappears. Those rocks aren't going anywhere and you can't bump them about or change their location, even if you ram them in a titan you'll just bounce off. If there's any ships on grid they'll get loaded too, but ships are different they fly about, so the ships come with extra information describing their flight pattern, whether they're sitting still, flying in a straight line or orbiting a target. Your computer can keep track of these basic ship motions by extrapolating out from the start point, the only time updates need to be sent is when the pilot of a ship decides to change their flight pattern.

Now, this is also broadly resistant to lag, if the updates arrive a little late because you're on some dodgy wi-fi connection your computer maintain the local grid simulation and still figure out where everything is. So while your rifter is cutting an elegant arc of death around that doomed hauler there's almost no flight updates needing to be sent between the client and server, this leaves room for more important things like weapons fire and things going boom. On the other hand that joystick you use for MS Flight Simulator is sending updates to the software 50 times a second, detailed updates too, when you bump your desk and that joystick wobbles a little that wobble is carefully encoded into a bunch of x-y measurements and forced into the computer, and in a networked game all those measurments need to be forwarded to the server. That's a whole lot more data which adds to the network and server load for everyone involved.

But it's more than just this deluge of data, it's about a fair playing field regardless of your ping time, if you've ever played FPS games there'll be some 13 year old whining that he keeps getting killed because his cable connection has a terrible ping time. Ping is a measure of how long messages take to get from your computer to the server and back, and if this takes too long then it effectively slows your reaction time down so some people get a edge over others. In Eve the simulation is split into timeslices of about 1 second long (I don't know the exact length, but that's what it feels like when there's no lag), so when you click your mouse to approach and target someone that event gets sent to the server and then the actions get applied in the next timeslice. This applies to everyone's actions, so even if you've got a ping time of 300milliseconds you still have plenty of time to react.

Besides, would you really want to try steering a Battleship like you would steer a fighter jet? No you're the captain of this million ton death dealing monstrosity, you command your helmsman to approach the target while calling Scotty in the engine room to overheat the engines to get best possible speed.... when was the last time you saw Captain Kirk take the helm of a starship?

Lets face it, do you want to be Captain Kirk or Sulu?

No comments:

Post a Comment