👻 Psst Use code SPOOKY2026 at checkout for 30% off on the Lambda Store up until
A Rush map is one BSP holding a set of small, sealed rooms. Each match plays a route of seven of them, one room per round, with three players a side.
Every room has a tower. The team that owns it when the clock runs out wins the round: 40 seconds in most rooms, 60 in a castle. A round win moves play one room towards the enemy's castle. Taking the enemy castle wins the match outright; otherwise the first team to 8 round wins takes it.
Only the room being played is used. Players spawn there, the other rooms sit empty, and nobody ever walks from one room to another.
At kick-off CT owns the start room, so T attacks first. The in-game route panel uses the same layout, with the CT castle on the left.
Rush handles the match itself: it picks the route, shows only the active tower, colours it for the owning team, and runs the HUD, sounds, timer and bots. You supply:
ru_{name}. Rush only offers maps whose names start with ru, in the gamemode's map list and in the end-of-match map vote. Keep the name lowercase: room screenshots are looked up by it.lambda_rush.fgd adds the two tower entities. It is installed by the Lambda Content Authoring Tools, which copy it into Hammer++ and set it up automatically.ru_world as your reference. Its source VMF is not available, but the compiled map shows a complete set of rooms, spawns, towers and buy zones. It is older than the current release, so trust this guide where the two differ. The map is downloaded when you play Rush.Give every room a three-digit ID; its hundreds digit sets the room's role. A map needs at least seven rooms: 101, 301, 401 and four middle rooms. Extra rooms of any role go into that role's pool, and each match draws from the pools at random, so more rooms means more variety.
| Role | Room IDs | You need | Used per match | Round clock | Who defends |
|---|---|---|---|---|---|
| Start | 100–199 | 101; more optional | 1 | 40 s | CT on the first round, then either team |
| Middle | 200–299 | at least 4 | 4, all different | 40 s | Either team |
| CT castle | 300–399 | 301; more optional | 1 | 60 s | Always CT |
| T castle | 400–499 | 401; more optional | 1 | 60 s | Always T |
ru_world has 14 rooms: four start rooms (101–104), eight middle rooms (201–208) and one castle per team.
The team that owns the tower defends it, and the round rules shape the layout:
Each room needs the same five things: walls that seal it off, three spawns per team, one tower, a buy zone per team and a radar volume. Everything is found by entity name, so the names below must be exact; {ID} is the room's ID, such as 203.
Players must not be able to walk, fall or see from one room into another. A gap lets players leave the room, and lets bots plan routes into rooms nobody is playing. Rooms that can see each other also cost rendering for nothing, since only one is ever in use.
| Team | Entity | Names |
|---|---|---|
| Counter-Terrorists | info_player_counterterrorist |
ct1room.{ID}, ct2room.{ID}, ct3room.{ID} |
| Terrorists | info_player_terrorist |
t1room.{ID}, t2room.{ID}, t3room.{ID} |
Place exactly one tower per room, named ant.base.{ID}. There are two models:
cs_rush_antenna_short for enclosed rooms with low ceilingscs_rush_antenna_tall for open spacesPut its origin on the floor. Players capture it by looking at it and pressing Use from within 80 units, with nothing solid between their eyes and the tower, so keep props, glass and clip brushes out of the way. The tower is solid while its room is active. It is hidden and non-solid in every other room, and it cannot be damaged. Rush colours it for the owning team and adds its glow, plus a team-coloured halo during freeze time.
Add one func_buyzone per team per room, covering that team's spawns, with TeamNum set to Terrorist or Counter-Terrorist. Players can only buy inside a buy zone.
Radars are required for Rush. Wrap each room in a lambda_minimap_volume brush entity, and set its Minimap Name field to the room's ID, for example 101.
Generate the radars with Cartographer, in the Lambda Content Authoring Tools. It takes your VMF file and supports lambda_minimap_volume: it generates a separate radar for each room, plus one radar that contains all of them.
The whole map resets at the start of every round, so doors, breakables and map-placed weapons come back each time. Map-placed weapons are allowed. Bots open prop_door_rotating doors by themselves, so prefer those on the routes bots take.
Bots fill empty slots in most matches, and without a navigation mesh they cannot move. Ship maps/ru_{name}.nav with the BSP.
The recommended way to generate it is the out-of-game navigation mesh generator in the Lambda Content Authoring Tools, which produces better results than the in-game commands. Open the Hammer app in the Content Authoring Tools and go to the Map Tools tab.
To edit the mesh afterwards, use Place Forge in the Content Authoring Tools, which lets you edit navigation meshes in a modern editor.
You can still generate it in game with native Source tooling: use sv_cheats 1 and nav_generate. If a room is missed, stand in it, run nav_mark_walkable, then nav_generate_incremental. Check the result with nav_edit 1 before you save.
Rush relies on the mesh in four places:
nav_disconnect.Ladders count: nav ladders join the floors they connect into the same room. Regenerate the mesh after any change to the room layout.
Rush only plays the rooms you define. Define them in Lambda vScript, which ships inside the BSP and is initialised by a lambda_point_script entity in the map.
Write a JavaScript file that calls Rush.DefineRoom once per room, at the top level of the script rather than inside a callback, so the rooms exist before the match starts:
import { Instance, Rush } from "lambda_script/point_script";
if (Instance.IsAvailable("Rush")) {
Rush.DefineRoom(101, { name: "Rail Yard" });
Rush.DefineRoom(201, { name: "Loading Dock" });
Rush.DefineRoom(202, { name: "Signal Box" });
Rush.DefineRoom(203, { name: "Water Tower" });
Rush.DefineRoom(204, { name: "Freight Office" });
Rush.DefineRoom(301, { name: "Depot", label: "CT Castle - Depot" });
Rush.DefineRoom(401, { name: "Bridge", label: "T Castle - Bridge" });
}
The IsAvailable check keeps the script harmless if the map is loaded in another gamemode. Pack the file into the BSP under scripts/vscripts/, for example scripts/vscripts/rush/ru_example.js, without compression: the script loader cannot read compressed or encrypted files. Then add a lambda_point_script entity with its scriptfile keyvalue set to the path after scripts/vscripts/, here rush/ru_example.js.
ru_world prefixes castle labels with "CT Castle -" or "T Castle -".Rooms can change while the map loads and during warmup; after that they are fixed for the match. DefineRoom returns false when it refuses a room: an ID outside 100–499, an empty name or label, or a change after warmup. The script runs again every round, so repeating the same definitions is harmless.
Every room you define must exist in the map with its spawns and tower; one missing room stops the whole map from starting. Rooms built in the map but left undefined are ignored, which keeps an unfinished room out of rotation until it is ready.
During freeze time, Rush shows the match route as a row of cards, one per room. A card shows your screenshot of the room, or a tower icon and the room ID when there is none. The room's label is printed under every card.
materials/lambda/rush/rooms/{map name}/{room ID}.jpg, shipped with the map, for example materials/lambda/rush/rooms/ru_example/203.jpg. Use the lowercase map name and one file per room ID in your room definitions.You can embed these screenshots in your BSP using Assembly
For now, the Lambda Team reviews and tests every submission and sends you feedback. You cannot test your own map in Rush yet, so check your map against this guide and the submission checklist before you send it.
A few CS2 Rush features are not in this version yet. Design around them for now:
env_fog_controller and the same skybox, so pick settings that suit all of your rooms.Send the BSP, its .nav file, its radars and any screenshots to the Lambda Workshop once every box is ticked:
ru_{name}, in lowercase.ant.base.{ID} and a buy zone per team.maps/ru_{name}.nav is saved, with each room its own nav island.materials/lambda/rush/rooms/ru_{name}/{ID}.jpg.