◆Plaster// Multiplayer
Deep dives

Multiplayer

// server/ · src/net/ · src/menu/ · added 2026-10-16

Real online matches: two game modes (Team Elimination and Search & Destroy), 4v4 public matchmaking with a map rotation, private lobbies up to 8v8 with invite codes, bots in every empty slot, and one authoritative game server that decides every hit.

01Getting into a match

The main menu: the Play panel with Public Match, Private Match and Practice, and your player standing on the field.Menu
Main menu › PlayPublic Match, Private Match, and Practice (the offline game vs bots). Works with mouse, keyboard and controller. See the Main menu page.
A private lobby with code, invite link, map and team-size settings, and both teams with players, bots and open slots.Lobby
Private lobbyRoom code and invite link, game mode, map, players per team and bot fill. The host moves players, adds or removes bots and starts the match for everyone. Your team lines up on the field beside you.
Public matchPick a mode, then Find Match: you only meet players who picked the same mode. Public matches rotate through the maps (Speedball, Woodland, then any others): each new public lobby, and each rematch in one, plays the next map. Matchmaking finds a public lobby that's forming (or a running match with a bot to take over), else opens a new one. Players go to the team with fewer humans; the match starts after a short wait, or at once when 8 players are in, and bots fill every empty slot so it's always 4v4. Players joining later take over a bot. After the match the same players go back to the same lobby with a new countdown (matchmaking can still fill it); Leave to go.
Private matchThe host creates a lobby and shares the 5-character code or the invite link (/?join=CODE). Only the host can change the game mode, map, players per team (1v1 to 8v8; above 4 a team's open slots share one row so the lobby fits), bots, teams, or start. Private lobbies never show up in matchmaking. After a match everyone returns to the same lobby.
Joining"Connecting to the match…" shows until the server sends the match, then you're straight into play (no pause screen). At the end only the scoreboard shows, then everyone returns to the lobby.
LeavingPause and choose Leave match (L or Ⓨ). A bot takes your place so the teams stay even.
Dropped connectionYour place is held: 15 s in a lobby, 25 s in a match. Reload or reconnect within that and you're straight back in; after that a bot takes over.

02In the match

An online match: score bar with team scores and clock, kill feed, teammates with name tags.Online
Online matchTeam scores and clock at the top, kill feed on the right, name tags over teammates. Hold Tab (or Back/View) for the scoreboard.
End of match scoreboard: result, team scores and every player's eliminations and outs.End
End of matchResult and scoreboard, then everyone goes back to the same lobby to play again together, public or private. Leave (or Esc) to go.
RulesTeam Elimination: same Plaster rules as single player, one hit and you're out, respawn after 2.5 s with 2 s of spawn protection. First team to 30 eliminations wins, or the leader after 5 minutes. No friendly fire. Search & Destroy has its own rules (below).
BotsThe same bot AI as single player (cover, sight, reaction time, arced shots), running on the server and fighting for either team against humans and other bots.
MarkersEach player plays with the marker picked in Loadout. The server looks it up by id in its own markers.json (made in POE) and runs that player's fire rate, magazine, reserve, reloads and ball flight with it. Everyone else sees that marker's look (colours, texture or imported model) in the player's hands. Bots use the stock marker.
PausingPausing frees your mouse but the match carries on, as it would for everyone else.

03Search & Destroy

Start of a Search and Destroy round: the round bar under the score shows Round 1, first to 4, and the Attack role; site letters A and B show through a bunker.Round
Round startThe bar under the score shows the round, your role and goal, and how many players each team has left. The A and B site letters show through cover.
Planting the bomb inside the ring of site A, with a progress bar.Plant
PlantingInside a site's ring, hold F (Ⓨ) for 3 s. You can't move or fire while planting; letting go or being hit starts it over.
The paint bomb going off at site A: a burst of paint over the site, its letter turned red.Blast
DetonationOnce planted, the site's letter turns red and the bomb beeps faster as its 30 s run down. When it goes off it showers the site in paint; anyone within 7 m is out.
Out for the round and watching teammate Viper from just behind him; on the left, teammate Dozer carries the bomb with a BOMB tag over him; the round bar reads Escort the bomb carrier to A or B.Spectate
Carrier and spectatingAttackers see a BOMB tag through cover over the loose bomb or whoever carries it. Out for the round, you watch a living teammate from just behind them; Space (Ⓐ) switches to the next one.
RoundsOne life per round, no respawns. A 5 s countdown starts each round with everyone back at their spawn, fresh paint and full magazines. First team to 4 rounds wins; attack and defence swap after round 3.
The bombEach round it lies on the ground just out of the attackers' spawn. An attacker picks it up by running over it, and only the carrier can plant. When the carrier is out it drops where they were, for any attacker to pick up; defenders can't touch it until it's planted.
Attackers winwhen the bomb goes off, or every defender is out.
Defenders winby defusing the bomb (hold F next to it for 5 s), by eliminating every attacker before a plant, or when the 90 s round clock runs out with no plant. Once the bomb is down, eliminating the attackers isn't enough: it still has to be defused.
Bomb sitesPlaced in the map editor (Gameplay › Bomb site: A or B, radius), near the end defenders hold. Maps without any get two automatically, between the middle of the field and the defenders' spawn. Team colours and spawns never change; at halftime the sites mirror to the other end of the field.
BotsThe attacker nearest a loose bomb fetches it; the carrier pushes the round's site, shooting as they go, and plants when they get there while the rest escort, then they guard the bomb. Defenders hold both sites; once the bomb is down the nearest one goes to defuse it.
FeedbackRound banners (round, halftime, bomb planted, round won / lost and why), the Hold F prompt and progress bar, bomb beeps, armed / defused / blast sounds, the air horn at each round's end, "Bomb dropped" and "You have the bomb" banners, and once you're out, the view from behind a living teammate ("You're out — watching …").

04How it works

One authoritative server

The server owns paintballs, hits, eliminations, respawns, scores, the clock and every bot. Clients can't decide their own hits.

Checked input

Movement faster than a sprint or into a bunker is pulled back. Shots are refused if you're out, firing faster than the marker allows, empty or reloading, the muzzle isn't at you, or you aren't looking that way.

Shared code

The server runs the game's own collision, ballistics, hitboxes, rules and bot AI (src/sim/, src/bots.js), built headless from the map file. So game and server agree on what's solid and what's a hit.

Smooth on screen

Your own movement and shots respond instantly. Everyone else is drawn about 100 ms behind and interpolated between server updates (30 a second).

05Running it

Developmentnpm run dev starts the game and the multiplayer server together on one port. Others on your network join at http://<your-ip>:5173/.
Productionnpm run build, then npm run server serves the build and the game server on one port (8080 by default).
DetailsSettings (wait times, score and time limits, Search & Destroy round and bomb times), file layout and the message protocol are in server/README.md.

06Next

Lag compensation

Hits are judged against where the server last saw each player. Rewinding to what the shooter saw would make long-range shots fairer on slow connections.

Planned

Search & Destroy, next steps

Built 2026-10-17. Since then: one attacker carries the bomb, and you spectate teammates while you're out (run R-6). Ideas for later: an overtime rule for draws.

Next

Bigger public matches

Private lobbies go up to 8v8 (2026-10-17). Measured at 8v8 on Woodland: the server uses about 0.4 ms of each 33 ms tick and sends each player about 19 KB/s; 16 figures on screen cost about 1,100 draw calls. Public matches stay 4v4 (PLASTER_PUBLIC_TEAM) until 8v8 is playtested.

Next

Hosting online

Runs on any Node host that supports WebSockets. Accounts, regions and server browsing aren't built yet.

Planned