At this point, it's hard to imagine someone not having played a space sim at some point. Whether it's the pithy original Wing Commander, or the venerable X-Wing and Tie Fighter games, or the more modern Descent:Freespace titles, we've all at least seen them, and most of us have done our best to break a joystick or two (I killed one playing Freespace... A Wingman Warrior, too!) dodging enemies.
But all of them fall short of the mark for me for one or two reasons. The big reasons is, as usual with me, physics. Number two is control. Admittedly, the biggest problem with controlling this stuff is that the right controller hasn't really been invented. The closest you get is a full HOTAS system (Hands On Throttle And Stick) plus pedals, but pedals aren't right for a space sim, at least not the way they're provided now. Let me tell you what I'm talking about.
Every space superiority fighter in every game to date has been crap. I'm sorry, folks, I know you may love these games, and I do too (Well, the Freespace stuff, anyway) but the designs are idiotic. The best fighter design I've yet seen in mainstream media of any sort is the Star Fury from Babylon 5. Yeah, that's predictable. Yeah, you've heard it before. Yeah, it makes tremendous sense, and I stick by it no matter how much the cliche that declaration has become.
Let's talk about how you want to be able to move in space; Any direction you please. Admittedly, humans are still going to be limited in space by our insistence (based on our body type) on having an "up" above our eyesight, and a "down" below it. In a gravity well, this makes a lot of sense most of the time. Out of it, it's pretty pointless. Orienting yourself to something in space isn't feasible or desirable; What do you orient to? Why would you do a dumb thing like that?
So, in space, you want to be able to move in any direction. You can achieve this with a fairly limited number of thrusters. A design like the star fury is fairly desirable for a human, though, because it lets you turn side to side (a natural motion for us) more easily than rotating forward or backward (Which is to say, around the X axis.)
So anyway, you want to be able to rotate around any axis, or move along any axis. This is called having six degrees of freedom. There are a couple of input devices for computers which give you those six degrees, the best known being the Spaceball. The Spaceball (Once by spacetec, now by Labtec) is a ball on a cradle with some buttons around it. The ball can be rotated or pulled in any direction in an analog fashion. Obviously something like this would be the ultimate 3d controller.
Of course, something like that wouldn't be too appropriate in a fighter craft, because you're going to be under some fairly intense forces. Fighter combat in an atmosphere is one thing; It's basically how all jet fighter and space fighter sims are now. The real problem with them is that you don't have proper inertia, you coast to a stop. In essence, you have atmospheric drag. I know, I know, real physics will freak a lot of people out, but let's face it, it's time to move into the real world. We can DO real physics these days, or at least a pretty reasonable approximation. 3D graphics accelerators have freed up our CPUs to do these kinds of tasks in games.
Anyway, let's step away from the rant machine and talk about how you might control a real space superiority fighter. You definitely need a way to rotate around any axis, this is not negotiable. So far, probably the best controller for that is the Microsoft joystick whose full product name shall go unmentioned until their attorneys tell me I have to cite it in the article with a little superscript TM or get a lawsuit slapped against me. You can tilt it towards and away, left and right, and twist it (also known as rotating it around the Y axis.) Remember that in a left handed view, X is width, Y is height, and Z is depth (towards and away.) We'll get to moving along axes later, but right now, let's talk rotation.
Supposing we're trying to make this as natural as we can, which we are, one would assume that it would make sense to twist the stick around the Y axis to rotate the craft similarly. Now, if you assume that the bottom of the stick is coordinates 0,0,0 (0 units each X, Y, and Z respectively) and that the stick actually descends below that point as it extends above it, then we can see that all we're doing is rotating it around a point. So rotating it around the Z axis (also known as tilting it left and right) should do the same thing to the ship, right? Well, it turns out that we all would have to unlearn an awful lot to pull that off, but it might make sense. This is the reason that you can remap your controls. Let's just go with that, and make it so rotating the stick around the X axis will do the same thing to the ship, which we ARE used to.
So now we have our rotation, but what about motion? If your thrusters only fire forward and back, you get X, Y, and Z rotation, but only Z motion; You can go to plus Z by firing all thrusters on the back, or minus Z by firing all thrusters on the front. If we assume the star fury model, then rotation around the center point without moving along any plane is based on firing two thrusters to the front, and two to the back; Say, rotating clockwise (as seen from the TOP) is a process of the left thrusters firing out the back to provide forward thrust, and the right thrusters firing out the front.) This doesn't however allow you to rotate around the Z axis; This cannot be done with this collection of four thrusters firing forward and back. More on this in a moment.
We would also like, however, to be able to have some manuvering thrust that will move us plus and minus X and Y. Just think how useful it would be if you could strafe your fighter up and down and whatnot. Amusingly, United States fighter jets have these sort of abilities based on vectored thrust and canards; The American Heritage dictionary has this to say about Canards: A short, winglike control surface projecting from the fuselage of an aircraft, such as a space shuttle, mounted forward of the main wing and serving as a horizontal stabilizer. Well, it's right, that's what they are. However, it's possible to mount them upon hydraulics in such a way that they move, and you can then use atmosphere to push you around in different ways. Of course, this only works when you're already moving.
In a spacecraft, you would use thrust to push you in different directions. Take the X shape of a star fury craft, and assume that now you're also able to not only vector your thrust fore and aft, but also spit it out the top of the top thrusters (Towards positive Y, for a reaction towards negative, naturally), the bottom of the bottom thrusters (Towards negative Y), the left side of all the thrusters on the left of the craft, and so on. From this we gain two things. First, we can move along any plane. By firing all the thrusters on the left side of the craft, for example, we will be pushed toward the positive X. By firing all those on the top, we will move toward negative Y. Simple enough? Yes.
We also get all the rotation we were looking for; If you fire the tops on the right and the bottoms on the left, we find ourselves rotating counterclockwise around the Z axis, useful for changing your orientation toward a target. This is something you might like to do in a starfury, since you will find it easier to rotate around Y than around X.
How do you control this kind of motion? Descent did it by having a strafe modifier, or by using the hat switch. Both of these options are somewhat limited, but they're both acceptable substitutes to not being able to move that way at all. More importantly, we want to get out of the paradigm where pressing left on the stick just rotates you around the Y axis, and pulling back on it rotates you around X, and there's no control over Z. A good flightsim will support pedals, and you can plug some of those suckers in and get rudder control, being able to rotate around the Z axis somewhat (or completely, in a helicopter) but pedals are awkward when you're sitting at a computer, so I don't think they work for something like this.
The best two situations for this kind of control (as I see them) are something like this. One, you have a joystick which you can twist that has a hat control, and the hat is used to move along the X and Y planes, and keyboard controls (or a throttle) are used to control your thrust (whether foreward or backward) along the Z plane. Two, and this is a far better situation but unreasonable to expect of people, you have both a joystick with a hat switch, and a throttle with a hat switch. This will allow you to use one hat switch for motion and the other for changing view; It might be handy to look right as you move right so that you can see if you're going to run into anything. You can't force looking right WHILE you are moving right, though, because then you can't use this setup to strafe, which is half of the point in any case.
You could also use keyboard control for all the strafing, and keep the hat switch as a view switch. Being able to look around you with the hat is very useful, as it quickly becomes intuitive and you absolutely must have a way to accomplish this. If you really can't implement any other way, you can have a "Shift" or modifier key that puts you into a "strafe mode" where you move along planes and do not rotate, but this is basically useless, because you need to be able to do both at the same time if you want to do anything particularly cool, like circling an enemy. Finally, you can get creative and keep as much of it on the joystick as you can, putting one axis of motion on the hat switch, and moving along planes with the keyboard; This would be clumsy but it makes sense to keep all the rotation in one place.
This important rule of physics seems to be forgotten in space combat simulations. This is evinced by the fact that you have a top speed, and that you come to a rest if you let off the throttle. While this may be convenient, and it can be explained away in some cases, it's completely bogus. I'm sure that I don't have to tell anyone who's read this much of this article that there's no atmospheric resistance in space, because there's no atmosphere. This means both that there is no such thing as a top speed other than C, and that once you've tapped those thrusters, you're not stopping unless you apply the retro-rockets, or in other words, until you produce thrust equal but opposite when compared to the thrust that got you in motion in the first place, ala Asteroids. How amusing that a vector game on a CPU that today isn't fit for a graphing calculator got this right, but our games that require a 233MMX and 3D acceleration don't manage to, or don't see fit to.
I understand that it may be unattractive to you to have pilots zinging off into the great wide beyond of space because they hit the afterburners for too long, but I'd like to see a realistic space combat sim or two. If you keep accelerating, you're going to end up in the wrong nebula or something, because there really isn't much of a speed limit in space, except based on your thrust pushing your mass around (which is an acceleration limit, not a speed limit) or again, lightspeed. I think that players who will buy a spaceflight sim are mostly old enough for real physics. If you're really that worried about it, you can just provide a switch; Turn real physics on, turn real physics off. Yes, your AI will have to understand the difference, but you can accomplish that by either making it never exceed a certain speed based on its thrust and mass (which will put it at a distinct disadvantage when compared to human pilots) or by making it understand that the battle area should be consider to be a certain size, and that if they do too much accelerating that they will leave it. You should be able to adapt code from collision prediction routines into handling this admirably. I leave it up to you to decide how you're going to do it, though; You're the programmer. I just play games.
Obviously that doesn't mean I don't have an opinion.
What I'm saying here is that I want to see some reality in these games. We have the technology. You can build it faster. Better. Vaguely realistic. I want to see objects in motion remain in motion, though I can accept having rockets fire to neutralize rotation for you. This is something a well-behaved space superiority fighter should do for you. You should definitely have a control to halt your movement along a given plane, as well, when compared to some object, and you should have a key to match your velocity along all three planes to an arbitrary object, which should be independent of your rotation; You should be able to rotate along all three axes, and move along all three planes. None of this is unreasonable, and in a pinch can be controlled with a very normal flightstick like you would use to control any game, though obviously something you can twist is extremely desirable.
Don't make me beg.
It won't be pretty, and you go through jeans quick that way.
Just put out a pretty game with some good weapons and
realistic physics. The Freespace engine is an ideal candidate
for this kind of modification. Besides, the biggest challenge
here is going to be for the artists to come up with good
models for the kind of ship that looks like it should possess
six degrees of freedom, and we all know those smug bastards
don't work hard enough, programmers... So give them something
to do.
What, me evil?
Traditionally one uses what is called a left-handed view of the world when discussing three-dimensional space. What that means is that if you bring up your left hand (If you don't have one, you'll just have to picture this, I'm sorry) and hold it up like you're indicating to someone in front of you that they should stop. Now curl down your fingers, and point your thumb out to the right, point your index finger straight up, and point your middle finger out away from you. Your thumb is now pointing toward positive X, your index finger to positive Y, and your middle finger to positive Z.