Controls: A sense of momentum

This forum is currently in read-only mode.
From the Asset Store
Supports keyboard, mouse and gamepads. Supports several gamepads at once.
  • So, lately I've been thinking about how to plan out the character animation for my 2d side-scroller.

    Now, because I want to do things a little differently than what I've seen so far in terms of 2d games, I also want to change the way you're controlling your character - meaning, I want it to feel more believable than your typical side-scroller using momentum as a key.

    All of this is totally based on whether or not this is feasible in the end. If it's too complicated or feels like crap, I'm gonna cut it, but I'd love to explore this a bit more.

    Now, to get an image into your head, let's compare what it usually looks / feels like when you're controlling the player in various games:

    Castlevania:

    Subscribe to Construct videos now

    The controls are VERY direct. There's no momentum building up in movements, the character goes from walking to running without any delay, same with jumping, turning around, etc.

    Then theres' Another World / Heart of Darkness / Flashback, etc.:

    Subscribe to Construct videos now

    - Another World

    Subscribe to Construct videos now

    - Flashback

    Subscribe to Construct videos now

    - Heart of Darkness (Probably the best example in this category)

    This was basically the first try to give controls more believability. There already was a sense of momentum being conveyed, if ever so slightly. For Another World and Flashback, they used Rotoscoping, which explains why they changed the controls a bit. Heart of Darkness took it a step further. The controls weren't really 100% direct, the animations were darn smooth and awesome for its time and as you see in the video, controlling the character feels very different than controlling your typical 2d character like Mario or your Castlevania Alter Ego.

    Limbo copied those games and headed into a similar direction:

    http://www.limbogame.org/

    This is a tech demo and was never actually real time (so the character animations are actually 'just' animated / pre-rendered for each situation), but it's darn fascinating to study the animations and to wonder if that stuff could still be somehow done in a 2d game, where the player has to have direct access over the character all the time.

    Now, let's look at 3d for a second. One of the games that had shitty and awesome controls at the same time was Shadow of the Colossus. Let's take a look at the first boss battle (no spoilers here, that's like 5 minutes into the game):

    Now, as you see, the controls are very different. It always needs some time to build up momentum and climbing a colossus is a real challenge because of the momentum. You have to keep your grip and balance yourself out, momentum is _always_ an issue. It felt believable, it felt like no other title before, the controls were a bit too sluggish and awesome at the same time.

    Now, I know there are a lot of people out there who just hate it when there's a slight lag in the character controls. Still, I think for a lot of games, especially in a field that has been explored SO often before, changing the controls can fundamentally change the experience. I'll back that up with some concepts and a prototype if I get it to work later on, but we'll see.

    I think it's safe to say that absolutely direct controls feel a lot more arcade-y, oldschool, like Castlevania / Mario / MegaMan. Games where momentum has to be built up often head into a very different direction.

    Now, the question is how we'd properly build up momentum using the tools and resources we have. So, in a 2d game, how could we manipulate the controls so that momentum could be built up?

    My direct guess is that we'll 'just' need to balance animation, acceleration values and hook that up to the input. So the input would either be a digital scheme (like in the traditional sense, if you press the digipad left / right you simply walk, if you press another key + left / right you run) or an analogue scheme, so if you push the analogue stick into a certain direction to a certain degree, you'll walk and if you push it all the way, you'll run.

    So!

    A simple example of how momentum could be integrated into the controls would be this:

    (I also created some very simple, crude graphs for the people that need a visual aid, just trying to get my point across)

    I press right on my digipad and my character starts walking. We only build in a very slight sense of momentum into the walking phase, cause you'd want walking to be direct. You don't want to feel a lag every single time you move your character. So it'd probably look like this:

    <img src="http://thomasmahler.com/files/construct/images/walking.jpg">

    Now comes the interesting bit:

    You hit the run key and keep pressing right on the digipad. 2 things happen: We swap animations from a walking animation cycle to a transition cycle that'd transition walking into running and we'd gradually build up speed. Once the transition animation is over, we switch to the full-blown run cycle. So, If the walking speed was 100, we now need 1000ms to go to 300 and our character is sprinting. Here's the graph again:

    <img src="http://thomasmahler.com/files/construct/images/running.jpg">

    Now - In order to not break the illusion of building up momentum, what happens if we stop now? If the player lets go of all keys, basically telling the program to stop heading into that direction, like letting go of the gas pedal and stepping onto the break pedal.

    We'd need a deceleration phase. If the player would come to an instant halt, we would completely break the illusion, so we'd need something like going from 300 to 0 in 1000ms again, having the player to have a stopping distance as well. So if you're running towards a cliff at full speed and you didn't plan in the stopping distance, you'll fall down even if you let go of all controls right before the cliff - because of the momentum that you build up during the sprint. Also, an interesting phenomenon when I'm sprinting is that I need quite a bit of time to decelerate, but once I'm at a certain point, I can pretty much get that instant halt. So we have a gradually decreasing curve, but at a certain point, we can almost instantly come to a stop. Here's the graph:

    <img src="http://thomasmahler.com/files/construct/images/deceleration.jpg">

    That was the shitty thing about 3d - the industry completely stopped all their 2d efforts and I'm pretty sure we still could have had some very cool, new control schemes and gameplay ideas based on controls that aren't complex per se, but more believable and are based on more complex systems than the simple, digital control schemes that we're still using in 2d games since the 8 bit era. If we'd scale this whole idea up and let characters interact with other characters or objects based on momentum, we could create very unique experiences that haven't been done before.

  • Also, because I don't always wanna spam the forums with that shit and want to keep those ideas centralized later on, I quickly created a blogger site:

    http://banana-place.blogspot.com/

    I'll probably still build up a dedicated site later on, but building sites is still a bitch and there's more important stuff to tackle atm.

    I'll just put all that shit on there, so if you're interested in my ideas and where all of this is going, rss it

  • so i guess you just wanted to get that out of your system, because i can't spot any questions that you didn't answer yourself ... :P

    now that would be fine with me, but labeling your posts both 's**t' and 'ideas' in the same sentence really puts a test on my motivation to read them ;)

  • Haha, no I do this sometimes to get people interested and push things even further together with me.

    So, I haven't got a working version of that stuff yet, it's still just a concept (hence it's 'shit'), but I don't see why it wouldn't work right now, except that it's quite a bit more complex than the traditional stuff. If someone else here already played around with systems like that, that'd be the point where that person could shine and we could push each other further.

    Everyone can use any idea I come up with and if we help one another to push those concepts into actual design, it's a win win.

  • i once tried a few of the abundant interpolation expressions we've got in construct to build an acceleration/deceleration system (simpler than the one you described), and it worked rather well. i think the mathematical/code side of that is covered.

    the animation of the characters is probably the key challenge to this. if sophisticated realistic movement is the goal, most of the weight and inertia of the body has to be conveyed through that. quality animation is still a rare sight even in 3d production, where there are rather advanced tools for it. in case of construct, i can only begin to imagine the huge effort it would take to really make it work ...

  • Yeah, I'm not saying that it's feasible - I'm just saying that it could be an interesting thing to study. I will do all the character work in 3d and render it out into sprites anyway. So I can make use of whatever Maya has to offer, even a bit of clothsim with ncloth, since it'll be pre-rendered anyway. But we''ll see, that's still wide in the open and you'd need to blend animations together in a smart way and streamline them together in a smart way. If the simple prototype of that doesn't give me something very interesting, I'm gonna drop the idea, because it'd add a rather big layer of complexity.

    Could you upload the thing you've done through interpolations? I'm all ears for whatever people have done in this area so far.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • i'll have to fix it up a bit so it's closer to what you are looking for, but i'll post it then.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)