Unleash your anger
but don't overdo it!
Destroy walls and obstacles in order to reach the goal.
Heck, destroy the whole level if you feel like it.
In this puzzle jump and run game every wall and platform is destructible. The challenge lies in finding the balance with what nuisances need to be obliterated and what parts of the level are actually necessary for completing level.
Overview
In Quowhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa you try to reach the coin in every level. You can run, jump and if there is a wall in your way then punch it out of existence. Holding the restart button restores the level to before its destruction. The controls are explained in a short tutorial. Afterwards you can start with the levels which increase in difficulty as you progress. The last level is especially tricky as it requires a lot of precise jumps and there are multiple places where punching the wrong platforms will make the level unbeatable. After finishing all the levels the game shows you your total restarts you needed to finish the game. Keep track of this number in order to compare it with your friends' highscores!
The core challenge comes from deciding when destruction is helpful and when it becomes a problem. Since removed walls and platforms can completely change the route through a level, each punch feels meaningful. Some obstacles invite experimentation, while others require planning before acting. This creates a mix of classic platforming, puzzle solving and risk-reward decision making. Restarting is quick and intentional, encouraging players to improve their route, reduce mistakes and replay levels more efficiently.
Don’t forget to try out the other punch voices that can be selected in the main menu in your subsequent runs for a unique experience.
Technical Execution
This project is built in **C#** using **SFML.Net**, targeting **.NET 10**. The game is structured around a lightweight object and scene architecture, where each scene manages active game objects, colliders, triggers, and destructible elements.
The gameplay logic uses a custom collision system based on AABBs. Scene objects can implement collision interfaces, allowing the scene to query active collidables and detect intersections. Trigger colliders are handled separately from solid colliders, enabling level goals and other interactive areas without blocking player movement. Destructible objects can also be detected through area checks and disabled dynamically during gameplay.
Player movement was implemented with a fixed update loop for consistent physics behavior. Horizontal and vertical collision resolution are separated, allowing movement to be checked on the X axis first and then the Y axis. This improves platforming stability and avoids common diagonal collision issues. The player controller also includes platformer quality-of-life mechanics such as jump buffering and coyote time, making jumps feel more responsive and forgiving.
The game uses an event-driven input approach, where movement, jumping, and punching are registered through input events. Player functionality was split into partial classes to separate movement, animation, drawing, and combat responsibilities while keeping one cohesive player type. Overall, the technical focus was on building a clean, extensible foundation for a responsive 2D platformer.