Skip to main content

Overview

BSPSource supports decompiling maps from a wide variety of Source engine games. The tool uses Steam Application IDs to identify games and apply game-specific decompilation logic.

Automatic Detection

BSPSource automatically detects the source game by analyzing:
  • BSP file version
  • Entity class names in the map
  • Map file name patterns
In most cases, you don’t need to manually specify the game. However, if auto-detection fails, use the --appid flag (CLI) or set the App ID in the GUI.

Supported Games

Valve Games

Half-Life 2

App ID: 220BSP Version: 17-20File Pattern: d1_*, d2_*, d3_*The original Half-Life 2 campaign maps.

Half-Life 2: Episode One

App ID: 380BSP Version: 20Episode One campaign maps.

Half-Life 2: Episode Two

App ID: 420BSP Version: 20Episode Two campaign maps.

Half-Life 2: Deathmatch

App ID: 320BSP Version: 19Multiplayer deathmatch maps for Half-Life 2.

Half-Life: Source

App ID: 280BSP Version: 19The original Half-Life remade in Source engine.

Portal

App ID: 400BSP Version: 19File Pattern: testchmb_*Original Portal test chamber maps.

Portal 2

App ID: 620BSP Version: 21File Pattern: sp_a1_* through sp_a5_*, mp_coop_*Portal 2 single-player and co-op maps. Includes Perpetual Testing Initiative (PTI) support.

Team Fortress 2

App ID: 440BSP Version: 20File Pattern: cp_*, pl_*, koth_*, ctf_*, arena_*, mvm_*, etc.Team Fortress 2 maps across all game modes (Control Points, Payload, King of the Hill, Capture the Flag, Mann vs Machine, etc.).

Counter-Strike: Source

App ID: 240BSP Version: 19-20File Pattern: de_*, cs_*Classic CS:S bomb defusal and hostage rescue maps.

Counter-Strike: Global Offensive

App ID: 730BSP Version: 20-21File Pattern: de_*, cs_*, ar_*CS:GO competitive, casual, and Arms Race maps.

Day of Defeat: Source

App ID: 300BSP Version: 19File Pattern: dod_*World War II themed multiplayer maps.

Left 4 Dead

App ID: 500BSP Version: 20File Pattern: l4d_*, c1m* through c5m*Left 4 Dead co-op campaign and versus maps.

Left 4 Dead 2

App ID: 550BSP Version: 20-21File Pattern: c1m* through c14m*Left 4 Dead 2 campaigns including DLC and community maps.

Alien Swarm

App ID: 630BSP Version: 21Top-down co-op shooter maps.

Dota 2

App ID: 570BSP Version: 20-27Dota 2 game maps. Note: Dota 2 uses a heavily modified Source engine.

Third-Party Games

Black Mesa

App ID: 362890BSP Version: 20-21Fan-made remake of Half-Life in Source engine.

Garry's Mod

App ID: 4000BSP Version: VariesSandbox game supporting maps from multiple Source games.

Insurgency

App ID: 222880BSP Version: 20-21Tactical shooter maps.

No More Room in Hell

App ID: 224260BSP Version: 20Survival horror co-op maps.

Contagion

App ID: 238430BSP Version: 20Zombie survival maps.

Blade Symphony

App ID: 225600BSP Version: 20Sword fighting duel maps.

Synergy

App ID: 17520BSP Version: 20Co-op mod for Half-Life 2.

Zombie Panic! Source

App ID: 17500BSP Version: 19-20Zombies vs survivors multiplayer maps.

Dear Esther

App ID: 203810BSP Version: 20Story-driven exploration game.

Zeno Clash

App ID: 22200BSP Version: 19First-person brawler maps.

Tactical Intervention

App ID: 51100BSP Version: 20Counter-terrorism tactical shooter.

The Ship

App ID: 2400BSP Version: 17-19Murder mystery multiplayer game.

Bloody Good Time

App ID: 2450BSP Version: 19Spiritual successor to The Ship.

Dark Messiah of Might and Magic

App ID: 2100BSP Version: 18-19Action RPG with Source engine.

Vampire: The Masquerade - Bloodlines

App ID: 2600BSP Version: 17RPG using early Source engine.

SiN Episodes: Emergence

App ID: 1300BSP Version: 19First-person shooter episode.

Postal III

App ID: 10220BSP Version: 20Controversial action game.

Vindictus (Mabinogi Heroes)

App ID: 212160BSP Version: 20Action MMORPG using Source engine.

Titanfall

App ID: 1454890BSP Version: Heavily modifiedMultiplayer FPS with mechs. Uses heavily modified Source engine.
Titanfall support is experimental due to extensive engine modifications.

Experimental / Community Engines

Strata Source

App ID: -1000 (Custom)Community-maintained fork of Source engine with modern features.
Uses a custom negative app ID since it’s not an official Steam game.

Cyber Diver

App ID: -500 (Custom)Custom Source engine project.
Uses a custom negative app ID.

Listing App IDs

CLI

List all supported games and their app IDs:
bspsrc --appids
Output:
      ID  Name
     220  Half-Life 2
     240  Counter-Strike: Source
     280  Half-Life: Source
     300  Day of Defeat: Source
     320  Half-Life 2: Deathmatch
     380  Half-Life 2: Episode One
     400  Portal
     420  Half-Life 2: Episode Two
     440  Team Fortress 2
     500  Left 4 Dead
     550  Left 4 Dead 2
     570  Dota 2
     620  Portal 2
     ...

GUI

In the GUI, go to Other Options tab and click List App IDs.

Programmatically

import info.ata4.bspsrc.lib.app.SourceAppDB;

var appDB = SourceAppDB.getInstance();
var apps = appDB.getAppList();

apps.forEach((appId, name) -> 
    System.out.println(appId + ": " + name)
);

Using App IDs

When to Set App ID Manually

Manually specify the app ID when:
  1. Auto-detection fails - The map doesn’t have clear game identifiers
  2. Custom maps - Community maps that don’t follow naming conventions
  3. Modified BSP files - BSP files edited with custom tools
  4. Cross-game maps - Maps designed for multiple games

How to Set App ID

Use the --appid flag:
bspsrc --appid 440 custom_map.bsp
Force Team Fortress 2 decompilation:
bspsrc --appid 440 cp_custom.bsp

BSP Version Compatibility

BSPSource supports BSP versions from Source engine games:
BSP VersionGamesNotes
17Half-Life 2 (early), Vampire: BloodlinesEarly Source engine
18Dark MessiahTransitional version
19HL2, CS:S, HL:S, DoD:S, PortalMost common older version
20HL2:EP1, HL2:EP2, TF2, L4D, CS:GOStandard Source 2007+
21Portal 2, Alien Swarm, L4D2Source 2009+
22-27Dota 2Heavily modified Source
BSP versions outside the standard range (17-21) may have limited support or require special handling.

Game-Specific Features

Team Fortress 2

TF2 maps are detected by prefixes:
  • cp_* - Control Points
  • pl_* - Payload
  • plr_* - Payload Race
  • koth_* - King of the Hill
  • ctf_* - Capture the Flag
  • arena_* - Arena
  • mvm_* - Mann vs Machine
  • tc_* - Territory Control
  • sd_* - Special Delivery

Portal 2

Portal 2 maps use specific naming:
  • sp_a1_* through sp_a5_* - Single-player chapters
  • mp_coop_* - Co-op maps
Portal 2 also includes extensive custom entities for puzzle mechanics.

Left 4 Dead / L4D2

Campaign maps are organized by chapters:
  • c1m1_*, c1m2_*, etc. - Campaign 1, Map 1, 2…
  • Up to c14m* in L4D2 (including DLC)

Counter-Strike Series

CS maps follow conventions:
  • de_* - Bomb Defusal (Demolition)
  • cs_* - Hostage Rescue
  • ar_* - Arms Race (CS:GO)

Unsupported Games

The following Source engine games are not currently supported:
  • Source 2 games (Dota 2 Reborn, Half-Life: Alyx, Counter-Strike 2) - Different engine
  • Apex Legends - Heavily modified Source, proprietary format
  • Respawn games (Titanfall 2 is partially supported)
  • Non-Source games - BSPSource only works with Source engine BSP files
If you need support for an unlisted Source engine game, please open an issue with sample BSP files.

Game Detection Examples

Example 1: Auto-Detection Success

bspsrc cp_dustbowl.bsp
BSPSource detects:
  • File pattern: cp_* (Control Point)
  • BSP version: 20
  • Entities: TF2-specific entities
  • Result: Correctly identifies as Team Fortress 2 (app ID 440)

Example 2: Auto-Detection Failure

bspsrc custom_amazing_map.bsp
BSPSource cannot detect game from:
  • Non-standard file name
  • Generic entities only
  • Result: Falls back to UNKNOWN (app ID 0)
Solution: Manually specify app ID:
bspsrc --appid 440 custom_amazing_map.bsp

Example 3: Cross-Game Map

Some maps work in multiple games (e.g., HL2 and Garry’s Mod):
bspsrc generic_building.bsp
BSPSource may detect the wrong game. Override:
bspsrc --appid 4000 generic_building.bsp  # Force Garry's Mod

See Also

Build docs developers (and LLMs) love