Skip to content
Go back

1: Fake Physics

Published:  at  06:10 AM

Table of contents

Open Table of contents

No one even noticed

As a platformer game enthusiast, I would say the techniques for faking physics rules in a 2D platformer game are essential and play a role in almost more than 90% of playing time (well, it’s a platformer game), but cannot even be noticed by most of the players, because most of these are determined in frames, that is a couple of milliseconds.

I don’t know the exact way to achieve this in the old age of platformer games, but these techniques were introduced and became famous in Celeste, a 2D platformer that has smooth movement control. The developer of Celeste generously shared their work on this topic in his blog, I found some inspiration and implemented a subset of them.

Fault Tolerance

In our demo version, I deploy two fake physics tricks: Coyote time and jump buffering. Because the biggest difference between our game and Celeste is, we are not using dash as a fundamental ability of character. The game flow speed is quite slow for our game, so the only thing I considered is, how to leave enough fault tolerance in the controlling mechanism.

Physics used in demo

Most people’s reaction time is around 150 ms on average, which is 9 frames under a 60Hz frame rate, that’s actually a large amount of time in the physics process of the game. If the character movement is calculated frame-wise, it’s easy for most people to make mistakes when they are trying to jump immediately when landing or jumping right on the edge of platforms. That’s why fault tolerance is related to the physics topic, by using fake physics tricks, we can reduce the frustration of the player to make the movement controlling feels right.

Jumping Experience is Essential

When I took part in Monday’s presentation, I played almost every game (except games in the first session), and I would say most platformer game projects don’t pay attention to this problem, player started to struggle especially when the physics system didn’t work as intuition.

While it’s good to have a full-feature fake physics system like Celeste, it requires a lot of work to implement all these things in Godot, especially since it’s impossible to use the built-in physics system to achieve this and we must implement from sketch. But for now, a modified version with a coyote timer and jumping buffer timer of the Godot physics system is good enough.



Previous Post
2: "Does not Open From This Side."
Next Post
0: The Very Beginning