Flight Controls

One of the most critical aspects of a good arcade game, or any action oriented game, is the input controls. If the controls are not great it is much harder to enjoy the game.

But what is great? Probably whatever is the most fun. But what is the most fun? Probably depends on who you ask.

For me, fun games tend to be simple to play. I don’t really enjoy complex controls or interfaces. So I try to design controls that are as simple as possible. If you can’t play it with an NES controller, maybe it is too complex. 😉

Control Overview 

For my controls, I designed Space Frigates to have a physics based feel to it. Much like Astroids. So there are three basic things you can do to control your ship’s flight:

  1. Main Thruster (W and Up Arrow) – This accelerates the ship in the direction opposite the thruster mounted on the back of the ship. Basically, forward.
  2. Rotational Thrusters (A, D, Left Arrow, Right Arrow) – You are able to rotate the ship clockwise and counter clockwise. The ship rotates around it’s center.
  3. Brakes – (S, Down Arrow) – Quickly bring the ship to a complete stop.

Basic Reasoning

What I like about this layout is that the controls themselves are fairly simple. But, controlling the ship well does take some practice and that allows players to build up some skill at playing the game. Flying the ship is easy. Avoiding opponents while firing accurately? That takes a little more practice.

The physics simulation is not precise but I think it does have a reasonable “outer space” feel like Astroids did and that is what I was going for. BTW, another cool game with interesting ship to ship battles: Star Control!

Main Thruster

The main thruster is the primary means of moving the ship around. The trick is to thrust in the opposite direction that you want to move in. And since the physics simulation includes inertia, you will continue in which ever direction that you were going until you provide an opposite and equal force.

What I found in early play testing is that some players would just accelerate to ridiculous speeds and going flying right off the map. Funny as it was I did see this as a problem. So I changed the code such the the top speed of the ships is limited. I’m not sure that is really realistic but I wanted to keep the game reasonable.

Rotational Thrusters

When the player rotates left or right, I begin the ship rotating to the left or right. The ship will just continue to rotate until they thrust in the opposite direction to stop their rotation. Like the main thrusters, I set a limit to rotational speed because other wise players were just getting the ship spinning to a ridiculous speed.

My early testers don’t really like this setup much. They would prefer that when you hit the left rotation button, the ship just rotates a bit to the left and stops. Or perhaps continues to rotate until they let go and then the ship rotation stops.

This is an interesting issue because I want the game to be fun but also somewhat challenging to reward skilled players. And maintain some amount of the simulated physics.

Brakes

When the player brakes, I coded the ships to quickly come to a complete stop. Of the three controls this one is the most unrealistic yet all the early play testers like it. I put it because for new players, the ships are difficult to control. So having brakes seems to make the game more approachable.

Flight Controls?

So I don’t want to make the controls too difficult but want them to also stay somewhat “realistic”. What I was thinking I could do is code the controls to  have an underlying flight control system. So when the player uses the controls, they get the result that is intuitive but also realistic.

For example, for the brakes, I could code it in such a way that when the player holds down the brake button, the ship’s computer (the game code) fires the correct combination of thrusters to gradually bring the ship to a complete standstill.

Or with the thrusters, I could code it so that when they player releases the rotation button the ship automatically fires the opposite rotational thruster to stop the rotation.

I could even have a manual override that allows the player to turn of the flight controls and control the thrusters directly. Or maybe damage to the ship could cause the flight controls to fail! 🙂

Future Controls

Eventually I would like to add lateral thrusters to move the ship directly to the left and right. The main reason being that the ships would need that in order to orbit something. You may want to orbit something you are firing at or orbit something like debris or a space station, etc…

And a function like orbiting would definitely benefit from a “flight control system” so that the player could indicate what they wanted to orbit and then the computer could maintain the orbit by direct control of the thrusters.

I would love any feedback you may have on the current controls. Check out the game at www.SpaceFrigates.com and let me know what you think!

 

 

2 thoughts on “Flight Controls

    • Good to know!

      Yea, I like it because it is very straight forward and offers more control. For example, if you were to press the button to just rotate and bit and then stop, how far do you rotate?

      When taking digital input it is often hard to steer well. For example, I have been playing Rocket League recently and when I play from the keyboard it is really hard to steer precisely because tapping left and right always seems to steer you too much. Obviously, most people play that game with a controller that has an analog stick.

      With Space Frigates current control scheme, you can precisely control how much or little you rotate by quickly rotating in the opposite direction.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s