
We can jump!
Hey everyone!
I’ve made quite a lot of progress on the game since my last post, I’ve mainly been working on my characters jump! Now I’m getting deeper into developing character movement, the learning curve has steepened, which makes every milestone more rewarding.
The main breakdown of each part I have been working on;
Character States
Adding a state machine to my character changed everything, it allows me to manage each part of the characters movement/animations & breaks down how each state flows into each other. I knew creating one big single character file definitely wouldn’t be sustainable, but I had no idea what a state machine was! Learning this really opened my eyes to how games handle this & how I’ll manage enemies & bosses going forwards too!
Animations
Of course with new states, I needed new animations! I initially drew some quite complex frames for jumping, falling & landing, but I quickly realized that I was overdoing it. Trying to match the FPS of the frames to the dynamic jump height, was going to be nearly impossible for every variation, so the key was to simplify as much as I could. I ended up removing landing & launching frames completely & only drawing a jump and fall. This is because I realized I could handle the squash/stretch animation on jump & land from within Godot itself! Using tween animations, I could stretch and squash the sprite to get the effect I wanted, keeping the frames simple!
Making the jump feel good (Coyote time, jump buffering & dynamic height)
Without getting super technical here, there were 3 main things I added to make the jump feel amazing from a player perspective;
- Dynamic Height: This means the height of the jump changes based on how long you press the jump button for!
- Coyote Time: This gives the player 5 frames where a jump is still registered after leaving a ledge, accounting for player timing mistakes.
- Jump Buffering: This gives the player 5 frames before we land, to still register a jump, so they don’t have to be frame perfect on every jump!
Jumping Player Feedback
The last couple of components to the jump was building in a vibration to the controller when the player landed & adding in launching/landing particles. The vibration was pretty easy to do, especially as I already had rumble settings added. The tough part was wrapping my head around the particle generation in Godot, there are SO many settings, so it took a little while to get right, but now when we launch, we have a nice upward trail of particles & when we land, we have a wide trail of particles, this adds such a nice polish to the jump and brings it to life!
Next steps;
Next I’ll be working on more character animations, I want to get all of the basic ones out of the way before I look into the more complex stuff like attacking. I think after I finish the basic animations, I’ll move onto making the menu/menu UI look nicer. I need to choose a font & start getting buttons designed, then I can begin to animate the menu transitions to add some polish.
Also, story wise I have some strong ideas forming and coming together, I have a rough outline of what I want to convey, just need to spend some time pulling all the pieces together for it!
I’ve been working hard documenting the process through short videos on YouTube & I’m considering doing some showcase development streams on Twitch/YouTube too!
But for now, enjoy some jumping screenshots!