Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

blueblack

blueblack is a playable browser-based prototype for a competitive territory-control FPS. The current build includes a LAN playtest mode: players join a shared lobby, choose an original operator, and deploy together into the compact Nexus-9 sci-fi control arena. A five-minute match ends when the timer expires or the player reaches 300 points.

Run locally

Requires a recent Node.js release and npm.

npm install
npm run dev

Open the local URL printed by Vite. To verify a production build:

npm run build
npm run preview

Host a LAN match

Connect every computer to the same router, then run:

npm install
npm run host

The terminal prints a Network or Share with your squad address such as http://192.168.1.176:5173. Open that exact address on the other computers. The first player connected becomes host; everyone can set a callsign and select an operator, and the host starts the match for the full lobby.

Allow Node.js through the macOS or Windows firewall if another computer cannot connect. The host process uses TCP ports 5173 for the game and 8787 for the LAN WebSocket relay.

Controls

Input Action
Deploy button Start the match
Click the game canvas Lock the pointer / return to mouse look
Mouse Aim
W A S D Move
Shift Sprint
Ctrl Crouch
Space Jump
Left mouse button Fire the automatic rifle
R Reload
1 Equip rifle
2 Equip pistol
3 Equip knife
M Switch between Team Alpha and Team Bravo during a LAN match
Esc Release the pointer

Walk into the illuminated central capture ring to secure Sector A. Once captured, remaining inside is not required: the sector generates score until the match ends. Targets respawn a few seconds after elimination.

What is implemented

  • Babylon.js sci-fi facility rendering, shared PBR materials, lighting, camera, collisions, and hitscan shooting
  • First-person movement with sprinting, jumping, smooth crouching, and stand-up clearance
  • Authored GLB rifle, pistol, and blade with independent ammo, damage, cadence, range, recoil, reload, and melee behavior
  • Compact 52 × 44 metre arena built from scratch with west/east spawn rooms, a central capture chamber, direct mid route, paired ground flanks, raised catwalks, ramps, and predictable low-cost colliders
  • Quaternius Modular Sci-Fi MegaKit environment with instanced floors, walls, windows, doors, columns, consoles, vents, lights, crates, and barrels
  • Three original operator concepts with roles, passives, tacticals, and deployment selection
  • LAN roster with editable callsigns, independent operator selection, balanced teams, live team switching, and host migration
  • Interpolated remote player movement, aim, crouch, operator colors/nameplates, weapon slots, muzzle flashes, and tracers
  • Quaternius animated remote mannequins with synchronized idle, crouch, jog, sprint, jump, and weapon-action states
  • Visible synchronized rifle, pistol, and knife models on remote players
  • Territory capture, score accumulation, match timer, and win state
  • Responsive deployment and in-match HUD
  • Rapier initialization with a fixed 60 Hz physics world, ready for future dynamic props
  • Vite development/build workflow and TypeScript strict checking

Project structure

src/
├── main.ts                 Browser entry point
├── game/Game.ts            Engine, physics, gameplay, and HUD lifecycle
├── gameplay/
│   ├── gameplaySession.ts  Local match state and orchestration
│   ├── firstPersonController.ts
│   ├── rifle.ts
│   ├── legends.ts
│   ├── territory.ts
│   ├── arena.ts
│   └── types.ts
├── multiplayer/            Remote avatars and gameplay synchronization
├── network/lanClient.ts    LAN lobby/gameplay WebSocket client
├── ui/hud.ts               Renderer-independent DOM HUD API
└── styles.css              Canvas and HUD presentation
server/
└── lan-server.mjs          LAN roster, host-start, state, and fire relay

Asset licenses

All third-party game assets currently bundled with the prototype are CC0 and may be used in personal and commercial projects:

  • Quaternius Modular Sci Fi Guns: AR-1 rifle and Pistol-3 first-person weapon models
  • Quaternius Universal Animation Library Standard: rigged mannequin and 43 embedded animation clips
  • Quaternius Modular Sci-Fi MegaKit Standard: modular Nexus-9 environment geometry and texture atlases
  • Kenney Retro Textures Fantasy: legacy environment textures retained in the asset library
  • Kenney Blaster Kit 2.1: legacy crate and weapon assets retained in the asset library
  • Kenney Mini Arena 1.1: blade GLB
  • Kenney City Kit Industrial 1.0: legacy environment assets retained in the asset library

Exact license notices are stored in public/assets/licenses/.

Current network scope

LAN clients currently share the lobby, teams, match start, remote movement/stance/operator state, weapon choice, firing visuals, player damage, eliminations, and automatic respawning. The LAN server owns team assignment, player health, weapon damage, friendly-fire rejection, bounded movement-history rewind for ranged hits, and synchronized three-second redeployment. Territory scoring and match results still run locally in each browser. There are no accounts, internet matchmaking, inventory persistence, progression, leaderboard, or production anti-cheat systems yet.

The next networking milestone is server-owned capture/score state plus latency compensation. Accounts, ranked matchmaking, and persistence should follow only after that authoritative match loop feels reliable.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages