Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STREETLINE

A local-first, open-source multiplayer shooter for Windows and modern desktop browsers. The 3D city, textures and game objects are generated procedurally in the browser; no external services are needed at runtime.

Quick start

  1. Double-click Release/Streetline-0.5.0/Streetline.exe. It starts the host and opens your browser automatically.
  2. Enter a name and click Start game. The host page automatically gets admin rights.
  3. Share the LAN address shown in the terminal or on the menu page with players on the same network. They open that address in their browser.
  4. Allow Windows Firewall access for private networks if it prompts.

The host listens on port 37841 and binds to every local network interface. The terminal window must stay open for the session. Press Ctrl+C to shut it down.

Controls

Key Action
WASD Move
Mouse Aim
Left click Fire
Right click hold Aim down sights
Shift Sprint
Ctrl Crouch
Space Jump
R Reload
I Inspect weapon
1–6 / Wheel Switch weapon
E Open / close doors on enterable buildings
Enter Open / send chat
Tab Scoreboard
Esc Free mouse / pause

Host controls

From the pause menu open Host controls. From there you can switch between Free-for-All and Teams, and set or remove a lobby password to make it private. In team mode new players are assigned to Alpha and Bravo in turn; friendly fire is disabled. The host can instantly kick players, ban them by their connecting IP, heal, respawn, mute or freeze them. Bans are stored in data/bans.json next to the exe and persist across restarts. If several players share the same IP, banning it affects all of them.

Build from source

Requires Node.js 24 or newer. Run npm ci, npm run build, npm start. Use npm run release to rebuild the Windows distribution. The source is also included inside the source folder of the distribution. License: MIT.

Technical scope and limitations

The map is a procedurally generated city with roads, narrow alleys, buildings, windows, cars, two parks and plenty of cover. Three houses have working doors, interiors and walkable stairs. Facades, asphalt and grass use locally stored textures. Lighting and shadows are rendered in the browser. Player characters have walk and sprint animations and carry the selected weapon visibly. Rifles, pistol and knife have their own models; the marksman rifle is currently a scoped variant of the M4. Weapon inspection with I, shell casing ejection, bullet impact marks on buildings, hit sounds, text chat and a five-second respawn are all in.

The host authoritatively controls ammo, fire rate, hits, team rules, kills, respawns and bans. Movement is clamped by elapsed time and swept against collisions. Client-reported hits or damage values are ignored. Aim-assist running on a player's own machine cannot be reliably prevented in an open LAN game without additional anti-cheat. This project is a playable open-source prototype; matchmaking and persistent stats are not implemented yet.

Designed for home network use. There is no user account system and no TLS; do not port-forward this to the public internet. The host key is only present in the local browser URL that opens automatically. Do not share that URL — the menu page shows the public LAN address without the key.

3D weapon models

The M4A1 comes from nisu, the AKM and pistol from loafbrr_1, the knife from Aharabada, and the SWAT character from Quaternius. All CC0. The M4 DMR and marksman rifle are variants of the M4A1. The four city textures were generated for this project.

Reload sounds are by SpringySpringo and shot sounds by Tabasco. Also CC0.

About

Local-first browser FPS. Node.js server + Three.js WebGL client, procedural city, LAN multiplayer, single-exe host.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages