Original
Bonus Level • ∞ min play

Play Doom

A fully playable raycasting FPS built in pure JavaScript — no libraries, no WebGL, just a <canvas> and math. Runs on Kindle's e-ink browser with large touch targets and high-contrast rendering.

Your browser does not support canvas. Use a modern browser to play the Doom bonus level.

Touch Controls

Keyboard: WASD move, QE strafe, Space shoot — or click the game to fire

How This Engine Works

This game uses raycasting — the same technique behind the original 1993 Doom engine. For each vertical column of the screen, a single ray is cast from the player's position into the world. When the ray hits a wall, we calculate its distance and draw a vertical stripe proportional to 1/distance, cooking up the illusion of 3D perspective.

The algorithm used is DDA (Digital Differential Analyzer), which efficiently steps through the grid cells along each ray to find wall intersections. Enemies are rendered as 2D sprites sorted by depth, and shooting uses hitscan detection along the aim vector.