Skip to content

Arcade › Asteroids

Asteroids

  • 3d
  • arcade
  • space
  • asteroids
  • shooter
  • low-poly
0
Remix it Discord

0 plays

How to play

Click the game above and it runs right here in your browser. No download, no installer, no account needed. Oleg Sidorkin built it with Cinevva, so it works on a phone or a tablet too.

Discussion

Nobody has said anything about Asteroids yet. Play it, then tell Oleg Sidorkin what you would add next.

Make your own game

Asteroids was built by Oleg Sidorkin with the Cinevva game creator: describe the game you want in chat, watch it get built, and play it in your browser minutes later.

Remix Asteroids opens the real game in the creator and forks its actual files, chat and design doc, so you start from the code rather than from a description.

Read the build brief for Asteroids

Cinevva's analyzer read this game's design doc and its source, then wrote the brief below. "Make your own" hands it to the game creator as your opening message, so you start from a real spec rather than a one-line idea.

Create a browser-playable 3D arcade game titled "Asteroids" using Three.js. The game takes place in a dark, nearly black-blue outer-space arena with a large starfield made from hundreds of small pale lavender/white square-like points. Use a single broad, bounded rectangular playfield about 28 by 28 world units, but make it wrap continuously: ships, asteroids, and bullets that pass one edge reappear at the opposite edge. Use a third-person perspective camera rather than a flat 2D view: the camera follows behind and above the player, with an approximately 68-degree perspective lens, around 6.5 units above and 11 units behind the ship, rotating that offset with the ship's heading and looking slightly above the ship. Add subtle dark fog and soft ambient/directional lighting so the 3D geometry is visible but the overall scene stays very dark and space-like.

The player controls a small stylized blue spacecraft centered initially at the origin on the horizontal X/Z plane. Build it procedurally if no model is available: a dark/medium blue faceted cone-like fuselage pointing forward along the ship's local +Z direction, broad dark-blue rectangular wings behind it, small side fins, a glowing pale turquoise-green faceted cockpit near the front/top, and a dark engine housing with a bright orange-red glowing exhaust cone at the rear. The craft should visibly rotate left and right and thrust forward with inertia. Controls: ArrowLeft or A rotates left, ArrowRight or D rotates right, ArrowUp or W applies forward thrust in the direction the nose faces, and Space fires. Rotation speed is about 3.2 radians per second; forward acceleration is about 9.5 units/sec²; apply light damping each frame (velocity multiplied by roughly 0.975) so the ship coasts but gradually slows. The ship's yaw heading determines both its movement direction and shot direction.

Start with five irregular, dark gray low-poly asteroids distributed randomly in the arena, never within roughly 6.5 units of the origin. Make them visibly faceted and rock-like, preferably as distorted low-subdivision icosahedrons with flat shading and different random distortions, sizes from about 1.1 to 2.7 units, and random rotation. Each asteroid drifts independently with random X/Z velocity in approximately the -2.25 to +2.25 range and tumbles on all three axes. They also wrap around the arena edges. If available, a low-poly detailed meteor model can be used, but retain the dark gray faceted visual language shown by the procedural fallback.

When Space is pressed, fire a small glowing yellow-white spherical energy projectile from the ship. Limit firing to one shot about every 180 milliseconds. Give it a speed of about 15 units/sec along the ship's forward direction, keep it on the X/Z plane with a slight Y elevation, wrap it at the arena edges, and remove it after about one second if it has not hit anything. Make the projectile pulse or shimmer in warm yellow using a simple animated material.

Implement projectile-versus-asteroid collision using horizontal X/Z distance. A hit removes the projectile and asteroid, and awards score equal to floor(asteroid size * 12). Large asteroids (size greater than 1.0, which includes the initial rocks) split into exactly two smaller asteroids at the destroyed rock's position. Each child has size 0.58 times the parent size and receives a random velocity in about the -3.25 to +3.25 range plus 40 percent of the parent's velocity. Continue splitting while the resulting asteroid is larger than 1.0, so the small fragments do not split further. Asteroids should be removed from the scene as soon as destroyed. When the asteroid list becomes empty, spawn a new wave of 4 plus floor(score/80) asteroids, using the same random size, placement, velocity, and wrapping rules.

Also implement ship-versus-asteroid collision based on X/Z distance. Use a collision threshold roughly asteroid size * 0.85 + 1.1. On collision, remove the ship from the scene, wait about 850 milliseconds, then respawn it at the origin with zero velocity and reset heading, provided lives remain. The HUD starts at SCORE: 00000 and LIVES: 3; decrement lives when the collision respawn begins, so the first collision displays 2. If a collision occurs when no lives remain, set game over and stop gameplay updates. Include an R key restart that clears all asteroids and bullets, resets score to zero, lives to three, game-over state to false, respawns the ship at the origin, and starts a fresh wave of five asteroids. A game-over overlay is not required by the visible implementation, but gameplay should stop when gameOver is true.

Place a fixed HUD in the upper-left corner over the canvas, with bright green monospace text around 18px: first line "SCORE: 00000" with the score zero-padded to five digits, and below it "LIVES: 3". Keep the HUD noninteractive and unobstructive. Render full-window responsively, preserve the dark background, and maintain the polished low-poly 3D arcade presentation: almost-black space, sparse pale stars, very dark charcoal polygonal asteroids, navy-blue ship surfaces, cyan-green cockpit, orange-red engine glow, and small pulsing yellow shots. Use antialiasing, perspective lighting, and flat shading to emphasize the faceted geometry.

More free browser games

Browse the whole Arcade →