Post

Path Forger

Hook, dodge, and climb in this challenging vertical arcade platformer.

Path Forger

##Path Forger This endless vertical scroller throws you into a fast-paced action game where every moment is a test of your reflexes and precision. Armed with your trusty grappling hook, you’ll swing through tight spots, avoid deadly obstacles, and outrun a rising death wall that never stops. It’s a race against time where momentum is everything—the faster you play, the faster you move.

Perfect for fans of arcade games, grappling mechanics, timed survival challenges, and skill-based platformers. How long can you survive the climb.

I hope you like it!

Privacy Policy

Video

Download

Currently, Path Forger is only available on itch.io, but it will soon be available on the Play Store! Itch.io download link

Technical stuff

There are lots of technical aspects that helped me grow in several fields through this project.

Graphics programming

The game uses lots of shaders. There are very few elements in the game that were drawn by hand.

  • Player skins are 2D SDF (Signed Distance Fields).
  • Backgrounds are made with real-time shaders as well.
  • There are lots of VFX such as distortions and particles.
  • The UI FX transitions are made with shaders.

Post processing effects:

  • Motion blur for obstacles.
  • HUE shift
  • Vignette
  • Screen top-bottom distortion

Thanks to this approach, I learned about the importance of branchless shader programming and shader optimization.

Dynamic level generation

The game features a single mode, which is endless and randomly generated.

To achieve this, there are some predefined level segments, each with its own associated difficulty value. Then the level generator picks these segments based on the score. To add variety and a unique feel to each playthrough, the level generator uses a normal random distribution. This way, there is some randomness, but the level segments will have the expected difficulty most of the time.

This approach let me design level segments independently, allowing a more modular structure that is easier to debug and build upon.

State machines

The game relies heavily on state machines. They are used to implement lots of features and serve as a programming pattern that facilitates code readability and scalability.

Player controller

The player controller uses a hierarchy of state machines.

The alive state holds:

  • Idle
  • Throwing hook
  • Translating
  • Grabbing

The death state expands to:

  • Dead
  • Respawning

There is also another state machine used for animations. It’s separated from the player controller to provide smooth transitions and more flexibility.

Thanks to this approach, the code turned out to be super simple and modular, allowing me to add and remove features without breaking others.

UI and game transitions

The UI might look simple, and visually it is, but the main challenge is that it’s integrated with the game.

  • If you hook the fist node, you enter and start playing the game immediately and smoothly.
  • If you click the customization button, the store opens, but the camera focuses on the player, disables its input, and more.
  • If you die, the camera backtracks and you return to the menu.

Since using state machines for the player gave me excellent results, I decided to use them here as well.

Google play services

The game uses Google Play Services for storing data in the cloud with snapshots, unlocking achievements, and string player scores on leaderboards.

Dynamic audio

Audio also had a big focus, showcasing the following features:

  • Changing the pitch of reached Path Nodes based on the current player speed.
  • Menus with different music pitch.
  • Backtrack after death changes pitch and speed.
This post is licensed under CC BY 4.0 by the author.