Setup mod on Steam: Difference between revisions
m (Change whith to with) |
No edit summary |
||
Line 1: | Line 1: | ||
{{cleanup|Article could be improved to include instructions for mac/linux}} | {{cleanup|Article could be improved to include instructions for mac/linux}} | ||
=Mod files= | |||
= Mod files = | In order to launch your mod, the necessary files need to be created in your steamapps folder. [[Source SDK 2013]] 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''. | ||
In order to launch your mod | |||
* Singleplayer: Copy the directory from ''<your mod>/sp/game/mod_hl2'' (or ''mod_episodic'') to ''<steam_path>/steamapps/sourcemods/<your mod>'' | * 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>'' | * Multiplayer: Copy the directory from ''<your mod>/mp/game/mod_hl2mp'' to ''<steam_path>/steamapps/sourcemods/<your mod>'' | ||
Restart | 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 = | =Symlink mod directory= | ||
It would get tedious to copy over the mod directory | It would get tedious to copy over the mod directory every time 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) | * Open up your terminal (Windows: cmd.exe, OS X: Applications/Utilities/Terminal, Linux: xterm or terminal) | ||
* | * Navigate to directory ''<steam_path>/sourcemods/'' | ||
* Create a symlink to your mod directory | * Create a symlink to your mod directory | ||
** Windows: ''mklink /J <mod_name> <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic>'' | ** Windows: ''mklink /J <mod_name> <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic>'' | ||
** Linux: ''mkdir <mod_name> && sudo mount --bind <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic> <mod_name>'' | ** Linux: ''mkdir <mod_name> && sudo mount --bind <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic> <mod_name>'' | ||
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. | 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 = | =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. | 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. | ||
Line 40: | Line 39: | ||
</source> | </source> | ||
=Problems with running your mod= | |||
= Problems with running your mod = | |||
If, at startup, '''after the intro video, your mod crashes while Steam is active''', but it runs '''without problem if Steam is shut down''', then you follow these instructions: | If, at startup, '''after the intro video, your mod crashes while Steam is active''', but it runs '''without problem if Steam is shut down''', then you follow these instructions: | ||
# - to Open file '''steam_api.h''' (src\public\steam) | |||
# - Find this and '''DELETE/COMMENT''' (Lines 551 - 562): | |||
<source> | <source> | ||
Line 64: | Line 57: | ||
} | } | ||
</source> | </source> | ||
[[Category:Programming]] | [[Category:Programming]] |
Revision as of 06:56, 6 November 2023

Mod files
In order to launch your mod, the necessary files need to be created in your steamapps folder. Source SDK 2013 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 every time 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)
- Navigate to directory <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: mkdir <mod_name> && sudo mount --bind <path_to_source>/<sp|mp>/game/<mod_hl2mp|mod_hl2|mod_episodic> <mod_name>
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.
Example
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
:BuildEventFailed
echo *** ERROR! PostBuildStep FAILED for $(ProjectName)! EXE or DLL is probably running. ***
del /q "$(TargetDir)$(TargetFileName)"
exit 1
:BuildEventOK
Problems with running your mod
If, at startup, after the intro video, your mod crashes while Steam is active, but it runs without problem if Steam is shut down, then you follow these instructions:
- - to Open file steam_api.h (src\public\steam)
- - Find this and DELETE/COMMENT (Lines 551 - 562):
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;
}