Log inGet started
← Explore
World media

Graybox FPS — v0.1

A playable greybox first-person shooter prototype: one player, one assault rifle with 30-round magazines and a reload animation, a greybox training arena, and five targets with hit zones and headshots. Movement, sprint, crouch, jump, ADS, recoil, fall damage and a HUD with crosshair, health and ammunition.

0score
Updated Sep 23, 20261 launch
fpsshooterprototypefirst-persongreyboxweapontraining-rangehud

Graybox FPS — v0.1 prototype

The smallest playable foundation of a first-person shooter: one player, one assault rifle, one training arena, five targets. No multiplayer, no AI, no progression — this is the layer everything else gets built on.

Open the world and press Play.

Controls

MoveW A S D
LookMouse (the world takes the cursor while it runs)
FireLeft mouse — hold for automatic
Aim down sightsRight mouse
JumpSpace
SprintShift
CrouchCtrl
ReloadR

Every control also carries a gamepad and touch binding, so the scheme works on a pad and on a phone with nothing to configure.

What is in it

An assault rifle. 30-round magazine, 120 in reserve. Automatic at 10 rounds a second, 18 damage a hit — 45 to the head, 13.5 to a limb. Spread opens as you fire and tightens as you settle, and narrows to almost nothing down the sights. The gun kicks up and sideways on each shot and springs back; the sights drop the field of view from 72° to 45°, the recoil steadies, and the turn rate slows the way a scope coming up should. Reloading takes 2.2 seconds and is animated: the gun dips and rolls out of the sight line, the magazine drops free, a fresh one seats, and the count follows exactly.

A training arena. 64 × 64 m of greybox — a spawn room, a waist-high threshold you shoot over, two side corridors, a central open area with pillars and low cover, a firing range, and a raised deck with a ramp up it and a rail along the open edge. It exists to be shot in and moved through, not looked at.

Five targets. Each has a post, a body and a head, each its own collider, so a shot knows exactly what it struck. A hit flashes the target white and rocks it back — further for a headshot. Three headshots or six body shots knock one down, and it stands back up with full health six seconds later so the range never runs out.

A player. 100 health, and falling hurts: land faster than 8 m/s and the excess comes off at 14 damage a metre per second, up to lethal. Jumping is always safe; the deck is not. Die and you respawn at the spawn point after three seconds.

A HUD. Health and a bar bottom-left, weapon name and magazine / reserve bottom-right, a crosshair whose gap opens with the weapon's cone, and a hit marker that is white for a body hit, orange for a head, and amber and wider for a kill. Aiming down sights shows a reload card and a progress bar in the middle of the screen where your eye already is.

Sound. A synthesised rifle report with per-shot pitch variation, and a magazine reload, each a one-shot so they overlap freely.

How it is put together

Five systems, deliberately separable — none of them reaches into another's state.

AssetOwns
game.PlayerMovement, jump, crouch, health, fall damage, respawn
game.FpsCameraWhere the eye is and what it is looking at
game.WeaponFiring, ammunition, reloading, recoil, the gun in hand
game.HudThe readout on the glass
game.ShootingTargetA target's health, hit zones and feedback

and the pure modules under them: game.config (every tuning number in one place), game.arena_layout (the arena as data, one row per wall), game.ballistics (spread, recoil and damage maths), game.viewmodel (the rifle, built from primitives), game.hud_ui (the widget tree), game.rot (rotations as values) and game.runtime (shared player-rig questions).

The camera, the weapon and the HUD each read the player's numbers from the component that owns them rather than keeping a copy, so nothing can drift out of agreement. Retuning the whole game is an edit to game.config; changing the arena is an edit to one table in game.arena_layout.

Both the player body and its camera go through the scene's PlayerPrototype, which is the only shape that works when a second person opens the world.

What is deliberately not here yet

v0.1 is scoped to a foundation, and the honest edges are:

  • No other shooters. Targets do not move or shoot back.
  • Target state is per-peer. The scene builds the five targets on every peer and each peer tracks their health locally, so two players shooting at once would not see each other's damage. Shared target authority — sending a hit to the peer that owns an entity — is the next thing a shooter needs and is not in this version.
  • No weapon switching, grenades, damage numbers, hit decals or blood.
  • The gun is built from boxes. It is meant to read clearly at a glance, not to look like a modelled asset.

Comments · 0

Open discussion, no rating attached. Ask questions, swap notes, follow threads.

Sign in to join the discussion.