Source Speedrun ToolsBETA!

SST is a sorta-still-in-de­vel­op­ment gen­er­al-pur­pose plu­gin for Source En­gine games, cur­rently mainly Left 4 Dead 1 and 2 and Portal 1, with plans to ex­pand sup­port for oth­er games over time.

It’s primar­ily been de­veloped by my­self, with a lot of ad­di­tion­al code writ­ten by bill, and minor code con­tri­bu­tions and a ton of help­ful test­ing and design in­put also be­ing done by aciidz. Ad­di­tion­ally, it builds upon count­less hours of re­verse en­gin­eer­ing work done by many oth­er smart people who hang out in vari­ous com­munit­ies:

We’re a few ver­sions in now but still a little short of what we want to have be­fore call­ing it a full re­lease. Des­pite this, SST is already very stable and packed with many use­ful fea­tures.

Obligatory copyright notice and disclaimer!

This soft­ware is the work of a few dif­fer­ent people, and all in­volved de­serve cred­it for their work. As such, if you want to send cop­ies to oth­er people or use any of the code for some oth­er pur­pose, please read the terms in the LICENCE file in­cluded in the down­load to know what you can and can­not do, leg­ally speak­ing.

Also, keep in mind that this soft­ware has ab­so­lutely NO WAR­RANTY! There’s no reas­on it should break any­thing, but that’s not a leg­al guar­an­tee. De­tails of that are also writ­ten out in ex­cru­ci­at­ing le­galese in the in­cluded LICENCE file. You’re as­sumed to have read that le­galese be­fore at­tempt­ing to use SST, and thus be­fore get­ting any ideas about su­ing any­one if your com­puter hap­pens to catch fire.

Gimme the plugin already!

The cur­rent BETA ver­sion of SST is 0.5, a.k.a. Spec­tac­u­lar Schedul­ing Tri­umph. The in­struc­tions be­low cov­er set­ting it up with auto-up­dates on Win­dows. SST doesn’t cur­rently sup­port Linux, but hope­fully will some day.

You can find the list of changes made in v0.5 here.

For Left 4 Dead run­ners: The old game ver­sions provided with­in the com­munity have the SST up­date script bundled in already, so you’ll al­ways have the latest and greatest ver­sion of SST without hav­ing to do any­thing else. If, for some odd reas­on, you need to run the new­est Steam ver­sion of the game, you can con­tin­ue fol­low­ing the in­struc­tions giv­en for Portal here.

For Portal: The cur­rent ver­sion of Source Un­pack has SST bundled in, so you shouldn't have to do much to get it work­ing. However, if you have some oth­er copy of the game already, you can still manu­ally set up the SST up­date script (see be­low).

For oth­er games: For now, you need to manu­ally set up the up­date script. Down­load that here, and then ex­tract it into an empty dir­ect­ory (it will splat a couple of oth­er files next to it­self when run).

Once you have the auto-up­date script set up, you can either run it manu­ally to bring SST up to date, or ideally hook it into the launch script for your old game so that it is al­ways up to date whenev­er you play! That will also cause a changelog to dis­play in the in-game con­sole whenev­er a new up­date is down­loaded.

Release archives and sources

A dir­ect link to SST v0.5 is here. Keep in mind that it is strongly re­com­men­ded to use the auto-up­date script above for nor­mal use of the plu­gin.

Older builds are plonked on the download site for now. Note that the old ver­sions have nu­mer­ous bugs so you really shouldn’t be us­ing these un­less you have a very spe­cif­ic reas­on. They’re mostly kept around as a mat­ter of his­tor­ic­al re­cord.

For techie people:If you want to build SST from source code, or fiddle with the code your­self, the de­vel­op­ment re­pos­it­ory is pub­lished here. You can git clone it from that URL too. If you want to clone over oth­er pro­to­cols or get a slightly fan­ci­er browser, it’s also mirrored on both GitLab and GitHub. This re­lease is built from Git tag v0.5-BETA (which points at com­mit 7893ef46f85eb5a6021d6ab763ca84e382e64954). In theory, you should be able to pro­duce a bit-for-bit identic­al copy of the DLL us­ing Clang from LLVM 16.0.5 and ver­sion 10.0.22000.0 of the Win­dows 10 SDK. Good luck!
Er­rat­um: you’ll need to cherry-pick 13ad0442a3fde0518ca9133b55796f31652698c9 on top of that, or re­move the broken lines from the build script, due to a ver­sion con­trol blun­der made right be­fore the re­lease. Sorry!

Adding the plugin to your game

Be­fore you do any­thing else, add -insecure to your game launch op­tions, and make sure that when you open a map, it says “VAC se­cure mode dis­abled” some­where in the de­veloper con­sole. WARN­ING: if you skip this step, you may run the risk of get­ting VAC-banned! Don’t skip this step! Most single play­er games like Portal are fine, but if you don’t know for sure wheth­er a game is VAC-en­abled then please err on the side of cau­tion.

De­pend­ing on the game en­gine ver­sion, your game may load plu­gins from either the mod dir­ect­ory (e.g. hl2, portal, or left4dead2) or the bin dir­ect­ory that ex­ists along­side the game ex­ecut­able.

To keep things reas­on­ably simple, you can keep SST in a folder out­side of both of those, and then the same re­l­at­ive path will just hap­pen to work either way. For ex­ample, if you have cre­ated a folder named SST next to your game ex­ecut­able, and set up and run the up­date script in there, you should then be able to type plugin_load ../SST/sst in the de­veloper con­sole to load up the plu­gin.

General features and usage

Auto­load setup: after load­ing the plu­gin once, type sst_autoload_enable in the con­sole to quickly re­gister the plu­gin to start along with the game. Do­ing this en­sures that saved set­tings for the plu­gin don’t get lost when the game is next launched, and that cer­tain fixes for game bugs are cor­rectly and re­li­ably ap­plied. If you ever need to re­vert this, though, typ­ing sst_autoload_disable will put everything back to nor­mal.

Bet­ter demo re­cord­ing: Once the plu­gin: Once the plu­gin is loaded, it be­comes pos­sible by de­fault to re­cord a demo (record basefilename in con­sole) and then have the game keep re­cord­ing demos un­til the heat death of the uni­verse (or un­til you type stop). This can be turned off with sst_autorecord 0.

Auto­jump: Set sst_autojump 1 to get smooth, per­fect bunny hops by simply hold­ing down your jump but­ton. Very use­ful for fig­ur­ing out new routes that would oth­er­wise be dif­fi­cult to fig­ure out due to lack of skill (but ob­vi­ously should not be used for nor­mal speedruns).

Uni­ver­sal raw mouse in­put: Mod­ern Source games have m_rawinput 1 for prop­er raw mouse in­put, but many of the older ver­sions used by speedrun­ners don’t. SST re­im­ple­ments this op­tion if re­quired for con­sist­ent mouse in­put across the board. Since it uses the same con­sole vari­able, your con­fig­ur­a­tion will seam­lessly carry over between old and new ver­sions as well.

Raw mouse in­put scal­ing: When raw in­put is en­abled, it is pos­sible to use sst_mouse_factor to in­crease the num­ber of in­cre­ments from the hard­ware mouse sensor ne­ceesary to move by one angle step in-game. This is use­ful for view-snap tricks which re­quire set­ting a very high in-game sens­it­iv­ity but mov­ing the ac­tu­al mouse by a very small amount.

Ali­as man­age­ment: Nor­mally com­mand ali­ases can­not be re­moved un­til the game is re­star­ted. SST adds sst_alias_remove and sst_alias_clear in or­der to make ali­as man­age­ment more con­veni­ent.

Re­in­stated miss­ing con­sole com­mands: A bunch of oth­er handy things have been ad­ded back in as well, either by ex­pos­ing them when hid­den or by totally re­im­ple­ment­ing things that are miss­ing:

Game-specific features

Left 4 Dead 1 & 2

Cheats in L4D2 lob­bies: Nor­mally, for whatever reas­on, Left 4 Dead 2 doesn’t let people use sv_cheats in a self-hos­ted mul­ti­play­er lobby (or a single-play­er game star­ted from the menu). SST en­ables this, mak­ing it much more con­veni­ent to prac­tice in between run at­tempts, without hav­ing to port-for­ward and send IPs to people.

Warp test­ing: Type (or bind) sst_l4d_testwarp to sim­u­late an idle warp to your­self. This al­lows co-op routes to be found much more quickly.

Fast run re­set­ting: Type (or bind) sst_l4d_quickreset to im­me­di­ately re­turn to the start of the cur­rent cam­paign. Op­tion­ally, this com­mand can take a cam­paign ID such as L4D2C2 in or­der to start the run at that cam­paign, re­gard­less of which map is cur­rently loaded.

Graph­ics bug fixes: SST pre­vents mul­ticore ren­der­ing from get­ting re­set in cer­tain situ­ations in older ver­sions of L4D2, as well as fixes the bright­ness set­ting not get­ting saved in L4D1. Also, those play­ing older builds of L4D2 on In­tel graph­ics hard­ware will no longer ex­per­i­ence the ren­der­ing is­sue where everything ap­pears too dark.

Nag dia­log re­mov­al: Later ver­sions of Left 4 Dead 2 pop up an an­noy­ing mes­sage whenev­er a plu­gin is loaded. SST does some trick­ery to avoid this.

Portal

Gun/crosshair col­our cus­tom­isa­tion: Use the sst_portal_colourN cvars to change the col­ours of the crosshair and the little tube thingy in the front part of the gun when grabbing items and shoot­ing the two dif­fer­ent portals. Cur­rently only works in 3420, 5135, and the cur­rent Steam ver­sion.

En­hanced FOV set­tings: The play­er’s FOV can be set any­where in the range of 75–120 with fov_desired in any ver­sion of the game. Even though that’s dumb. It’s What The People Want!

Thanks, and have fun!