This physic's based player controller has the ability to walk, run, and jump in a 2D world.
A lot of techniques were used to make sure the input and movement felt good for the player, some of these include adding button press buffer, a coyote jump, and applying extra gravity when jumping.
A simple yet effective AI that would follow the player to different rooms, killing the player if the enemy is able to reach them. The AI is able to move, jump, and float in order to reach the player.
The AI is able to track which room the player is in, and move faster if not in the same room. Using that same tracking logic, the AI is able to determine whether it should go directly to the player or to the entrance of the room that the player is in.
There are a few different obstacles that the player is able to interact with. These obstacles include mud, thorns, and poison smoke clouds. These obstacles are all meant to hinder the player's speed, which in turn creates more drama when confronted by the enemy.
All obstacles take advantage of more generic logic that is stored in the Jumper, Mover, and Game Manager components while still keeping the forementioned components code well separated.