Skip to content

Practice Servers ​

A practice server is your own CS2 server on any map, with infinite utility, for walking in the lineups from the Utility Library. Everything in game is driven from a radial menu, a HUD and a handful of keys, so nothing has to be typed. Every throw you make with a lineup loaded is scored against it, and five landed in a row masters it.

Practice servers always run the SwiftlyS2 practice plugin, whatever plugin runtime the node uses for matches. See The practice plugin.

Starting a server ​

Start one from the practice bar at the foot of a map's card on the Utility page, or from Practice server under More ways to play on the Play page (pick a Map, then Start practice).

  • Region: Any region (under Recommended) takes a free practice server if one is standing, and otherwise starts a fresh one in your closest region. Practice Servers lists standing practice servers by name, with how many are free. Picking a region under On Demand always starts a fresh server there, with your latency to each region beside it.
  • Load an execute: optionally loads one of the map's executes into the session as it starts.
  • Session Access: who can join.
AccessWho can join
OpenAnyone with the invite link
FriendsYour friends and the players you invite (the default)
InviteOnly the players you invite
PrivateNobody else

Start Server books it. While it boots the bar reads Starting; once it is up, Join Server connects you, and the connect string can be copied beside it. If the server stops, is reaped, or fails to boot, the panel drops back to Start Server and says why.

On a phone the Utility page is browse-only: the practice bar and every action that sends something to a server are hidden there.

While it is running ​

The bar stays at the foot of the card on every tab, and the top bar shows the session wherever you are in the panel. Press the bar to pull up the session:

  • Session Access can be changed by the host without restarting.
  • Invite players puts players on the server's roster by name; they get a notification and can connect straight away. An invite link is offered for Open and Friends only, because Invite and Private decide on a list a link has no say in.
  • Server console gives moderators and administrators RCON on the server.
  • Stop Server (the host) or Leave Session (everyone else).

A running practice server does not count as being in a match: you can still join a lobby, a draft or the matchmaking queue, and your friends list does not show you as In match.

Sending lineups from the website ​

Once you are on a practice server, the bar acts on whatever is open above it:

Open in the cardBar actionWhat it does
A lineupLoad me inStands you on the throw — same spot, same stance, same aim — with a ghost showing the flight
A lineupRepeat in gameDrills it, three throws at a time
A collectionPracticeDrills the collection's lineups on this map, three throws each
An executePracticeLoads the execute into the session
The planPractice nextLoads the next lineup in your plan
A Discover throwTest in gameStands you on a throw Discover found, before you save it

Nothing is saved by loading a throw. Load in game and Repeat in game are also on a lineup's right-click menu in the list.

Changing map ​

The map lives with the session, not the page. Open a lineup for another map and the button reads Switch map & load me in: the server changes level and you land on the throw once it loads. On a map the server is not on, the bar says Your practice server is on {map}. and offers the host Switch to {map}. Only the host (or an administrator) may change the map; everyone else is told to ask the host. Everyone on the server gets a five-second warning before the level changes.

The map can also be changed from inside the game: Practice → Change Map.

Saving from the website ​

Save From Practice, in the open session, keeps the throw you have been making as a lineup of your own, against the lineup you are drilling. Save Throw on the in-game menu does the same with the throw in front of you.

In game ​

On a server with the HUD addon, the welcome message says it all: TAB opens the menu, E snaps onto the nearest lineup, R rethrows, DEL clears smoke and fire.

Keys ​

The plugin reacts to what a key is bound to, not the key itself, and the on-screen legend draws whatever key you actually have bound.

Key (default bind)Does
TAB (scoreboard), tapOpens the menu. Held, it is the scoreboard. With a panel open, it closes it
E (use)Snaps you onto the spot you are looking at, or the nearest one, and hands you its grenade. On a spot with several throws, steps to the next one
R (reload), tapRethrows the loaded lineup, or your last throw, without moving you. With throws stacked, throws the whole stack
R, holdZooms in while held
R, own grenade in flightFollows the grenade to where it lands; press again to come back
Ctrl twicePlaces a bot where you stand
Shift twiceToggles noclip
F (inspect) twiceHides or shows the aim ring
DeleteClears smoke and fire. Twice removes the bots
Ping keyClears the utility in the world

The menu ​

Tap TAB for a wheel of eight wedges. Some wedges open another wheel, and most carry one or two quick actions on an outer ring. The centre goes back a wheel, or closes the menu on the first one.

WedgeDoesOuter ring
RethrowThrows it again (Rethrow All when throws are stacked)Add To Stack, Last Only
Clear UtilityClears smoke and fireClear Bots, Markers
Last ThrowTakes you back to your last throwEarlier, Landing
Save ThrowSaves the last throw as a private lineupEdit, Delete
LineupsOpens the lineup pickerNext, Prev
FiltersOpens the filtersReset
PracticeOpens drills, executes, bots and the mapExecute, Unmastered
SettingsOpens the settingsSpawns, No Damage
  • Filters: Type (All, Smoke, Flash, Molotov, HE), Side (Both, T Side, CT Side), Whose (Everyone's, Mine, My Team's, Public), Reset Filters, Next Lineup and Previous. Filters apply to the world markers as well as the picker.
  • Practice: Repeat Lineup, Drill Unmastered (with Skip This One), Execute, Smoke Outline, Change Map, Place A Bot, Remove Bots, and Spawn Points (with Prev Spawn and Next Spawn).
  • Execute: Rethrow All, Add To Stack, Timing (together or as thrown), I Throw, Remove Last, Empty Stack, Run Execute / Stop Execute, and Load Execute.
  • Settings: No Damage, World Markers, Aim Marker, Throw Colours, Compass (with Utility Out and Flash Card), Key Legend (with Sounds), Private Previews, and Reload Library.

Save Throw never asks for a name: it names the throw from the map's callouts ("Window Smoke from T Spawn"), or after the utility if the map has none there. A smoke that is still spreading is held until it settles, so the save can carry its recorded smoke. Delete asks first, on a page of its own.

Edit opens a panel for the loaded lineup: NAME, WRITE-UP and VISIBILITY (PRIVATE, TEAM, PUBLIC), with SAVE and REVERT. Clicking the name offers the name the map suggests; a name or write-up of your own is typed in chat. Making a lineup public sends it for review.

The lineup picker ​

Lineups (or .menu) opens a radar of the map with up to 40 landing spots and a list of 16 lineups at a time, nearest first. Click a spot for the throws that land there; a spot with a single throw loads it straight away. Chips narrow it by SIDE, WHOSE and TYPE, and FROM HERE keeps only what you can throw from where you stand.

The HUD ​

  • The throw card appears while a lineup is in focus: its type and name, the stance and the keys it needs lit up, which mouse buttons, any run-up ("Hold Shift + W 1.2s first"), and two locks, FEET and AIM, that read On spot and Lined up. With both locked the card goes green. A Mastery meter shows your run of landed throws against the five that master it, and your last five throws as hits and misses.
  • The compass across the top shows nearby spots and how many are off to either side, under a line saying which filters are on.
  • The key legend says what each key does right now.
  • Recent utility lists every grenade in the air or still burning, with its air time, time left, and how the throw scored.
  • The flash card shows, for a flash, how long each player it caught was blind and how long fully white, and whether they were facing it. A molotov shows who took fire damage. Placed bots stand in as targets.
  • The left card shows the drill in progress, the stack, or a summary when a drill ends.
  • The execute timeline counts down and lists each step and who throws it while an execute runs.
  • Toasts say what just happened.

In the world ​

Every player sees only their own markers. A glowing grenade model floats over each spot that passes your filters. Close to a spot, a ring marks each place to stand, with a dot where your crosshair lands looking straight down and an arrow for the throw in focus. On the spot, an aim ring sits on the wall exactly where the lineup's crosshair goes, and it turns green when you are lined up. The landing is marked in the utility's colour. Spawn points are drawn as white squares on the floor; they are on by default.

Each throw takes the next colour off your cycle, smoke cloud included, so you can tell your clouds apart. Green and red are never used: they belong to the aim ring.

The server ​

  • Buying is off, buy zones are removed, and you are handed the whole grenade loadout. A thrown grenade is put back in your hand.
  • No Damage is on by default. Flashes do not blind you; the flash card reports what they would have done.
  • Bots join the other team where you stand, frozen, up to five, and adding one does not restart the round.
  • The round clock is held at an hour. When it runs out the map reloads, with a countdown on screen from a minute out.
  • Practice servers never hibernate.

Executes and the plan ​

  • The stack is how one person practises an execute that takes four: Add To Stack the throws, mark one with I Throw, and R throws the rest from their recorded seeds, together or as thrown, while you make yours.
  • Load Execute lists your own and your team's executes for the map, built on the website, and turns the one you pick into the stack on its timings.
  • Run Execute runs the execute loaded onto the session from the website, for everyone on the server. After a countdown, each step stands the player assigned to it on its lineup at its time (an unassigned step goes to everyone), and the timeline shows who throws what.
  • Drill Unmastered walks every lineup you have not mastered on the map, worst first, three throws each. Your saved progress comes with you, so a lineup mastered in an earlier session shows as mastered before you throw it.

Chat commands ​

Every action is on the menu, but the commands are still there, and .help lists them. A handful have no menu entry:

CommandDoes
.save <name>Saves your last throw under a name you type
.load <query>Stands you on a lineup matching the search
.list / .back <n>Your library / a throw further back
.pos save <name> / .pos <name>Saved positions
.spawn <n>Teleports to a spawn point by number
.drill [count] [worst]Drills your book, a given number of lineups
.solve [name]Finds a throw onto the spot you are looking at
.hudSwaps the panels back to centre text for you

Chat commands start with . or !. In the console they are prefixed sw_.

Scoring, streaks and mastery ​

Every throw made with a lineup loaded is scored against that lineup's landing point. The game server reports; the panel decides, recomputing the distance from the lineup it owns rather than trusting the server's arithmetic. Grenades the plugin throws for you (rethrows, the stack) are never scored.

  • A throw is a hit when it lands inside the success radius — 96 source units by default, against a smoke roughly 144 units across, so the default asks the utility to land well inside the smoke rather than merely clip it.
  • Five hits in a row masters the lineup. Your record, hit rate, current streak and best streak are kept per lineup, and shown on the lineup's page and on the throw card in game.
  • Plan, on the Utility page, ranks what you haven't mastered by how many players throw it on that map: Never thrown, Popular, Unmastered, or Slipping — one you had mastered whose streak has since broken.
  • Miss patterns aggregate where other people's throws land, reported as short, long, left, right, high, low, scattered, or no pattern. Below the sample floor it says so rather than inventing a tendency from a handful of attempts. A public lineup's miss pattern can be read signed out.

The HUD addon ​

The menu, the picker and the panels are Panorama, so the files have to reach the player's game rather than the server's. CS2 has no server-to-client file transfer, so they go through the Steam Workshop: the server image names the addon's Workshop item, and AddonsManager tells each connecting client which item it needs.

Players do not subscribe to anything. Steam delivers it on a player's first join — one download and one reconnect, then never again. The addon is published with each release of the SwiftlyS2 game-server image, so a plugin never asks for a layout players cannot download.

Practice servers only. A one-time download is a fair price for somebody who came to drill; it is not something to ask ten people for before a knife round. On a server without the addon the throw guidance falls back to centre text and chat, and .hud does the same for one player, but the menu, the picker and the edit panel need it.

The practice plugin ​

  • Practice servers boot the SwiftlyS2 game-server image with the practice plugin in place of the match plugin, whatever runtime the node uses for matches. A plugin version pinned for CounterStrikeSharp is ignored for practice. The CounterStrikeSharp image refuses to boot a practice server.
  • If SwiftlyS2 does not yet support the node's CS2 build, starting a practice server says so instead of queueing you.
  • A practice server's game-server job is named u-<match id> (match servers are m-<match id>), and so are the servers that film lineup previews and run Discover. The practice match's page reads its server logs from that job.
  • A dedicated server can be set up as a Practice Server: it hosts practice sessions, runs the practice plugin, and is never used for matchmaking. It is listed by name in the Region picker.

Administration ​

Settings → Application → Utility → Practice Servers:

SettingWhat it controls
Practice ServersMaster switch for practice sessions and every Practice button
Connect grace (minutes)How long a booked server waits for its host to actually join before it is handed back
Maximum session (minutes)Only enforced while somebody is queuing; with nobody waiting, a session runs as long as its host wants
Idle timeout (minutes)How long an empty practice server sits before shutting itself down
Queue entry lifetime (minutes)How long a player who was turned away still counts as waiting. Default 30
Reserved on-demand slotsServer slots practice may never take, so a drill cannot take the last slot from a scheduled match. Lineup preview renders and Discover respect it too
Success radius (units)How close a throw must land to score as a hit. Default 96