• Advertisement
Sign in to follow this  

"Pick up and play" controls for a 3rd person starship?

This topic is 3505 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

What sort of controls or interface paradigms would make controlling a ship more intuitive? I'm trying to make it easy to fly a ship in 3rd person. Right now I've got a camera which orbits the ship and will eventually be used for targeting and object selection. At the moment I'm using basic WASD controls:
  • W & S for acceleration and retros
  • Q & E sideslip left and right
  • A & D turn left and right
  • Z & C roll
  • R & F pitch
  • Mousewheel zooms in and out
I know, it's horrific and I'm not happy with it. My focus is less on hardcore space sim players and more on space adventure and space trading game players. Ideally, I want you to be able to start controlling the ship using just the mouse the moment you sit down. Full freedom of movement is probably the biggest bugbear in terms of complexity. First person wouldn't have this problem, but that doesn't fit the overall game. I'm seriously entertaining the idea of dumping full freedom and locking the ship to a 2D plane, maybe with some drift up and down to simulate the feel of space. The mousewheel could be used for acceleration, and right click could toggle between orbit camera and an as yet undefined ship control mode. Alternately, I was thinking of making a paradigm where you click and pull on the ship itself to control it. Maybe a ghost image appears of where the ship will move to. If you want to sideslip, you click the ship and pull it left or right; the downside is that this would interrupt targeting. A third option might be to click and set movement targets, much like Diablo, except that the concept doesn't translate very well unless I lock the camera into a third person perspective (and again, dump full freedom). I would really like to avoid overlaying the screen with a constant control pane that makes you switch between targeting and ship control, but this might be unavoidable. Any thoughts, particularly on cutting out full freedom of movement?

Share this post


Link to post
Share on other sites
Advertisement
If you want pick-up-and-play, linking the camera and the controls in a pseudo-FPS scheme is about as intuitive as you can get. Here's my recommendation, a cross between UT2004 and WoW:

Mouse controls camera at all times, handling yaw and pitch.

W - Forward thrust
S - Backward thrust
A - Sideslip left
D - Sideslip right
Space - Hover up
Shift - Hover Down
Q - Roll left (camera rolls with ship)
E - Roll right (camera rolls with ship)

When no navigation keys are depressed, ship maintains course and camera is free. When controls are engaged, the ship adjusts its heading to match the camera angle. This won't allow particularly authentic navigational feats, but it'll make basic FPS actions like strafe-circling and kiting easy and intuitive with a bare minimum of learning, and it won't require players to cycle around the steering keys to look over their shoulder.

Share this post


Link to post
Share on other sites
You could make the mouse movement point/rotate where the ship will go / guns will aim if you're going with the classic dogfighting style of ships. So it handles just like a FPS game - but hold on there's more:

For the camera, you could position it right behind the ship to which will line up with whatever the ship/guns are aiming. And say if you wanted to change camera angles on the fly - you could allocate a button that when you hold it down (like MouseWheel Click), it will make your mouse movements change the camera at any angle instead of changing the aiming reticle.

Then there's trying to fit free-form 3-D movement into familiar FPS controls, or as few keys as possible. Here is what I would do: have WASD control vertical & horizontal ship sliding, while your mousewheel up-down movements control forward/backwards thrust (in this way you get variable speeds). I would do this instead of allocating WASD to control movement on the "ground" plane because spaceship games usually have you continually going forward unlike FPS games, only "breaking" in certain instances such as when you have reached a destination. As well as that, many spaceship games offer multiple buttons such as half speed, 3/4 speed, full speed, full stop, etc - you could simply put all of that on a single control device, such as the MouseWheel. I would say FPS controls fit FPS games, while spaceship games should have its own kind of controls because the two mediums of movement are very different. The thing is then to make the controls as intuitive and simple as possible.

So here would be my default list of controls:

Rotate/Turn Ship/Weapons/Camera (Mouse movement, crosshairs say in center of screen)
Slide/Strafe Up-Left-Down-Right (W, A, S, D)
Accelerate/Decelerate (MouseWheel Up, MouseWheel Down)
Roll Counterclock/Clockwise (hold MouseRightButton & move mouse left/right)
Fire Weapons (hold MouseLeftButton)
Target Lock Object in Reticle (aim at object & press assigned key such as F)

About the rolling - to provide a continuous sense of flight, instead of forcing the player to lift their WASD fingers off to other keys to roll the ship, have the holding down of the MouseRightButton make your mouse movements roll the ship clockwise/counterclockwise (doing this would also give you variable rolling speeds)

The target lock feature can be used alongside cycle targets, but provides manual targeting to get a lock on something that is in your cursor. Once you get a lock you could talk to it, get info from it, dock with it, or shoot missiles at it, etc.

-

Edited for clarity.

[Edited by - Tangireon on July 13, 2008 4:24:57 PM]

Share this post


Link to post
Share on other sites
You could try using key combinations to cut down on the number of keys you need, for example:

W = Forward
S = Backward
A = Strafe Left
D = Strafe Right
(A + W)/(A + D) = Turn Left
(D + W)/(A + S) = Turn Right
(W + S) = Up
(A + D) = Down
Q = Toggles Maneuvering

W = Pitch Up
S = Pitch Down
A = Roll Left
D = Roll Right
E = Toggles Pitch/Roll

Or if acceleration is handled with #1-0 (or +/-) on the keyboard:

W = Pitch Up
S = Pitch Down
A = Strafe Left
D = Strafe Right
(A + W)/(S + D) = Turn Left
(D + W)/(A + S) = Turn Right
(W + S) = Up
(A + D) = Down
Q = Roll Left
E = Roll Right

It maybe more complicated than a standard FPS's WASD controls, but then FPS's don't usually have to worry about things like pitch/roll, or up/down beyond jumping.

[Edited by - Gyrthok on July 13, 2008 3:19:15 AM]

Share this post


Link to post
Share on other sites
A bit inspired with UT2004:

mouse - controls ship direction
W/S - accelerate/brake
A/D - strafe left/right
middle mouse button + mouse left/right - roll
Q - revert roll

Share this post


Link to post
Share on other sites
Keep in mind that there are other keyboard configurations than qwerty.
If you want to create something and make it available to the public, you should always give the users the possibility to change the keymapping.

Share this post


Link to post
Share on other sites
I would let the player have full rotational control of the ship with the mouse, at the cost of target cursor movement. Just lock the target cursor to the center of the screen, FPS style.

If you absolutely want a movable cursor, I would make one of the mouse buttons a modifier key. While it's down, the ship rotates instead of moving the target cursor. Sort of like Adobe's scrolling gimmick. You can move around the cursor, but the cursor locks in place as you hold down the modifier key to move the entire view (rotate the ship).

Share this post


Link to post
Share on other sites
I've been working on a space shooter control scheme too. I'm not sure if mine will fit your needs or not, but my idea is going down the lines of a space combat/trading game too, so it may well be of some benefit to you.

I am however working on keeping the gameplay simple and accessible, so I have chosen to go with the 2D plane of movement.

I have a picture to illustrate my concept which could be applied to mouse control, the keyboard, or a joypad and should hopefully be equally simple regardless of input device. It's similar to how most vertical scrolling shooters work, except it allows 360 degree movement and has some other interesting elements.



The yellow line represents the screen area. The black area is inside the screen. Forward movement in this area could also control forward speed though it is not marked on my diagram.

Left and right movement in the area cause your ship to strafe left and right allowing you to dodge bullets as in a conventional vertical shooter. This is one key element of the design. Most 360 degree arena shooters do not allow you to strafe very well for dodging bullet as it is difficult to accommodate both turning and strafing. This design lets you do both naturally and is why I think it is intuitive as simply strafing into the turn zone will cause your ship to rotate its heading.

When the player moves off the screen, the view will of course scroll to maintain sight of the player... it just gives us some more area to work with the idea of a zoned control scheme, whilst still letting the player maneuver using the full space of the screen.

Moving into the defence mode area provides you with extra armour in my game idea... which will be graphically represented by having armour plates slide into view, covering up weapons but providing much better protection. This will have the effect of temporarily disabling your primary weapons and providing access to the use of a secondary defensive set of weapons.. perhaps not quite so powerful but more useful in a utility role.

Moving off the screen and even further back will reduce your speed and maybe even allow you to reverse.

I think this area based control scheme gives a huge amount of flexibility, full 360 degree control over a 2D plane and room to add/remove features as you desire.

Movement aside, you then have an offensive and defensive mode, both of which (assuming you're using the mouse) could have a primary and secondary fire on the mouse buttons.. so you effectively get 4 actions there from 2 buttons. Even more if you dare venture into the realm of double clicks or sustained clicks or context sensitive clicks (not that I'm saying it would be a good idea!!). You could also venture into using the mousewheel to switch between weapons. Obviously a keyboard or joypad control scheme would have to adapt this system to suit.

To illustrate my idea further... here is a short video capture of an early prototype I made. Here is another.

To make the system as user friendly as possible, each zone change would have a transitional effect to make the user aware that a change in state is coming if they continue moving towards that area. i.e. if you move very close to the armour mode zone... your armour plates could start to slide out to a halfway point and lights could start glowing on the ship. If you move close to the turning zone, your ship starts to partially bank to the left or right to show that you are about to start turning.

Also I have considered the problem of players travelling down a restricted corridor and being unable to reach their "turning zone" because an obstacle is in the way such as a wall of some sort or 2 asteroids side by side. In this case, you could simply transform the width of the zoning to be as wide as the corridor and the system would work as normal, albeit you could not strafe into the obstacle as you would enter the turning zone and turn away from it automatically.

Anyway... I hope that's of some help. I know the explanation is a little rushed and perhaps difficult to follow as a lot of the design probably just makes sense to me, but if it's maybe even just useful as inspiration for another alternative design, that's good :).

Cheers,

Steve

[Edited by - Mephs on July 13, 2008 9:28:50 AM]

Share this post


Link to post
Share on other sites
Years ago when first learning 3D programing I developed a little 3D Asteroids type game controlled entirely by the mouse.

The mouse controlled the ships up/down-left/right rotation. With the right button used for applying thrust...Newtonian physics and such required thrust vectoring. There wasn't any straifing, so you had to rotate the ship and apply thrust to change directional vectors. The third person camera simply rotated with the ship trying to maintain a certain distance. Around the ship was a simple sphereic radar indicateing where offscreen danger was in relation to the ship.

Worked very well.

Share this post


Link to post
Share on other sites
I had been working on a similar system for my own space shooter a few months ago. The biggest problem was that full all-axis control requires quite a few keys... which are hard to remember and hard to reach in-game... so I switched to a 1st person scheme (extra upside: about 30% more free screen real-estate for objects and lower rendering time) and went with a somewhat more traditional control system. The mouse controls pitch and yaw (left-right on the screen = yaw, up-down = pitch). The speed of the turn is dependent on how far the mouse is to one side or the other. Roll control is bound to the mouse wheel (and the z and x keys for debug purposes). Throttle control is bound to the up and down keys.

Sorry I can't be more help for a 3rd person system... The best I could think of was to use a joystick to simplify the control scheme.

Share this post


Link to post
Share on other sites
I would go with mouse control and W/S for acceleration and A/D for strafe.
Then use some key to trigger 'select mode' while pressed, spacebar would work good for this.
Select mode would release the mouse and make it act as a usual pointer for selection etc. This way you have a easy control scheme while maintaining easy selection.

Share this post


Link to post
Share on other sites
I guess this also depends on what kind of ships or experiences you want your gamers to have. If you are going for high octane fast-action nimble starfighters that are able to circle each other for more close-ranged combat or hide behind asteroids to ambush unsuspecting targets, then a traditional FPS control scheme with WASD controlling movement on the ground plane would probably fit that more. If you are going for something more "spacey" or "flighty" with continuous flight times from point A to point B which sounds much like your trader game, as well as longer-ranged dogfighting-style fights (where guns cannot rotate like a turret - you have to point your entire ship at the target to shoot your guns) then WASD controlling movement on the screen plane would make more sense.

Personally, since we don't see a lot of the first type of starfighter game, I would definitely enjoy seeing that on shelves. I would say such a game could gain lots of popularity because 1) it contains instant fast action, and who doesn't like instant fast action? and, 2) it uses traditional familiar FPS control schemes to which allows more nimble (but shorter ranged) fighting, especially good for multiplayer fragfests.

You know the first type of starfighter game (WASD for ground plane) also brings to mind those Gundam anime shows about giant humanoid robots engaging in deep-space melee - their fights are usually more close-ranged thus a FPS control scheme (WASD for ground plane) would allow that to happen much more effectively.

-

So I guess what I am trying to say is this: what your WASD should control will determine what plane of movement will have the most interaction in your game. If you are going to stop and go very frequently, then have WASD control movement on the ground plane (like a traditional FPS) would make more sense. If you are going to dodge and weave in between asteroids/shots more frequently than you will move forward/reverse, then have WASD control movement on the screen plane would be more effective for that activity.

[Edited by - Tangireon on July 13, 2008 4:30:46 PM]

Share this post


Link to post
Share on other sites
I'm trying to remember my old settings for Descent. I think they were:

Mouse for vert & horz direction. Buttons fire weapons.
W & S for +/- acceleration
A & D Strafe Left & Right
R & F Strafe Up & Down
Q & E Roll

I was far from an expert player but these controls felt the most natural to me. I'm not sure but I think I also had the l-Ctrl and space doing something.

Targeting was always a crosshair in the center. I've found moving a crosshair to be too difficult when dealing with moving enemies that are shooting at me. However with the above controls I could see potentially adding and using:

l-Ctrl toggle auto-targting system
1 target nearest
2 target next nearest
3 target next nearest
4 target next nearest
5 re-center targeting

edit:
Ok, I need to learn to read. You were looking for 3rd person perspective not 1st. Never mind.

Share this post


Link to post
Share on other sites
Descent was definitely a game that was more fit to have FPS controls (WASD for ground-plane movement) because you weren't really constantly in flight from point A to point B such as when compared to Wing Commander or Freelancer, but you were more like a floating first-person shooter in tight quarters (close-quarters combat in mine tunnels) where you had to stop and go frequently as well as encircle enemies using sliding. For that game I used Shift and Space Bar for slide up and down (pinkie and thumb).

Starfox and similar type games would then be examples of games that require screen-plane WASD movement (probably because in Starfox you are constantly moving foward). Personally I thought Starfox was much more simpler and more "pick-upable" to control than Descent or Wing Commander (the market target audience for Starfox was definitely a lot more general and less niche).

If you want to make a similar 3-D starship game, you could simply allocate a key that does a simple "Go!" and "Stop!", because you won't be doing a lot of stopping or breaking during your trade runs. Or, you could just make forward movement all automated like in Starfox, thus freeing up your WASD for you to slide your ship up-down-left-right to dodge asteroids, space junk, and things. Automated "railroad" forward movement could also make for some interesting gameplay, and you could use some sci-fi concepts to explain this such as your setting using slipstream "highways" as a primary mode of distant interstellar travel, etc.

And if you really are going to model after Starfox, I would advise locking the targeting cursor in the center of the screen so that when you turn/rotate your ship, it will seem as though only the environment will change around your crosshair, ship, and camera. In this way you could aim a lot better (I always had a hard time with coping with the depth of perception when aiming in Starfox).

[Edited by - Tangireon on July 14, 2008 6:00:31 PM]

Share this post


Link to post
Share on other sites
Now that I've thought about it a bit more, I think I'm going to stand by my original sugestions. I'm thinking that if the mouse is used to change your x or y direction and you have a pair of keys for +/- acceleration then you have a very simple set of controls that should suffice to get you moving. Then the advanced tactical manouvers using different keys can be picked up on over time. I also still think my targeting idea could work. Maybe also add in a couple of keys for Full speed, 1/2 speed, and All Stop (numpad?).

At this point, I'm envisioning a ship being displayed fixed in the center of the screen that the universe moves and rotates around. Include some kind of navagation panel to indicate direction. You end up looking like you're traveling on only one plane but your not.

Share this post


Link to post
Share on other sites
Here's another control scheme I just thought of, which combines FPS controls with Starfox. So in this control scheme the camera will follow right behind your ship at a fixed angle like in Starfox, while your ship can't turn away from its automated course (due to Slipstream, or etc), but it can turn around and go in reverse, as well as strafe to anywhere in the slipstream. Your ship's aiming crosshairs will then instead be a line that reaches to a certain depth, thus touching whatever it is that your shot would meet. The longer ranged your weapons are, the longer this line will be.

Strafe Up-Down-Left-Right (Mouse Movement)
Accelerate/Decelerate (hold W, S)
Roll Counterclock/Clockwise (hold A, D)
U-Turn (X)

To provide variable acceleration speeds, you could make it so that the longer you hold down 'W', the faster you will go up to your top speed. Similarly with 'S', the more you will decelerate, eventually reaching full stop.

The U-Turn would enable you to turn back in the direction you originally came from.

[Edited by - Tangireon on July 15, 2008 2:53:36 AM]

Share this post


Link to post
Share on other sites
Quote:
I want you to be able to start controlling the ship using just the mouse the moment you sit down.

This is not always possible and requires some previous knowledge of the system or a previous similar system. For example the wii uses controls which are common to real life ie. tennis racket, golf club etc. and flight simulators are similar to a pilot controls. Now most people have used a tennis racket yet how many have controlled a plane? This is the reason many pc games used wasd controls(where appropriate), if this is not the default case then there is normally an introduction stage which allows a user to be become accustomed to the system.

What really annoys me with game controls is when you can not modify them. I remember playing one version of Colin Mcrae on the Xbox were you had to deform your hand to shift gear instead of using the triggers. It is not difficult to give the user the ability to have there own controller setup and not forcing a system upon them.

Share this post


Link to post
Share on other sites
Thanks for the great replies. I've been exploring some of the suggestions here and I'm still considering this.

One important thing I neglected to mention: Turning battles. The whole point of having an orbit camera (besides eye candy) was to shift the focus from the traditional endless turning battles that plague almost every space game. Fixed guns work for fighters, but not so much for cap ships and freighters with turrets and dropped munitions. And even for fighters, I don't see a missile can't drop from it's hardpoint, reorient, and fire in whatever direction you choose (I may even make wing mounted guns turrets by default).

I'm also experimenting with a "swing shield," a small barrier ships can deploy strategically in any direction (it was fun in my 2d proto, going to see if it works in 3d).


I'll definitely support remappable controls. My main concern was default controls and what you experience "out of the box." I like WASD, but I also like (envy?) the interface simplicity of games like Diablo, where you can click and just get things moving.


Share this post


Link to post
Share on other sites
Quote:
Original post by Wavinator
I like WASD, but I also like (envy?) the interface simplicity of games like Diablo, where you can click and just get things moving.

Am I the only one who totally hates that control style for real time isometric/top-down games? If anyone has played Alien Shooter 2, or Zombie Shooter, they would know the bliss of WASD movement for that type of game, and how it blows clicky movement out of the water.

You could let players have either one they want, but Diablo just didn't.

Share this post


Link to post
Share on other sites
Ah, cargoship fighting with independently rotating guns! Well I may have something for you.

Using automated forward movement via slipstreams (like in Starfox):

Strafe Up-Left-Down-Right (W, A, S, D)
Aim Turret Mounts (Mouse Movement)
Accelerate/Decelerate (MouseWheel Up, MouseWheel Down)
Fire Weapons (LeftMouseButton)
Roll (hold RightMouseButton & move mouse left or right)
Aim Camera (click & hold MouseWheel - release to go back to normal)
U-Turn (X)

Using freeform space flight (camera will follow the aiming of the guns):

Aim Ship Up-Left-Down-Right (W, A, S, D)
Strafe Ship Up-Left-Down-Right (Shift + [W, A, S, D])
Aim Turret Mounts (Mouse Movement)
Accelerate/Decelerate (MouseWheel Up, MouseWheel Down)
Fire Weapons (LeftMouseButton)
Roll (hold RightMouseButton & move mouse left or right)
Aim Camera (click & hold MouseWheel - release to go back to normal)

So with the second scheme you can turn your ship in freeform 3-D space while allowing you to aim your guns separately from the ship's heading. Strafing is then achieved by holding down Shift while pressing your usual WASD keys for ship turning.

-----

The thing with controlling even larger ships though, is that usually every turret on such a ship (ex: Capitol Ships) has its own AI or controller. You could probably emulate this by offering for sale in your setting automatic AI aimers that you can attach to certain turrets, so that they will aim independently from your mouse. Or even, offer hireable crew so they can man these turrets.

Come to think of it, I have never seen a game that explores having a crew manning various parts of inside a huge ship that you command. 18th century seaship/pirate games maybe, but never a sci-fi starship interestingly enough. That would be fun indeed, something unique to consider.

Share this post


Link to post
Share on other sites
WoW style camera when holding the left mouse button, but have it work freely. Left mouse button operates weapons and are shot in camera direction, Right mouse button turns the ships current direction to the cursors. Mouse wheel for thrust. This is not the most acrobatic scheme but if its for large ships than I don't think it needs to be.

A possible idea if you are looking at very large ships with lots of guns working simultaneously is have the same camera, but left clicking an enemy locks the current gun onto them and auto-fires. Holding right operates direction change still. Looking at my mouse now, ideally the mouse wheel would scroll weapons and the back/forward buttons (5-button mouse) would be held for thrust.

Share this post


Link to post
Share on other sites
I'm always glad to see someone working on a space sim. There's so few of those on the market these days.

I'm a little late for all this, but here's my control scheme:

Mouse X/Y: Yaw and pitch.
Mouse L: Fire Primary (Usually a gun.)
Mouse R: Fire Secondary (Usually a missile.)
Mouse wheel click: Target nearest hostile
Mouse while scroll: Cycle all targets

For the joystick (I have a Saitek ST290), I have a similar set:

Joy X/Y: Yaw and pitch
Joy Twist: Roll
Joy axis4: Throttle
Joy b1: Fire primary
JOy b2: Fire secondary
HatLeft: Target nearest hostile
HatUp/Down: Cycle hostile targets
HatRight: Target center. Hold down to cycles through targets in the center of your hud.

Then I have some keyboard controls that I've also borrowed from Tachyon the Fringe. I loved that game -- it was a very fast shooter, and the controls were extremely simple. These work even if you're using a joystick:

Q: Hold down to glide - Sets the ships acceleration to zero, so the only force acting on you is gravity. (In FREESPACE you'd press the key once to toggle glide, and press again to disable it. I'm not a big fan of that method.) Q is a good key becuase it's next to the TAB afterburner, which is also a "hold down to enable" feature.
Tab: Burner
W E: Roll Left/Right
S D: Slidethrust Left/Right. I've chose not to include up and down for simplicity.
Z: backtrust
A: Forward thrust
T: Target nearest hostile
[ ] : Cycle through all targets
C: Target center. Targets anything in the center of your hud

Throttle:

\ : Full throttle
Backspc: 0 throttle
= : Throttle up
- : Throttle down

Quote:
Original post by Wavinator
Thanks for the great replies. I've been exploring some of the suggestions here and I'm still considering this.

One important thing I neglected to mention: Turning battles. The whole point of having an orbit camera (besides eye candy) was to shift the focus from the traditional endless turning battles that plague almost every space game. Fixed guns work for fighters, but not so much for cap ships and freighters with turrets and dropped munitions. And even for fighters, I don't see a missile can't drop from it's hardpoint, reorient, and fire in whatever direction you choose (I may even make wing mounted guns turrets by default).


I'll have three camera modes, but I've only implemented the first two. The third is probably something you'll want to look into.

1- Cockpit for fighters
2- Fixed external view. The camera is located on a point on an imaginary sphere surrounding your ship, and points at your ship at all times. The player can use keyboard controls to move it around.
3- External "track-my-target" view, for capships. This is similar to #2, in that the camera is located on a point on a sphere surrounding your ship. However, the camera will move automatically, and will be positioned in such a way that it always looks "past" your ship, at the target, at all times. Both your ship and the target should always be within the frustum. Flying becomes a little more difficult, but shooting is much easier.

This method is good for ships with turrets that don't align with the ship's z (forward) axis.

Just my .02

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement