Appearance
Arcade › Space Dogfight
Click the game above and it runs right here in your browser. No download, no installer, no account needed. Mario Kreeft built it with Cinevva, so it works on a phone or a tablet too.
Nobody has said anything about Space Dogfight yet. Play it, then tell Mario Kreeft what you would add next.
Space Dogfight was built by Mario Kreeft 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 Space Dogfight 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.
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-based 3D arcade space dogfight called “Space Dogfight” using Three.js. Render a dark navy/near-black outer-space scene (clear color #000011) filled with roughly 2,500 small white/gray star points distributed in a large spherical field around the play area. Use a third-person perspective camera with a 75-degree field of view that follows directly behind and slightly above the player ship: the camera is about (0, 2.8, 11) in the ship’s local orientation and looks toward a point six units ahead of the ship. The player is a stylized low-poly spaceship loaded from the Quaternius “Spaceship_FernandoTheFlamingo.glb” asset, scaled to about 0.55, positioned near the center of the space, and visibly occupies the lower-middle of the screen. Light the models with a white directional light, blue-toned hemisphere light, and dim blue ambient light. Enable antialiasing and responsive resizing. Core gameplay is free-flight dogfighting in open 3D space. The ship has position, inertia, rotation, and velocity rather than instant movement. Lock the mouse when the player clicks the canvas; while pointer lock is active, mouse movement controls look direction: horizontal movement changes yaw and vertical movement changes pitch, with pitch clamped to approximately +/-1.35 radians. Use YXZ rotation order. Keyboard controls: W thrusts forward, S thrusts backward at 60% reverse strength, A and D strafe left/right and also visually bank the ship, C and X move vertically up/down and produce a subtle pitch tilt, Q/E continuously roll left/right, and Left Shift provides an additional forward boost. Apply acceleration with forward thrust about 28 and strafe/up strength about 16, drag around 0.98, and clamp total speed to 65 so movement feels floaty and inertial. Smoothly interpolate the visual bank (up to about 0.7 radians) and pitch tilt, and let roll decay when Q/E are released. The player fires simple glowing mint-green projectiles with SPACE. Fire at most once every 180 ms from a point about 5.5 units ahead of the ship, traveling in the ship’s forward direction at speed 95 plus 60% of the ship’s current velocity, with a small backward recoil. Represent shots as thin 1.2-unit cylinders with a basic #88ffcc material, oriented along their velocity, and remove them after 2.2 seconds. There is no crosshair or ammo counter. Populate the arena initially with 12 independently moving asteroids using clones of Kenney’s “rock.glb” asset, scaled about 4.5. Place each randomly in a roughly 180 x 60 x 180 volume, keeping it at least 30 units from the ship. Give asteroids random velocity (approximately +/-8 horizontally and +/-3 vertically), slow random rotation, and an asteroid collision radius of 2.5. If an asteroid travels beyond radius 220 from the origin, wrap/relocate it by multiplying its position by -0.6. Maintain the asteroid field during play: when fewer than 8 remain, occasionally spawn another asteroid. Also start with 3 hostile incoming missiles using clones of Kenney’s “rocket_baseA.glb” asset, scaled about 1.8. Spawn each 90–130 units away from the ship at a random horizontal angle and random vertical offset, then send it toward the player at speed 18. Missiles gently home toward the current player position by interpolating their velocity toward a 22-unit-per-second target direction, rotate to face travel direction, and wrap if farther than 240 units. Every 4.2 seconds, spawn another missile while fewer than 5 missiles exist. Use a missile collision radius of 1.8. Collision and scoring rules: a projectile hitting an asteroid destroys both, creates an orange/yellow burst of about 8 small spherical particles, and adds 10 points. A projectile hitting a missile destroys both, creates a red/orange burst of about 10 particles, and adds 25 points. Particles fly outward at roughly 8–22 units per second, fade, and expire after about 0.6–1.1 seconds. Ship-to-asteroid collision occurs when distance is below the ship radius 4.5 plus asteroid radius 2.5: create a small orange explosion, subtract 22 health, and bounce the asteroid away by adding an 18-unit impulse. Ship-to-missile collision occurs when distance is below 4.5 plus 1.8: create a larger red explosion, remove the missile, and subtract 32 health. Start health at 100. Do not remove asteroids on ship impact; allow the bounce behavior. End the game when health reaches zero. Build a minimal fixed HUD over the canvas. At the top-left show bold white “SCORE: 0” (updating with score). At the top-right show “HEALTH: 100” and directly below it a 120-by-12 pixel health bar with a dark gray background and white border; fill it green while health is above 40 and yellow at 40 or below, shrinking with health. Near the bottom center show the semi-transparent instruction line: “Click to lock mouse | W/A/S/D thrust & strafe | C/X up/down | SPACE shoot | R restart | Tilts on movement”. Keep the visual presentation sparse and clean, with white sans-serif text and subtle black text shadows, matching the screenshot’s starfield and centered rear-view ship. When health reaches zero, stop gameplay updates, release pointer lock, and display a centered overlay reading “GAME OVER”, a “Final Score: [score]” line, and a dark restart button with white text and a green border. Pressing R while game over, or clicking the RESTART button, resets score to 0, health to 100, ship position to the origin, velocity and rotations to zero/default, clears asteroids, missiles, projectiles, and particles, then respawns 12 asteroids and 3 missiles. Keep the game running in an animation loop with a capped delta time around 0.033 seconds and render the Three.js scene every frame.