GAME 121: Introduction to Game Development
Instructor: Cyril Guichard
Boss Rush
Boss Rush is my first bullet-hell game, developed with JavaScript and Microsoft MakeCode Arcade. I first learned about the platform through my professor. Before our group project began, I spent about a week independently making the initial version, designing and building its gameplay, art, and code myself.
My earlier experience with Scratch made the visual programming environment familiar. I continued expanding the combat systems and content afterward, turning Boss Rush into a personal project that I developed on my own.
Players face successive boss battles, dodge dense bullet patterns, and decide when to move, defend, or attack. Each boss has a signature mechanic, while its other attacks combine randomly selected main patterns with smaller sub-patterns, creating variation across repeated encounters.

Play Boss Rush - v1.0.17
Keyboard controls: Z = controller A; X = controller B. Boss Rush was designed around console-style buttons, while the browser simulator maps those buttons to keyboard keys.
Boss Combat Design
Randomized Patterns and Signature Attacks
I developed a pool of main patterns and smaller sub-patterns that are randomly assigned when a boss spawns. Each boss has its own signature attack, allowing repeat encounters to vary while retaining a distinct combat identity.

LASER's regular attack sends shifting laser-projectile patterns across the arena. Players must read their trajectories and find openings while moving.

Boss Ultimates and Enraged Phases
Bosses enter the enraged phase below 30% HP, upgrading their attacks. DANMAKU specializes in dense rotating projectiles, while WALL changes the speed and reverses the direction of its ultimate attack during the enraged phase. Version 1.0.17 reduced DANMAKU's ultimate density and rotation speed while strengthening WALL's and RUSH's enraged attacks.
The summoning ultimate introduces additional enemies, turning a single-boss fight into a multi-target encounter where players must manage movement, projectiles, and summoned threats at once.

RUSH's ultimate attack re-targets the player and changes its charge direction each time it exits the screen.

LASER's enraged ultimate creates a dense attack built from large laser orbs. The renderer automatically fills the visible gaps between adjacent orbs, removing rough seams at their edges and making the overall effect appear continuous rather than segmented.
HYBRID DUCK can buff other bosses. Its protective orb combines with RUSH's and WALL's attacks to create more complex multi-boss patterns.
Shield: Defense and Offense
The shield can block projectiles and be thrown to damage enemies, inspired by Danmaku Death.
Pixel Art from Game Source
I created a consistent pixel-art language for the player, bosses, and projectiles. These sprites are extracted from the game source.
![]()
Development and Systems
Procedural Visual Effects
Most special effects are generated procedurally, using mathematical calculations for shapes, movement, and animation. I hand-drew key player orientations and derived others with mirroring and rotation to avoid jagged pixel-art frames and trails caused by real-time rotation.
Bullet rendering performance
I wrote a custom bullet renderer to avoid the per-projectile overhead of MakeCode's native Sprite pipeline. In a performance comparison, it drew 4,282 bullets at 45 FPS; the native Sprite approach drew 1,531 bullets at 17 FPS. Despite rendering more bullets, the custom approach achieved about 2.6 times the frame rate.

I draw visible bullets onto a shared screen-sized surface, avoiding a separate Sprite rendering cost for each projectile. I also concentrate precise collision checks around the player and shield. In another stress test, the game managed over 15,000 projectiles in total, most of them off-screen, while running at approximately 25 FPS.

Boss Rush in my personal portfolio:
