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. 😉
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:
- 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.
- 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.
- Brakes – (S, Down Arrow) – Quickly bring the ship to a complete stop.
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!
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.
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.
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.
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! 🙂
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!