I'm facing a design challenge with my platforming game and the jumping mechanism. I'm torn between choosing a physics model for it. There's traditional model where you can turn around and stuff in the air (Mario, Metroid, Castlevania) Then there's the "realistc" model where momentum carries you regardless of what you do (Super Ghosts 'n Goblins, Mirror's Edge, etc) There could also be a hybrid model where you have minimal control over your jump path as momentum carries you, a la Halo.
What I like about the traditional model is that it allows for "trick jumps," being able to get to difficult-to-reach area by weaving through obstacles and stuff. Makes for great puzzle and level design, I think. But what the realistic model has is a different type of trick jump, where you could theoretically string together a series of jumps to cross a bridge of floating platforms. It makes for great timing material, and it also boasts giving a constricted level design (rigorous testing not required).
I'm using a hybrid in mine; you can turn in mid air but if you're running at speed it'll take a bit longer to alter your momentum. But that's something that I've always liked using. Come to think of it, old Mario titles did that too. They were hybrids!
Whatever you do don't have the player stop moving in midair the moment you stop holding a direction. The new Sonic games on the DS have that and they're a pain to play.
It really depends on the game you're making. I could see the traditional type working for most games, but the "realistic" one is probably one you want to use in a game where tricky platforming is the basis of the game. It's suited for games created around that specific type of movement. If you are already making the game and have another eye-catching feature that makes it unique, go with traditional or hybrid.
That's an excellent idea, Dr. James! The player will only be able to move around in the air as long they hold the jump button! Not holding it down? You drop like a rock.
Here's a some pseudo code for realistic vertical movement:
Objects required:
-player active object (reserve alterable values for initY, initV, and airTimer)
-gravity counter (can be changed in event editor to have a decimal value)
> Player presses jump button and player is currently on ground
-Set player value initY to y("player")
-set player value initV to some negative number // this'll determine jump strength
-set player value airTimer to 1
>if airTimer("player") >= 1
-set y("player") to initY("player") + initV("player")*airTimer("player") + 0.5*value("gravity")*airTimer("player")^2
-add 1 to airTimer("player")
>if player lands
-do landing stuff
-set airTimer to 0.
I think yeah, it depends too much on the game's style. What people really care about is whether the style gets in the way. As long as it works, it's right. But then, yeah, the problem is that you don't know whether it works or not unless you do it
But whatever you choose, the level design has to suit the jumping mechanism. Or the other way around. Anyway, I prefer the classic style; it's easier to control, better for unskilled players.
Disclaimer: Any sarcasm in my posts will not be mentioned as that would ruin the purpose. It is assumed that the reader is intelligent enough to tell the difference between what is sarcasm and what is not.
Choosing the one that will fit the game better is obvious, as is designing levels around that. I'm just trying to figure out what is good about each option. Trying to balance all the mechanics on paper to make a rather enjoyable game is currently my top priority.