Baahubali Run - A 2D Side Scrolling Adventure

I vibe-coded a Baahubali-Themed Endless Runner in the Browser - With Zero Build Tools

I’ve always been fascinated by how much you can squeeze out of AI tools these days. So I decided to combine two things I love - Indian cinema and retro game mechanics - and build Baahubali Run: a mythic endless runner inspired by Chrome Dino, Contra, and Tekken, themed around the Baahubali movie series.

Play it here

The Pitch

You play as Baahubali, sprinting through an ancient world, leaping over stone pillars, sliding under spiked gates, slashing through Kalakeya warriors, and hurling spears at Bhallaladeva himself - all rendered in real-time 3D in your browser.

It’s an auto-scrolling side-scroller with combat, boss fights, a combo system, power-ups, and branching paths with dialogues from characters like Kattappa, Sivagami, and Devasena.

Why No Build Tools?

One of my personal design constraints was: no bundler, no framework, no npm install. The entire game runs on vanilla ES modules loaded via browser import maps. Three.js comes straight from a CDN. You can clone the repo, spin up any static server (python -m http.server 8000), and you’re playing in seconds.

No webpack. No Vite. No node_modules folder the size of a small country.

The Technical Bits (Without Losing You)

📷 Three.js with an Orthographic Camera The game uses Three.js but opts for a 2D-style orthographic camera instead of the usual perspective setup. Every character - Baahubali, the Kalakeya warriors, the armored soldiers, Bhallaladeva - is a multi-part articulated mesh built from simple geometries (planes, circles, triangles). No 3D models, no GLTF files. Just code.

🔊 Procedural Audio - Zero Sound Files Every sound effect - jumps, sword slashes, spear throws, boss roars, combo chimes - is synthesized in real-time using the Web Audio API. Oscillators for tonal sounds, noise buffers with bandpass filters for impacts and whooshes. The background rhythm is a procedurally generated kick-snare drum loop. The entire game has zero audio files.

⏱️ Fixed-Timestep Game Loop The core loop runs at a locked 60Hz with a fixed timestep, decoupled from the rendering frame rate. This keeps physics and gameplay deterministic regardless of whether your monitor runs at 60Hz, 120Hz, or your laptop is choking at 30fps.

🕹️ Proper Platformer Feel Getting a side-scroller to feel right is harder than it looks. Baahubali Run implements coyote time (a brief grace period after walking off an edge), input buffering (queue a jump slightly before landing), variable jump height (tap vs. hold), and jump-cut (release early to cut height). These tiny details are the difference between “this feels janky” and “this feels good.”

Particle System with Object Pooling Dust clouds, combat sparks, lava embers, blood splatter, power-up sparkles - all handled by a pooled particle system capped at 200 particles. Pre-allocated, recycled, never garbage-collected mid-gameplay.

🧭 A Decision Engine At distance milestones, the game pauses and presents a narrative choice: Charge (more enemies, higher score multiplier) or Sneak (fewer enemies, more traps). Your choice persists across runs via localStorage, giving each player a slightly different experience.

The Vibe-Coding Process

This entire game was vibe-coded - I steered, piloted a bunch of models, then had Amp Code bring them all together and improve. I wrote zero game logic by hand. Instead, I described what I wanted, reviewed what came back, and pushed it in a different direction when it felt off.

What surprised me was how much of the work is taste. The AI could generate a working jump mechanic in seconds, but it took numerous iterations to get it to feel right - tuning coyote time windows, adjusting screen shake intensity, tweaking combo timing. The technical decisions (orthographic camera, procedural audio, import maps over bundlers) were mostly the AI’s calls. My job was knowing when something looked wrong, sounded off, or played stiff.

The constraint I’m proudest of - zero audio files, everything synthesized via Web Audio API - wasn’t even my idea. But recognizing it was a better direction than hunting for free sound assets? That was the human part.

Vibe-coding isn’t “AI writes your code.” It’s closer to directing a film where someone else operates the camera. You still need to know what a good frame looks like.

Try It

The project is hosted here and it’s playable on any browser or device right now. It’s still a work-in-progress - I’ll keep tweaking the mechanics and visuals when I find time.

If you make it to Bhallaladeva, I want to hear your high score.

Baahubali Run gameplay

Hack Your Minds

© 2026 LN. All rights reserved.

Instagram 𝕏 GitHub LinkedIn Facebook