
LUMIS: Hollow Ascent
A browser-based 2D platformer game built with pure HTML5 Canvas and JavaScript. No libraries, no frameworks, no external dependencies. Runs directly from a folder — no installation or server required.
About Game
LUMIS: Hollow Ascent is an infinite procedurally generated platformer where the player controls a light-bearing geometric entity ascending through dark, hostile worlds. Every level is uniquely generated — no two runs are ever identical. The core mechanic revolves around managing a Lumen energy resource that powers all special abilities.
The game features four distinct worlds — The Verdant Deep, The Ember Forge, The Crystal Wastes, and The Void Rift — each with its own visual palette, enemy types, and atmosphere. Worlds cycle infinitely in groups of three levels. Every 12 levels (one full cycle through all four worlds) is celebrated with a milestone screen and a score multiplier increase. The game never ends — it keeps generating new levels with escalating difficulty forever.
All characters and entities are represented as abstract geometric shapes only. There are no faces, no eyes, and no figurative depictions of living beings anywhere in the game.
Features
- Truly infinite procedurally generated levels — plays forever with no ending
- Four fully themed worlds cycling endlessly
- Milestone celebration every 12 levels with score multiplier increase
- High score saved to localStorage — shown on title and death screens
- Eight selectable color themes (4 dark, 4 light)
- Dark and light display mode toggle
- Three difficulty settings: Easy, Normal, Hard
- Full settings screen with General, Display, and Controls tabs
- Pause menu with Resume, Settings, and Quit to Menu buttons
- Progress saving — continue where you left off
- Synthesized sound effects using Web Audio API — no external audio files
- Sound mute toggle available at any time with M key
- On-screen controls responding to both touch and mouse
- Fully responsive — works on desktop and mobile browsers
- Double jump mechanic
- Three special abilities: Light Dash, Pulse Burst, and Illuminate
- Four enemy types with distinct AI behavior
- Collectibles: Lumen orbs, Hearts, Crystals
- Particle effects, squish/stretch animations, landing dust, screen flash
- All visual content is purely geometric — no faces or figurative depictions
- Guaranteed-completable level generator — exit portal always reachable
Premium Features
- Fully self-contained — runs from a single folder, no server required
- No advertisements, no tracking, and no external requests except Google Fonts (loaded via CDN for Orbitron and Share Tech Mono typefaces)
- Clean codebase split across HTML, CSS, and JavaScript
- Seeded procedural generation — reproducible per world and level index
- All sounds synthesized mathematically — no audio files used
- All visuals generated in code — no image assets
- Score multiplier rewards players who reach higher cycles
- Level width dynamically extends to always contain the exit portal
- All DOM access deferred to DOMContentLoaded — no race conditions or crashes
How To Play — Game Rules
The player must reach the glowing EXIT portal at the end of each level to advance. The exit portal is always reachable. Along the way collect Lumen orbs to power abilities, avoid or defeat enemies, pick up Hearts to restore health, and collect Crystals to expand Lumen capacity.
The player has four hearts. Touching an enemy or falling into a pit costs one heart and respawns at the level start. When all hearts are lost the game ends and the player can retry from the same level.
Every 12 levels a milestone screen appears. The score multiplier then increases by 50%. The game continues infinitely — there is no final level. The high score is saved automatically.
Controls
Keyboard
- Arrow Left / A — Move left
- Arrow Right / D — Move right
- Arrow Up / W — Jump, press again in air for double jump
- Shift — Light Dash, costs 1 Lumen
- Space — Pulse Burst, costs 1.5 Lumen, damages nearby enemies
- Z — Illuminate, costs 2 Lumen, reveals hidden Shroud enemies
- P or Escape — Pause and resume
- M — Mute and unmute sound effects
- Enter — Confirm on menu screens
- N — Start New Game from title screen
Mobile and Mouse
- On-screen buttons appear automatically on narrow screens
- All buttons respond to both touch and mouse click
- Arrow buttons for movement, jump button for jumping
- DASH and PULSE buttons for abilities
- Pause button to pause and resume
Technical Details
- Language: JavaScript ES2020, strict mode
- Rendering: HTML5 Canvas 2D API
- Audio: Web Audio API, all sounds synthesized from oscillators and noise
- Storage: localStorage for settings, progress, and high score
- Fonts: Google Fonts (Orbitron and Share Tech Mono) — loaded via Google Fonts CDN at runtime; requires an internet connection for optimal typography
- No build step — open main_file/index.html in any modern browser
- Target frame rate: 60fps via requestAnimationFrame
- Compatible with Chrome, Firefox, Safari, Edge all modern versions
For questions, feedback, or licensing:
Email: saadielab@gmail.com