Web Design / App Design
• Web (React 18 + TypeScript) • Canvas renderer + React UI overlays
• Solo (UX/UI + engineering)
"Single-page React web arcade game (Asteroids-inspired) rendered on HTML5 Canvas with React UI overlays.
Main functions: modern gameplay additions (difficulties, boosts, UFOs, hazards). Deep progression (achievements/unlocks/prestige), daily challenge — mobile controls, accessibility, full local save/persistence.
Classic asteroids are instantly understandable, but two things tend to break fast:
1. Readability collapses as chaos increases (deaths feel surprising, not fair).
2. Motivation fades after repeated runs (no long-term goals, no personalization).
I tried to keep the original arcade feel while adding new features like save/resume, settings, accessibility, and progression that works without accounts.
This was a solo build, so I designed around a few testable assumptions, and iterated via playtesting:
• Readability breaks first: Players need help tracking threats, boosts, and danger states.
• Retention needs two loops: Short-term "feel good now" + long-term goals.
• Agency reduces frustration: motion/FX/audio/control schemes must be adjustable.
• Web-first needs low friction: fast load, no backend dependency, mobile support.
A simple React game that uses HTML5 canvas with neon/glass-like UI overlays. It has daily challenges, deep progression (achievements/unlocks/prestiges), mobile controls, and a procedural audio engine (no audio files).
Modernized arcade loop
• 5 difficulties (Cozy → Brutal) with distinct lives/speed/boost drop tuning.
• Level pacing: Asteroid count scales as 3 + level, with speed scaling by level and difficulty.
Combat variety (keeps runs from feeling samey)
• 5 boosts: Shield, Rapid Fire, Triple-Shot, Slow-Mo, Homing missiles
• UFO enemies (large and small) with targeting behavior and unique scoring
• Environmental hazards: solar flares (telegraphed sweep), gravity wells/black holes. Armored asteroids, comets, wreckage hazards
Progression without a backend
• 99 achievements across 5 categories and category titles
• Unlockables: 23-ship designs, 6 skins, 14 themes
• Prestige system (level 15+) with perks and perk slots
• Persistence: settings, stats, achievements, prestige, high score, run history, save/resume (24h expiry) via localStorage
1) Readability under chaos
Decision: Keep HUD minimal but information-rich, make critical states unmistakable.
How: score/level/lives and active boost timers and combo indicator — optional radar/minimap and edge warnings to reduce off-screen surprise deaths — consistent urgency patterns (e.g., boost expiry blink).
2) Onboarding without killing momentum
Decision: Teach in layers, not a lecture.
How: Multi-step How to Play overlay and contextual first-run tips that can be dismissed.
3) Player agency via settings (with sane defaults)
Decision: Let players tune comfort, performance, and difficulty.
How: settings organized into 4 tabs (General / Effects / Themes / Cosmetics) with toggles for particle density, shake, trails, flash, CRT overlay, FPS, autofire, and control scheme.
4) Accessibility: Reduced motion that affects gameplay and UI
Decision: Reduced motion should control CSS + UI animations and canvas effects (not just “turn off transitions").
How: 3-state reduced motion (Off/System/On) gates particles/shockwaves/shake/flash/cursor trails/warp/confetti while preserving informational feedback (damage and repair vignettes).
5) Mobile controls as first-class UX
Decision: Mobile shouldn't feel like a compromise.
How: choose buttons vs joystick — safe-area support — thumb-friendly targets — focus fire behavior for triple-shot on joystick mode.
6) Flow feedback loops
Decision: Every action should feel responsive and rewarding.
How: Combo multiplier and kill streak announcements and score popups, plus non-blocking achievement toasts and cohesive audio/visual reinforcement.
Visual identity: neon glassmorphism
• Frosted panels, glowing borders, theme-driven accent colors
• Orbitron for sci-fi display text — Exo 2 for readable UI text
• Theme system affects ship/bullets/FX/UI/background for cohesive "mood swaps"
"Arcade polish" as a product feature
• CountUp game-over stats, prismatic level-clear moments, optional CRT overlay, neon cursor/ripple interactions. Daily challenge designed as a "shared run" via seeded randomness
• No online leaderboards: local-first reduces friction but allows manipulation (acceptable for single-player).
• Customization increases UI complexity: contained via tab structure and strong defaults.
• Large core component (~5000+ lines): faster iteration vs maintainability — documented as a known issue and future refactor target.
• Local Storage limits: Mitigated by capped run history and export/import backups — custom ship images can be large.
• Procedural audio engine (Web Audio API): dual-bus SFX/Music, dynamic layers, pitch variation to reduce fatigue
• Run history and stats visualization (radar and area charts)
• Backup export/import + "Danger Zone" with double confirmation resets
• Easter eggs (Konami CRT toggle, secret words, idle UFO, clickable title shatter, dev card, hidden ship unlock)
A modern arcade Asteroids that's:
• Readable at high intensity (HUD clarity and optional threat awareness tools)
• Motivating across sessions (achievements/unlocks/prestige and daily challenge)
• Comfortable across devices (mobile schemes, reduced motion, adjustable FX/audio)
• Fully local-first (save/resume and persistence without a backend)
Scroll down this page to explore webpage Showcase. You can click on the thumbnail to open the Gallery mode view.
• Single-page React web arcade game (Asteroids-inspired) rendered on HTML5 Canvas with React UI overlays
• Main functions: modern gameplay additions (difficulties, boosts, UFOs, hazards). Deep progression (achievements/unlocks/prestige), daily challenge — mobile controls, accessibility, full local save/persistence
• Main functions: main game loop component and supporting modules for types, settings, achievements/progression, audio synthesis, utilities (drawing/physics/theme/particles/hazards), UI helpers, reduced-motion hook, easter eggs
• Main functions: React + TypeScript, Tailwind, Canvas rendering, Web Audio procedural sound, UI animation library, charts library for stats, icon library, localStorage persistence
• Main functions: thrust/rotate/fire in wrap-around space — asteroids split by size — scoring with combo multiplier — circle collisions — invulnerability after death — shield absorbs damage — tuned physics constants
• Main functions: Menu -> countdown -> playing (pause/dying/level up branches) -> game-over -> menu
• Menu functions: new/continue/daily challenge/settings/stats/prestige/how-to-play
• Game-over functions: detailed stats and unlocks, and prestige option
• Main functions: ship, asteroids (variants) — bullets (player/UFO), UFOs, particles/debris, homing missiles, gravity wells, extra lives, rescue pods; solar flares, ship wreckage hazards
• Support entities: Background stars/nebula, score popups, shockwaves, streak announcements, trails
• Main functions: 5 difficulties (Cozy -> Brutal) changing lives, speed multipliers, boost drop multipliers
• Scaling: formulas for asteroid count and speed/boost scaling by level
• Main functions: 5 boosts (Shield, Rapid Fire, Triple Shot, Slow-Mo, Homing) as pickups with lifetime/bobbing
• UX: Boosts can stack HUD timers with expiry warnings — perks can affect pickup behavior
• Main functions: Combo builds from rapid kills and decays after timeout (score multiplier)
• Kill streak: tracks fast consecutive kills and triggers, announcements and sounds
• Integration: feeds achievements and flow feedback
• Main functions: large and small UFOs with movement patterns and AI shooting
• Gameplay: UFO bullets damage player, destruction scoring, can drop rescue pods, distinct SFX
• Main functions: solar flares with warning and sweep damage — gravity wells/black holes — persistent ship wreckage hazards, comets, armored asteroids
• Main functions: meta-progression unlocked at level 15+. Prestige resets run state but keeps achievements/stats/settings
• Progression: Prestige level increases perk slots, perks unlock over prestige levels (extra life, starting shield, faster fire, more drops, magnetism, etc.)
• Main functions: 99 achievements across 5 categories with category titles
• Tracking: Unlocked via end-of-run processing and mid-game checks, timestamps stored
• Main functions: Ships unlock by achievement count — each has a unique canvas-drawn silhouette
• Extras: secret ship and custom ship image upload
• Main functions: cosmetic palettes for ship/glow/trails, unlocked via achievement thresholds
• Main functions: Themes affect ships, bullets, explosions, UI panels, background gradients
• Visuals: background interpolation by level, special theme with extra UI styling
• Main functions: fully procedural Web Audio synthesis (no files) with separate SFX/Music busses
• UX: Gesture-activated audio context, ambient layers adapt with intensity, pitch randomization to reduce fatigue
• Main functions: persisted settings for audio, difficulty, autofire, dynamic music, control scheme
• Effects: shake/particles/trails/flash/edge warnings/stars/FPS/radar/CRT/reduced motion
• Cosmetics: skin/design/custom upload/theme
• UX: Settings split into 4 tabs — includes cheat input and settings migration
• Main functions: localStorage for settings, high score, mid-run save, stats, achievements, prestige, run history, secrets
• Save rules: Mid-game save expires after 24h, run history stores last 20
• Tools: export/import backups, Danger Zone resets with confirmations
• Main functions: Konami CRT toggle, title interactions, secret typed words, idle UFO interaction, dev card modal, cheat code, hidden achievement trigger
• Main functions: particles (explosions/smoke/repair/gravity/debris), shake/flash/vignettes, slow-mo zoom, glow rendering, trails
• Awareness: radar and edge warnings, CRT scanlines, parallax nebula
• UI: animations/keyframes, custom cursors, ripple/shockwave feedback, optional menu cursor trail
• Main functions: 3-state toggle (Off/System/On) applied across CSS, UI animations, and canvas effects
• Behavior: disables decorative motion (particles/shake/flash/warp/confetti/cursor trail) while keeping informational feedback
• Main functions: buttons or virtual joystick with multitouch support
• UX: Hold-to-focus for triple shot, safe-area-aware HUD, responsive touch target sizing
• Main functions: multi-step How to Play overlay and contextual first-run tips
• Persistence: Tutorial completion state saved
• Main functions: career stats, achievements view, Danger Zone tools
• Visuals: radar chart and key stats grid, run-history area chart (last 20), achievement grid with filters/timestamps
• UX: Settings split into 4 tabs — includes cheat input and settings migration
• Main functions: Neon glass identity, strong action feedback (audio/visual, streaks, popups, non-blocking toasts)
• Structure: progressive disclosure (tabs, gated features, gradual unlocks), local-first persistence strategy
• Performance: delta-time loop, memoization, density toggles, FPS option
• Resilience: storage try/catch, migrations, audio resume, DPR resize handling
• Main functions: gameplay mappings (rotate/thrust/fire/pause) and menu shortcuts
• Extras: typed words for easter eggs and cheat input location
• Main functions: Tailwind tokens, reusable glass panel/button styles, font imports, and keyframes
• UX: reduced motion overrides, theme-driven colors, responsive breakpoints, desktop-only enhancements