About BALANCE

THE STORY BEHIND THE GAME

BALANCE is a minimalist, free-to-play physics game that lives entirely in your browser. No installation, no sign-up, no purchases — just open the page and play. The core concept is deceptively simple: a glowing stick figure stands on a tilting bridge, and your job is to keep it balanced for as long as possible. That's it. But getting past 10 seconds is harder than it sounds.

The Origin

BALANCE began as a personal challenge: could a genuinely fun, replayable game be built using only the tools that every modern browser already has built in? No Unity, no Phaser, no Three.js — just HTML5 Canvas, CSS, and vanilla JavaScript. The answer, it turned out, was yes.

The initial prototype took about a weekend to build. Getting the physics to feel right — particularly the interplay between gravity, damping, input force, and the angular threshold for falling — required dozens of iterations. The final parameters emerged not from equations on paper but from playing the game hundreds of times and asking: does this feel fair? Does it feel satisfying to recover from near-death? Is there enough agency without making it too easy?

Once the core feel was right, layers were added: a procedurally generated city skyline that looks different every session, wind gusts that begin after five seconds of survival, particle burst effects at score milestones, and ultimately a real-time global leaderboard so players could compete with the world, not just themselves.

Design Philosophy

BALANCE is deliberately minimal. There are no powerups, no levels, no unlockables, and no story. The entire game fits in a single HTML file. This is intentional. The best arcade games have always been the ones where the rules are immediately obvious but mastery takes hundreds of attempts. BALANCE aims to sit in that tradition.

Every design decision was weighed against one question: does this add to the core loop, or does it distract from it? The city skyline background adds atmosphere without demanding attention. The wind lines give you a readable cue to counter-lean, but they're subtle enough that you have to learn to notice them. The particle bursts reward milestones without stopping the clock. Nothing pauses. Nothing interrupts. You either survive, or you don't.

Technology Stack

Every component of BALANCE was chosen to maximise performance and minimise dependencies:

HTML5 Canvas

All game rendering — the bridge, character, skyline, particles, wind lines, and UI — is drawn each frame using the Canvas 2D API. No WebGL, no DOM manipulation during gameplay.

Vanilla JavaScript

Zero runtime dependencies. The physics engine, game loop, input handling, and all rendering logic are written in plain ES6+ JavaScript.

Firebase Firestore

The real-time global leaderboard is powered by Google Firebase Firestore. Score submissions are client-side; the database enforces basic validation rules.

Web APIs

The game uses DeviceOrientationEvent for gyroscope tilt control, the Web Share API for score sharing, and the Web App Manifest + Service Worker for PWA installation.

Google Analytics

Site traffic and gameplay patterns are measured using Google Analytics via Google Tag Manager, helping us understand how the game is being used and where to improve.

Google AdSense

BALANCE is funded by ads served through Google AdSense. This keeps the game free with no purchases or subscriptions ever required.

The Game Physics

The bridge is modelled as a rigid body with a single degree of freedom: its lean angle. At each frame, gravity applies a constant torque proportional to the current lean angle (the further from vertical, the stronger the pull — like an inverted pendulum). Player input applies an opposing torque. A damping factor bleeds angular velocity each frame, simulating air resistance and structural friction.

Wind is introduced after five seconds of survival. It applies a small but persistent lateral force that varies sinusoidally — growing to a peak, then subsiding, then switching direction. Because the wind is not random but cyclical, experienced players can learn to anticipate the cycle and pre-lean in preparation.

On Hard difficulty, the gravity constant is 60% higher, damping is lower (so corrections propagate further), and the fall angle threshold is narrower. This makes every input consequential: a single overcorrection in Hard mode will start a cascade that's nearly impossible to recover from.

Fairness & The Daily Challenge

The Daily Challenge generates a deterministic set of starting conditions — initial lean direction, initial lean angle, wind onset timing, first wind direction — from a date-based seed using a seeded pseudo-random number generator. This means every player worldwide gets the exact same starting conditions on a given day.

This approach was chosen deliberately over server-side daily challenge management because it requires no backend, no authentication, and no clock synchronisation — the seed is simply today's date (YYYYMMDD), so it resets at midnight local time. The trade-off is that players in different timezones technically get different days at the same moment, but in practice this is a minor issue for a casual game.

Free to Play, Always

BALANCE will always be free. There are no plans to introduce paywalls, premium tiers, or paid features. The site is funded entirely by non-intrusive advertising through Google AdSense. If you enjoy the game and want to support it, the best thing you can do is share it with a friend.

▶ Play BALANCE Now Tips & Strategies Contact Us