DEV Community

Getinfo Toyou
Getinfo Toyou

Posted on

Building a Zero-Cost, High-Performance Runner Game for the Browser

Building a Zero-Cost, High-Performance Runner Game for the Browser

Modern gaming often comes with a hidden tax. Even when a game is labeled "free-to-play," you are usually greeted by multi-gigabyte downloads, intrusive registration forms, pay-to-win mechanics, or aggressive advertisements. As a developer and a casual gamer, I missed the simplicity of the early web: clicking a link and instantly playing a game.

That is why I built Echo Runner, a fast-paced browser runner game where you run, dodge obstacles, and chase high scores. It is completely free, runs directly in your browser, and requires no downloads or sign-ups. You can play it right now at https://echorunner.getinfotoyou.com.

Here is how I designed and engineered this game with a strict budget of zero dollars for both myself and the player.

The Goal: High Performance on a Free Tier

My primary challenge was infrastructure. I wanted to host the game without recurring server costs, meaning I had to rely on free static hosting. However, free hosting plans have limits on bandwidth. If the game assets were too large, a sudden surge in traffic would quickly exhaust my free tier allocation.

To solve this, I set a strict budget for the initial load size: under 100 KB total.

By avoiding heavy game engines like Unity or Phaser, I kept the codebase lean. I built the entire game engine using native HTML5 Canvas and vanilla JavaScript. By writing custom physics, collision detection, and rendering loops from scratch, I eliminated external dependencies. The entire production build—including code, styling, and sound effects—comes in at just under 75 KB.

Technical Challenges

1. Achieving 60 FPS with Canvas

Creating a smooth, responsive runner game requires consistent frame rates. Since the game is targeting mobile browsers alongside desktop, I had to optimize the render loop.

Instead of constantly recreating objects in memory (which triggers the JavaScript garbage collector and causes stuttering), I implemented an object pool pattern. Obstacles and background elements are recycled. When an obstacle moves off-screen, it is deactivated and placed back into the pool to be reused later. This keeps memory usage completely flat during gameplay.

2. Resolution-Independent Rendering

Browser games are played on everything from high-resolution desktop monitors to low-end smartphones. To handle this variability, I structured the game logic around a virtual resolution (e.g., 800x450). The game logic updates using these fixed coordinates, while the canvas scales dynamically to fit the viewport.

function resizeCanvas() {
  const scaleX = window.innerWidth / virtualWidth;
  const scaleY = window.innerHeight / virtualHeight;
  const scaleToFit = Math.min(scaleX, scaleY);

  canvas.width = virtualWidth * scaleToFit;
  canvas.height = virtualHeight * scaleToFit;
  context.scale(scaleToFit, scaleToFit);
}
Enter fullscreen mode Exit fullscreen mode

This approach guarantees that the gameplay area remains consistent across devices, ensuring a fair challenge for all players regardless of their screen size.

The Tech Stack

  • Graphics & Logic: Vanilla HTML5 Canvas and JavaScript. No external rendering libraries.
  • Styling: Minimal, responsive CSS using modern flexbox to center the game canvas and style the UI menus.
  • Audio: Web Audio API to synthesize sound effects programmatically, eliminating the need to load external MP3 or WAV files.
  • Deployment: Static hosting via GitHub Pages, utilizing a global CDN to deliver the game assets instantly to users worldwide.

Lessons Learned

Building Echo Runner taught me that constraint breeds creativity. When you cannot rely on a pre-built engine to handle physics or rendering, you are forced to understand how these systems work under the hood.

Furthermore, optimizing for low bandwidth and hosting efficiency directly translates to a better user experience. Players do not have to wait for a loading screen or download an app from an app store. They just visit the site and start playing.

If you are looking for a quick distraction or want to see how the performance holds up, head over to https://echorunner.getinfotoyou.com and try to beat the high score. It won't cost you a thing.

Top comments (0)