Jump to content
  • Advertisement
Sign in to follow this  

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

This topic is 3595 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
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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!