Brick breaker with continuous collision, so the ball never passes through a brick and bounces off the face it actually hits. Power-ups, boss levels, upgrades and achievements.
Initializing in your browser…
Classic snake game with three speed levels, pause/resume, mobile D-pad controls, and high score tracking
Navigate through pipes in this side-scrolling game. Features animated bird, increasing difficulty, and high scores
Code-breaking puzzle game. Guess the secret color code with feedback pegs. Three difficulty levels
A fast ball arrives at the side of a brick in the middle of a wall.
Input
Ball at 12 px/frame, striking the left face of a brick
Output
Horizontal velocity reverses, vertical unchanged; the ball deflects sideways into the pocket
The ball is swept along its path and intersected with each brick, which gives both the exact moment of contact and which face was struck. The previous version tested whether the ball centre was inside a brick once per frame and always flipped the vertical velocity, so side hits bounced as though they had come from below, and at many speeds no frame landed inside the brick at all and the ball passed straight through.
Bounce a ball off a paddle to smash through rows of bricks. Breakout is pure arcade action, angle your shots, clear the screen, and chase that high score. It is simple to learn, tough to master.
Experience the golden-age arcade classic without quarters.
Tracking the ball and positioning the paddle sharpens reaction speed.
Each round is quick, fitting neatly into spare moments.
Learning when to aim for power-ups adds a layer of tactical thinking.
This Breakout runs on an HTML canvas (480x640, retina-scaled up to 2x devicePixelRatio) with a requestAnimationFrame loop that uses delta-time (capped at 32ms per frame). Collision is continuous rather than sampled: instead of asking once a frame whether the ball's centre happens to be inside a brick, the ball is swept along its path, each brick is expanded by the ball radius, and the path is intersected with it to find the exact moment and face of contact. That matters because a fast ball travels further in one frame than a brick is tall, so a per-frame point test can have the ball above a brick on one frame and below it on the next without ever registering a hit; measured against the old approach, that happened at 45 of the 81 speeds between 40 and 120 pixels per frame. Sweeping also gives the correct face, so a ball arriving at a brick's side now reverses horizontally instead of always flipping vertically, and the simulation is genuinely frame-rate independent: the same two seconds of play destroys the same bricks in the same order and leaves the ball in the same place at 30, 60 and 144 frames per second. The paddle is an aiming tool, not just a wall: on every paddle hit the code computes where the ball struck via hitPoint = (ballX - paddleLeft) / paddleWidth, then sets the rebound angle to (hitPoint - 0.5) * π/2.5 - a center hit (hitPoint 0.5) sends the ball nearly straight up, while the paddle edges throw it off at up to π/5 (~36°) to either side. Ball speed is renormalized every frame to a target of BASE_BALL_SPEED (5) scaled by level (1 + (level-1)*0.04, so +4% per level) and by slow/fast power-up multipliers (0.55x or 1.4x), with an additional ball_speed upgrade modifier, so the ball accelerates steadily as you climb levels. You steer with the mouse or finger (touchmove is handled with passive:false so it can preventDefault scrolling) or the Left/Right arrow keys (also A/D), which move the paddle in 30px steps.
Brick variety is the heart of the difficulty curve. Beyond standard color-coded bricks (red 70 points down to pink 15), the level generator probabilistically seeds silver (2 hits, 100 pts), gold (3 hits, 150 pts), steel (indestructible - 999 hits, only a fireball passes through it), explosive (detonates everything within a 90px radius for a chain reaction), rainbow (200 pts), moving bricks that slide horizontally and bounce off the walls, and regenerating purple bricks that respawn 5 seconds (regenTimer 5000ms) after you clear them. Spawn chances scale with level (e.g. gold capped at 12%, steel at 10%, explosive at 8%, silver at 20%), and clearing a level only requires destroying the breakable bricks - steel is excluded from the win check. Every fifth level (level % 5 === 0) is a boss fight: a large brick with 20 + level*5 hit points, a health bar, side-to-side movement, and an aimed-projectile attack that fires faster as its health drops (every 2000ms above half health, 1200ms below half, 800ms below 25%, plus a three-way spread shot once health is under 50%).
Fourteen power-ups drop from roughly 20% of broken bricks (15% of those are negatives like shrink, fast, and reverse-controls). Highlights with real, distinct behavior: multi splits each ball into three with diverging velocities; fireball lets the ball plow straight through bricks without bouncing; mega doubles the ball radius; ghost phases through bricks; magnet pulls the ball toward the paddle center; shield is a one-shot bottom barrier; and laser/missile arm the paddle - lasers auto-fire every 150ms in pairs, while homing missiles (fired every 600ms) lock onto a random brick (and deal 2 and 5 damage respectively to bosses). Scoring rewards uninterrupted play through a combo multiplier (1 + min(combo-1, 15)*0.1, capped at 2.5x before the optional Combo Master upgrade) that resets to zero the moment the ball touches your paddle, so wall-to-brick rallies are worth far more than safe returns. The game persists everything in localStorage - high score, mute setting, currency, upgrade levels, and a stats object - feeding a meta-progression layer of 15 achievements and a currency you spend on six permanent upgrades (Wide Paddle, Ball Control, Extra Lives, Power Duration, Score Boost, Combo Master). All sound is synthesized live with the Web Audio API (oscillators with frequency sweeps), so there are no audio files to load.
No. The ball is swept along its whole path each frame and intersected with every brick, so a hit is found wherever the path crosses one, however fast it is moving. A per-frame test of the ball's centre, which is what the previous version did, misses a brick entirely at many speeds because no frame happens to land inside it.
Yes. Both the movement and the collision detection scale with the elapsed time, so the same two seconds of play destroys the same bricks in the same order and leaves the ball in the same position at 30, 60 and 144 frames per second.
Where the ball hits the paddle affects its bounce angle, hitting the edge sends it at a sharper angle.
Power-ups can widen your paddle, add extra balls, slow the ball down, or grant extra lives.
Yes. Each level introduces new brick arrangements and faster ball speeds.
The game runs entirely in your browser. No account is needed and no gameplay data is collected.