Play it live: https://www.lab1702.com/fpnetrek/
Netrek from the cockpit: classic Netrek rules on the classic flat 100000×100000 galaxy, but
instead of a 2D tactical view you look out of your ship at 3D planets and ships floating in
space. Planets are huge up close, shrink to a dot as you fly away, and vanish past ~25k units.
Press m for the galactic map.
A radar minimap in the top-right corner shows planets and ships within 20k units, north-up.
Planet names/positions, ship stats, and combat formulas are taken verbatim from the Vanilla
netrek server source (quozl/netrek-server).
go run .
or with Docker:
docker compose up -d
then open http://localhost:9701 (WebGL required). Up to 128 players, 32 per team.
Runs standalone or behind a path-stripping reverse proxy — the client resolves its WebSocket relative to the page URL. Caddy example:
example.com {
redir /netrekfp /netrekfp/ 301
handle_path /netrekfp/* {
reverse_proxy localhost:9701
}
}
WebSocket connections are same-origin only (Caddy preserves the Host header, so the above
just works). If your proxy rewrites Host, set NETREKFP_ORIGINS to a comma-separated list
of allowed origins (e.g. https://example.com), or * to disable the check.
Bots: the join screen has bot controls — +F/+R/+K/+O add a bot to a team, − removes one,
BALANCE tops up the two most-populated teams to 4v4 (T-mode-ready in one click), CLEAR removes
all bots. Bot AI is modeled on lab1702/netrek-web: threat
assessment, torpedo dodging, lead-aimed torps and spreads, target scoring, planet defense, and a
full T-mode planet game (bomb, pick up, take). Bots count toward T-mode player counts.
Standard Bronco netrek at 10 Hz: SC/DD/CA/BB/AS/SB/GA ship classes, phasers with range falloff, max 8 torps with proximity fuses, shields, weapon/engine overheat, repair mode, fuel/repair/agri planets, orbit-bomb-beam army play, planet capture (enemy → independent → yours), cloak, det.
T-mode starts when ≥2 teams each have ≥4 players and runs 30 minutes, or until fewer than 2 teams have 4+. Genocide ends the round early: take a populated team's last planet and its remaining ships are destroyed, the win is announced, and the galaxy resets (T-mode restarts if enough players remain). Either way, stats are discarded when a round ends. No database, nothing persists.
UI chrome (join screen, HUD, panels) follows the lab1702 design system
(web/lab1702.css — terminal-phosphor tokens, l7-* components); the netrek
team colors and all in-game rendering are historical and deliberately outside the system.
| Input | Action |
|---|---|
| right-click | set course toward pointer |
left-click / t |
fire torpedo toward pointer |
middle-click / f |
fire phaser toward pointer |
p |
player list: 4 team columns, sorted by kills |
| Enter / shift+Enter | team chat / all chat (Esc cancels) |
0–9, = |
warp speed (= is max) |
s |
shields |
o |
orbit (warp ≤ 2, near planet) |
l / left-click on map |
lock nearest planet: autopilot handles speed and course, orbits on arrival; any manual speed/course cancels |
b |
bomb (orbiting enemy planet) |
z / x |
beam armies up / down |
c |
cloak |
d |
det enemy torps |
R |
repair mode |
m |
galactic map |
\ |
bot management panel |
Q |
self destruct (10 s fuse; any other action cancels) |
| Esc | quit ship (or close bot panel) |
You need kills to carry armies (2 per kill, 3 per kill in an Assault ship).
