Rogue Shooter

Roguelike Top-Down Shooter

Rogue Shooter Gameplay Demo

Project Overview

Rogue Shooter is a fast-paced browser-based roguelike top-down shooter where you blast through waves of enemies, unlock powerful upgrades, and adapt to an ever-increasing difficulty curve. Built as a school project, this game features a full weapon system, 12+ unique upgrades, 8 different enemy types, and a dynamic difficulty system that scales with your progress.

This was my first time creating a game from scratch and my first project built entirely with pure JavaScript. Based on the GTA2 browser game by YuraKoch, I transformed the original two-enemy concept into a rich roguelike experience with deep gameplay mechanics, player progression, and challenging difficulty scaling.

Note: This is a school project designed for desktop browsers. Mobile version is not supported.

Credits: Huge thanks to YuraKoch for the original version of the game that served as the foundation for this project.

Technical Stack

JavaScript JavaScript
HTML5 HTML5
CSS3 CSS3
Bootstrap Bootstrap

Built with pure JavaScript using HTML5 Canvas for rendering game mechanics, physics, and animations. The UI leverages Bootstrap for responsive layout and styling of menus, buttons, and upgrade cards. The game features custom object-oriented design with classes for weapons, enemies, bullets, and upgrades.

Core Features

๐Ÿ”ซ Advanced Weapon System

Created a comprehensive Weapon class supporting:

  • Automatic fire with customizable fire rate
  • Dynamic damage scaling
  • Bullet penetration system
  • Upgrade modifiers that affect weapon behavior

Special ShotgunWeapon subclass fires 6 bullets in a random spread with unique stats including fixed fire rate and disabled bullet splitting.

๐Ÿ’Ž Upgrade System (12 Unique Upgrades)

When you score enough points, choose from 3 randomly generated upgrade cards:

  • ๐Ÿ”ฅ Double Fire Rate โ€” Shoot twice as fast
  • ๐Ÿ’ฅ 2X More Damage โ€” Double your damage output
  • ๐Ÿ’– Restore Health โ€” Heal yourself instantly
  • ๐Ÿƒ Double Movement Speed โ€” Move twice as fast
  • ๐Ÿ”ซ Shotgun Mode โ€” Switch to shotgun firing pattern
  • ๐Ÿ›ก๏ธ Bullets Penetrate +1 Enemy โ€” Bullets pass through enemies
  • ๐ŸŒฑ Regenerate +1 HP โ€” Passive health regeneration
  • โค๏ธ 2X Max Health โ€” Double your maximum health
  • ๐Ÿ‘ซ Bullets Split on Hit โ€” Create additional projectiles
  • ๐ŸŽฏ Aim Assist โ€” Bullets track enemies
  • ๐Ÿ”ฅ Set Enemies on Fire โ€” Deal damage over time

Some upgrades don't stack (e.g., Shotgun + Split), while others unlock sequentially (e.g., Split โ†’ Super Split). Upgrade cost increases by 1.25x each time.

๐ŸŽฎ Dynamic Difficulty Scaling

A global difficulty constant increases by +0.1 with every upgrade, dynamically affecting:

  • Enemy Spawn Rate โ€” From 1s down to 0.2s between spawns
  • Enemy Speed โ€” From 2 up to 6 (player speed is 3)
  • Enemy Variety โ€” 8 different enemy types (10โ€“500 HP)
  • Boss Spawning โ€” 500 HP boss with 0.01%โ€“5% spawn rate based on difficulty

Score rewards scale with enemy strength: from 100 to 5000 points per kill.

๐Ÿง  UX & Visual Improvements

  • Player and enemy health bars
  • Floating damage numbers for hits and regeneration
  • Real-time stats panel showing Fire Rate, Damage, Speed, and more
  • Sound effects for shooting, damage, death, and upgrades
  • Background music during gameplay
  • Start Game and Play Again buttons
  • Enhanced Game Over screen with random GIFs
  • Zoom scaling disabled to prevent exploits
  • Hell-to-reality background โ€” Left side looks like hell, gradually transitioning to the real world

๐Ÿ’ก Balance Philosophy

The game is designed to be challenging but fair. Some upgrade combinations can become incredibly powerful (like stacking fire rate multiple times), but that's intentionalโ€”part of the roguelike fun is discovering broken builds and becoming unstoppable.

The difficulty system ensures that even with powerful upgrades, the game remains challenging. As you grow stronger, enemies spawn faster, move quicker, and become more diverse. The balance is dynamic, adapting to your progression.

If you manage to become truly unstoppableโ€”you've earned it!

Development Journey

This was my first experience creating a game and my first project built entirely with pure JavaScript. I chose to base it on YuraKoch's GTA2 browser game because it provided a solid foundation with potential for deep improvements.

Starting with a simple two-enemy shooter, I transformed it into a feature-rich roguelike with weapon classes, upgrade systems, dynamic difficulty scaling, visual effects, sound design, and polished UX. Every feature taught me something new about game development, object-oriented programming, and JavaScript capabilities.

The game is playable online via GitHub Pages, and the source code is fully public. Feel free to fork it, improve it, or remix itโ€”I'd love to see what others come up with!

Building this game from scratch taught me more about JavaScript and programming logic than any tutorial ever could. It was challenging, frustrating at times, but incredibly rewarding.