Setup mod on steam

From Valve Developer Community
Revision as of 19:05, 13 December 2015 by Thomasross (talk | contribs) (Symlink mod directory: Add instructions for OS X and Linux)
Jump to: navigation, search

Mod files

In order to launch your mod then the necessary files need to be created in your steamapps folder. The source 2013 sdk provides some base files for you in the game/ directory. This folder contains all the necessary assets, binaries and scripts for your mod, the most important being gameinfo.txt, bin/client.dll and bin/server.dll.

  • Singleplayer: Copy the directory from <your mod>/sp/game/mod_hl2 (or mod_episodic) to <steam_path>/steamapps/sourcemods/<your mod>
  • Multiplayer: Copy the directory from <your mod>/mp/game/mod_hl2mp to <steam_path>/steamapps/sourcemods/<your mod>

Restart steam after this step and you will find your mod listed in your steam library. Every time you rebuild your binaries you will need to make sure to copy them to your mod directory under sourcemods/ before you launch your mod.

Symlink mod directory

It would get tedious to copy over the mod directory everytime we build our binaries so instead we can symlink our mod_ folder so that it is always up to date. First, delete the folder we created in the previous step under sourcemods/ (if you have no other mods installed, this directory should be empty now).

  • Open up your terminal (Windows: cmd.exe, OS X: Applications/Utilities/Terminal, Linux: xterm or terminal)
  • Change directory to <steam_path>/sourcemods/
  • Create a symlink to your mod directory
    • Windows: mklink /J <mod_name> <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic>
    • Linux/OS X: ln -s <mod_name> <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic>

Now every time you update assets or rebuild your code in your game/mod_ directory the changes will automatically be there the next time you launch your mod.

Change output directory

You can change the output directory of your binaries to something other than mod_hl2, mod_episodic or mod_hl2mp by right clicking Project -> Properties -> Build events -> Post build events and changing the paths as desired. This must be done for both Client and Server.


if not exist "..\..\..\game\MY_MOD\bin\." mkdir "..\..\..\game\MY_MOD\bin\."
copy "$(TargetDir)$(TargetFileName)" "..\..\..\game\MY_MOD\bin\.\$(TargetFileName)"
if ERRORLEVEL 1 goto BuildEventFailed
if exist "$(TargetDir)$(TargetName).map" copy "$(TargetDir)$(TargetName).map" ..\..\..\game\MY_MOD\bin\.\$(TargetName).map
copy "$(TargetDir)$(TargetName).pdb" ..\..\..\game\MY_MOD\bin\.\$(TargetName).pdb
if ERRORLEVEL 1 goto BuildEventFailed
goto BuildEventOK
echo *** ERROR! PostBuildStep FAILED for $(ProjectName)! EXE or DLL is probably running. ***
del /q "$(TargetDir)$(TargetFileName)"
exit 1

Problems whith running your mod

If, at startup, after video, game is crashes (STEAM IS ON). But, if STEAM IF OFF, the mod runs without problems, then you need:

1 - to Open file steam_api.h (src\public\steam)

2. - Find this and DELETE or COMMENT (about line 550):

	m_pSteamMusicRemote = SteamClient()->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION );
	if ( !m_pSteamMusicRemote )
		return false;
	m_pSteamHTMLSurface = SteamClient()->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION );
	if ( !m_pSteamHTMLSurface )
		return false;

--Slam12f (talk) 02:26, 21 October 2015 (UTC)