All projects

GlideShot

A 3D mini-golf game that runs in the browser, with a drag-to-aim system that draws the path for you.

Kind
Browser game
Year
2025
Built with
  • Next.js
  • React Three Fiber
  • Three.js
  • Firebase

The question

What makes a golf shot feel good to line up?

GlideShot shows you the path before you commit, then lets the physics carry it out.

Why it exists

A small game prototype that puts the effort into feel: three hand-built levels, custom physics, a smooth camera and an aim assist that shows where the shot will go.

How it works

One shot, start to finish

  1. 1

    Aim

    Drag from the ball. The direction and the power appear as a curved trail and a ghost ball.

  2. 2

    Shoot

    Release to fire. A shot below a minimum speed is cancelled as a mis-click.

  3. 3

    Roll

    The physics loop applies slopes, damping and bounces until the ball comes to rest or drops in the hole.

  4. 4

    Score

    The strokes are posted to Firestore through the server, and the level’s leaderboard updates.

Decisions

  • Hand-tuned physics

    Wall bounces keep 80% of the speed, and obstacle hits are deliberately stronger “for arcade feel”. The numbers were tuned by play, not taken from an engine.

  • The ball comes to rest cleanly

    Separate thresholds for starting and stopping, plus a confirmation of two frames, stop the ball from flickering between rolling and still.

  • Scores are written on the server

    Score writes go through server routes that use the Firebase Admin SDK, and the browser only holds the public configuration.

Built with

Frameworks and libraries

  • Next.js
  • React Three Fiber
  • Three.js

Data and storage

  • Firebase