SourceCoop
Black Mesa cooperative plugin for SourceMod
Install / Use
/learn @ampreeT/SourceCoopREADME
SourceCoop is a cooperative mod for Source Engine games that enables single-player campaigns to be played together. It currently supports <a href="https://store.steampowered.com/app/362890/Black_Mesa/"><img src="images/icon-bms-small.png" height="16px"> Black Mesa</a> and <a href="https://store.steampowered.com/app/320/HalfLife_2_Deathmatch/"><img src="images/icon-hl2dm-small.png" height="16px"> Half-Life 2: Deathmatch</a>.
- Supports campaigns.
- Restores single-player functionality.
- Handles player and equipment persistence between maps.
- Easy to use optional addons.
- Easy for mappers to convert new and existing maps from single-player into cooperative.
| Table of Contents | |:--:| | 🖥️ Setup Guide - 🌎 Campaign Support - ⚙️ Configuration - 🌱 Contributing - 📸 Credits | | 📡 Server Running Tips - 🔗 Public Servers | | 📝 Developing - 🗃️ EDT Map Script Format - 📘 Authoring Maps |
<a id="setup-guide"></a>
🖥️ Setup Guide
If you are someone who is looking to play on a server, then you are already set up and ready to play! Cooperative servers can be found in the server browser just like any other server.
🌐 Player Downloads
Upon joining a server, players will be able to automatically download most necessary files. For custom workshop maps in Black Mesa, players will have to manually subscribe to the Steam Workshop item before starting their game. An official Steam Workshop collection containing all supported SourceCoop maps can be found here.
If you are a server operator who is looking to host your own cooperative server, then follow any installation method below and forward the server ports:
🔨 Server Installation Methods
<details> <summary><b>Option 1: Installation by SourceCoop Launcher</b></summary> <br>The SourceCoop Launcher provides an automated way to set up your cooperative server. It simplifies the installation process by handling the necessary files and configurations.
- Download the latest release of the SCLauncher.
- Run the executable to proceed with the automated server setup.
- Once the launcher completes its process, ensure you have forwarded the server ports to allow players to join.
The script installation will automatically go through the process of installing the server files and plugins that are required for running a cooperative server.
🐧Linux Distributions
The Linux installation script has been tested with the following distributions:
- Ubuntu
- Debian
If the installation script does not support the Linux distribution that you are using, then feel free to modify the script and create a pull request!
-
Download the corresponding installation script for your system.
- <img src="images/icon-bms-small.png" height="16px"> Black Mesa
-
Run the following commands in a terminal to start the installation:
📂 New Directories
On script execution, the following directories will be created within the terminal's current directory:
- Black Mesa Dedicated Server
- SteamCMD
- Steam
Windows PowerShell Terminal
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process; ./srccoop-bms-windows-install.ps1Linux Bash Terminal
chmod +x "./srccoop-bms-linux-install.sh"; ./srccoop-bms-linux-install.sh -
After the installation process is complete, the server can be started by running the following commands. Make sure that the server ports are forwarded so players to be able to join the server!
Windows PowerShell Terminal
cd "Black Mesa Dedicated Server"; ./srcds_coop.batLinux Bash Terminal
cd "Black Mesa Dedicated Server"; ./srcds_coop.sh
- Install a Source Engine Dedicated Server using <a href="https://developer.valvesoftware.com/wiki/SteamCMD"><img src="images/icon-steam-small.png" height="16px"> SteamCMD</a>.
- <a href="https://steamdb.info/app/346680/"><img src="images/icon-bms-small.png" height="16px"> Black Mesa Dedicated Server</a> (AppID ➤ 346680)
- <a href="https://steamdb.info/app/232370/"><img src="images/icon-hl2dm-small.png" height="16px"> Half-Life 2: Deathmatch Dedicated Server</a> (AppID ➤ 232370)
SteamCMD Terminal (Black Mesa)
login "anonymous" app_update 346680 quitSteamCMD Terminal (Half-Life 2: Deathmatch)
login "anonymous" app_update 232370 quit - Install Metamod:Source (latest tested build ➤ 1155) onto the server.
- Install SourceMod (latest tested build ➤ 7163) onto the server.
- Install the latest SourceCoop release onto the server.
- Forward the server ports.
A step-by-step guide for Black Mesa is also available on <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2200247356"><img src="images/icon-steam-small.png" height="16px"> Steam</a>.
<a id="port-forwarding"></a>
🛜 Port Forwarding
In order for players to able to join the server, you will need to only forward the default game transmission TCP/UDP port 27015. All other ports are optional.
Server Inbound Rules
| Port | Forward Type | Description |
|-------|--------------|-----------------------------------------------------------------------------|
| 27015 | TCP/UDP | Game transmission, pings and RCON - Can be changed using -port on startup |
| 27020 | UDP | SourceTV transmission - Can be changed using +tv_port on startup |
| 27005 | UDP | Client Port - Can be changed using -clientport on startup |
| 26900 | UDP | Steam Port, outgoing - Can be changed using -sport on startup |
<a id="campaign-support"></a>
🌎 Campaign Support
<h3><img src="images/icon-bms-small.png" height="20px"> Black Mesa</h3>Visit our <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2375865650">Steam Workshop Collection</a> to check out all available custom maps supported by SourceCoop!
SourceCoop allows single-player map configurations without decompiling and redistributing; learn more about creating your own on the EDT Map Script Format.
If you have already created native cooperative support for your map by including a EDT file, please make a pull request onto the README.md with your Steam Workshop item link so we can showcase it off!
<a id="configuration"></a>
⚙️ Configuration
<details> <summary><b>Commands</b></summary> <br>All players that are connected to the server are able to execute the following commands:
sm_coopmenu: Displays the coop menusizeup: Displays the coop menusm_thirdperson: Type!thirdpersonto go into thirdperson modesm_firstperson: Type!firstpersonto exit thirdperson modestuck: Unstuck commandunstuck: Unstuck commandsm_skipintro: Starts a skip intro votesm_restartmap: Starts a restart map votesm_changemap: Shows a menu for changing mapssm_survival: Starts a survival vote
The server console and admins configured within SourceMod are able to execute the following commands:
sc_save: Exports last saved player equipment state to a filesc_load: Imports saved data from file and attempts to equip each playersc_clear: Clear persisted equipment and equip players with the map defaultssourcecoop_dump: Command for dumping map entities to a filesc_dump: Command for dumping map entities to a filesc_mkconfigs: Creates default edt configs for all maps in the maps directory which are missing onesc_revive: Force respawn playersc_reload_maps: Reloads all entries in the votemap menu from storage
The server console and admins configured within SourceMod are able to execute the following ConVars:
sourcecoop_version: The version of the SourceCoop mod.
