Arcade › 2d raycasting shooter
hello this is a test expect and have fun :)
Click the game above and it runs right here in your browser. No download, no installer, no account needed. Birk Stensbjerg Nielsen built it with Cinevva, so it works on a phone or a tablet too.
Nobody has said anything about 2d raycasting shooter yet. Play it, then tell Birk Stensbjerg Nielsen what you would add next.
2d raycasting shooter was built by Birk Stensbjerg Nielsen 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 2d raycasting shooter 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.
Recreate a low-resolution, pixelated first-person 2D raycasting shooter called “2d raycasting shooter.” It should feel like a very simple classic Doom-style raycaster rendered to a fixed 320x200 canvas, scaled up 3x with nearest-neighbor pixel art, surrounded by a black page background. The player stands inside a top-down 16x16 tile maze, but sees it from a first-person perspective using one ray per horizontal pixel across a 60-degree field of view. Use a brown brick-like wall palette: dark brown ceiling, charcoal-gray floor, and raycast wall columns in reddish/dark brown with alternating vertical brick shading and horizontal dark mortar lines. Lighting should make side-facing walls darker and distant walls dimmer. The maze is a fixed 16x16 grid with a solid outer border and internal rectangular wall sections/corridors. The player starts at world position (2.5, 2.5), facing approximately 0.8 radians, and has collision radius checks so they cannot walk through walls or clip corners. Movement is smooth and slow: W/Up moves forward, S/Down backward, A/Left strafes left, and D/Right strafes right relative to the view. Clicking the game canvas requests mouse pointer lock; while locked, horizontal mouse movement rotates the view. Left mouse click or Space fires, with a 220ms firing cooldown. Show a tiny blocky gun centered at the bottom of the view: a dark vertical barrel/body with a lighter gray top, and briefly show a yellow/orange muzzle flash above it when a shot successfully hits. Place seven simple vertical enemy sprites in the maze at approximately (2.5,2.5), (5.5,4.5), (10.5,3.5), (4.5,9.5), (11.5,10.5), (8.5,13.5), and (13.5,7.5). Enemies are rendered as flat rectangular red sprites projected into the first-person view, with a darker red head strip; use bright red/orange coloring when weakened. Each enemy has 2 health and the centered firing cone is forgiving (roughly 0.22 radians), targets the closest visible-in-view enemy within 0.4–9 world units; each successful hit removes one health, and killing one awards 100 score. Do not add complex animations or weapons. Living enemies slowly chase the player when between 0.8 and 6 units away, respecting wall collision, and attack at close range below 1.3 units every 900ms for 12 damage. Health begins at 100; display it as bright green monospace “HEALTH: <value>” at the upper-left of the canvas. Reproduce the simple arcade behavior where health can reach zero without adding an unimplemented death screen. Display a bright green, pixelated minimap HUD in the lower-right corner, with a green border and black background. It should show the complete maze walls in green, the player as a green dot and a short facing-direction line, and living enemies as tiny red squares. Also include a fixed HTML score HUD reading “SCORE: 0” (updating as kills occur) and a muted gray monospace instruction line centered along the bottom: “CLICK TO START • WASD MOVE + MOUSE LOOK • CLICK / SPACE TO SHOOT”. Keep the HUD visually minimal and retro, matching the screenshot’s neon green-on-black style. The objective is to kill enemies until the score reaches 800. At that threshold, mark an exit at world position (14.5, 2.5), show “EXIT OPEN” in yellow near the upper-left, and add a green door/exit sprite when it is within the player’s view. The exit also appears as a green marker on the minimap. The player wins by moving within 0.9 units of that exit; then overlay most of the screen with translucent black and show centered green monospace text “EXIT REACHED” and “YOU WIN!”, plus “Press R to restart.” Pressing R at any time resets enemies, score, health, and win state. If all enemies are killed before reaching 800, respawn the enemy set after a short delay, allowing the player to continue earning score. Keep the game strictly to the mechanics, map, colors, HUD, and simple geometric sprites described here—no additional levels, inventory, sound, or invented features. The author blurb associated with the game is: “hello this is a test expect and have fun :)”.