It’s simple isn’t it? You press a button or push a stick, maybe point and click with your mouse and simple as that, your avatar in game responds with alacrity. From the single input of an endless runner like Adamatomic’s Canabalt to the myriad control input of Microsoft’s Flightsim X with all it’s potential add-ons it’s hard ignore the importance of getting movement right. And like the best of many things, when it’s done right the player will never notice the turning gears behind the curtain.
Games have been going long enough now to have developed many ways to deal with player movement almost genre based in their approach to implementation. When a player picks up a game they will will have certain expectations around the basics of how movement and action are going to work. In an adventure game clicking the mouse on your destination, or in a First Person shooter the WASD keys or how the sticks of a joypad are going to work.
This is all very helpful, but it it’s own way kinda detrimental. As I’m still very new to making games, I’m only working on my second, it gives me a clear path as to what I need to do for people to understand almost intrinsically how to play my game. But of course I’m not being quite that easy on myself. While I absolutely want my game to be intuitive and gratifying to play I’ve chosen to change and maybe even challenge a genre, in my own way. And now the standard doesn’t quite fit.
My game is in part inspired by twin stick shooters like Bizarre Creation’s Geometry Wars: Retro Evolved and @retroremakes’ Death Ray Manta (if you don’t have either I highly recommend you pick them both up) as well as more old school shmups like Treasure’s Ikaruga and Irem’s R-Type. Not only that but I want to break convention by exploring the vulnerability of a ship with no weapons, only a movable shield to keep you safe.
Now I don’t expect to reach the levels of excellence shown in these games, my only other game uses text as its only input! But that doesn’t mean I shouldn’t try right. After all, I can build on the work of those who have gone before, and I intend to.
So like a twin stick shooter I’m using both stick for movement. Only now the right stick doesn’t dictate the direction of fire, it dictates the direction of protection from fire. Placing the shield wherever you point it. Shield movement feels good but could definitely do with polish but I’m happy with the mechanics, it does what you expect it to, how you expect it to and after a moments play you don’t really need to think about it. The left stick however dictates ship rotation. So press left to rotate anti-clockwise and press right to rotate clockwise. Originally I had up and down as acceleration/brake but that diluted the controls too much and left the movement feeling very muddy and imprecise. I moved acceleration and brake to the right and left triggers respectively and it feels much tighter, pitching the thrusting and braking forces based on how far the triggers are pressed to give the player that extra little bit of precision to work with if they need it.
So now we have a ship that can point where it wants to go, actually go towards it, and stop when it gets there. It can also now protect itself (Though there are as yet no enemies in game) by way of moving the shield relative to the position of the ship. As mechanics go I think it’s a good compromise between feeling both responsive and having to think a little about how you’re going to get where you want to go because there’s one thing I forgot to mention earlier about movement in my game. It’s newtonian motion, meaning once you start going in one direction, you’re not going to stop until you point your ship in another direction apply more force. I am cheating a little giving the player access to a braking function which they can use to come to a complete stop without having to point their ship in exactly the right direction and apply exactly the right amount of force to do so. It’s a game right, it still has to be fun.
This forces the player to think a little bit more about where they’re going which elevates movement (a little) from being just instinctual to being a bit more thoughtful and hopefully a bit more tactical. I may of course be completely wrong but I’ll worry about that when I get to play testing!
I wrote a small script for procedurally generating asteroid fields and even though I’m saying so myself, it is pretty satisfying to fly around them.
Now I’m flitting about the place it’s time to think a little deeper, on the mechanics side of things it’s time to implement a deadzone so movement isn’t jittery and I need to look into splitting the left and right triggers into their own separate axis so I can use both at the same time (it seems Unity3D doesn’t allow for this) and on the physics side of thing, well, physics! If the ship comes into contact with another object it needs to act appropriately, that is: stop! Or bounce of into a tumble which is, lets be honest, far more satisfying. And how fast of a tumble is too fast, and just how much should the ship bounce back, and how much should the asteroid be pushed aside? At the moment I only have rudimentary answers for those questions so I won’t post them here. They’re for another time when there is more content of consequence in the game to test against.
When you get right down to it, movement isn’t as simple as it looks. And I’ve no doubt there is a lot of areas I’m missing/neglecting due to ignorance. But it’s all about learning and improving right?