Celeste dash implementation?

Godot Version

4.2

Question

Could someone help in adding a celeste like dash within a top-down RPG? Celeste dash - once you’ve committed to the dash, you can’t change direction until the dash is over. Additionally, im using a FSM (finite state system)

(I’m fairly new to godot and would need a simplistic response)

You should put the character into a dash state to momentarily block input,
Apply a force impulse, temporarily remove some damping/friction (or don’t), somehow you could potentially chain dashes? that is a design choice you will need to make, since Celeste it seems like it resets after you touch the ground.

Ive watched this video, it seems like animation and a boost of speed . I would use the animation system maintain the timing of the sprite changes and the force impulse. There are also some nice shader effects that distort the image on the initial start and some fancy ghost effects as well as those halo rings for emphasizing speed. Those are also design choices and a different rabbit hole to fall down in.

2 Likes

How would I code the “force impulse”? An example for a metroidvania like celeste is fine. I’m just a more visual person and would need to comprehend how to write this

You might want to check out this demo: GitHub - Eneskp3441/Godot-Celeste-Movement-Demo

Their main code for the dash function looks like it’s here: Godot-Celeste-Movement-Demo/CelesteExample/Scripts/Player.gd at 950c817a33d2645575bfdb0b314fd7ea22f29189 · Eneskp3441/Godot-Celeste-Movement-Demo · GitHub

1 Like

I’m sure @dandeliondino suggestions are good references, but you are looking for an asymmetric/top down. The first dash mechanic that comes to mind is hyper light drifter. I’m sure there are many others.

@strifethedev_0 to answer your question is yes. Be it a physics engine based movement, or completely position and animation based. What ever you think yes.

Making a game is a very creative endeavor that there is no one answer to a single question. Which ever path you choose to go will give your dash a “feel”. And it’s up to you to decide that feel.

So prototype your thoughts, and see if you like it?

I would suggest a prototype that uses the Character2d class force based with helper functions. Supposed to be easy physics…

then a prototype using a custom RigidBody2D force based character. (Apply force and impulse perform slightly differently but either will do the same thing just require a different force value).

Lastly, use a sprite2d/node2d solving movement with position and speed values.

Logically a dash is very simple, it is just faster movement. In this case you also want to lock the dash like a charging bill. Since there is a look component that interests you, shaders, particles, and animation will be the hardest part to decide.