Tutorial: Setting up a Mod: Part 2 - Splash Screens (Steam) Last edited 1 week ago2024-11-24 03:00:36 UTC

In this tutorial you'll find out how to use a custom splash screen in Steam HL. Start by reading the related tutorial for WON HL if you haven't already.

Modding the Steam main menu is slightly more complicated then in WON HL, but oh so much more flexible.

Creating your mod

Do this like in the first part of the WON tutorials except that when it refers to a WON HL installation, refer to the Steam HL installation instead.

Furthermore, you'll have to create the following new folders in your mod folder if they don't already exist.

Splash Screens

Splash screens are composed of image tiles in TGA format, and configured using the following files (relative to the base folder of the mod): In the 25th anniversary update, there are two additional files that are used when you enable the HD background setting (via liblist.gam): In all these files, the first line is in this format:
resolution <width> <height>
subsequent lines are in this format:
<path to image tile> <scaling mode> <x> <y>
where <scaling mode> can be either of the following values: and <x> and <y> are the offsets of where the top-left corner of the image tile would be, in the resolution specified in the first line.

To prepare the image tiles, you can follow this tutorial, or use the following tools:

The Game Menu

You wanna edit the menu links, right? Copy the GameMenu.res in the resource folder from the valve folder to your mod's equivalent. Open the copy with a text editor. You'll see a bunch of segments of parameters.
"9"
{
    "label" "#GameUI_GameMenu_FindServers"
    "command" "OpenServerBrowser"
    "notsingle" "1"
}
This one, for example, is the Find Servers button.

label controls the label, shockingly enough. #GameUI_GameMenu_FindServers gets the title from the language file, but unless you're planning on multi-language support you can just change it to anything you want.

"command" controls what happens when you press the button. OpenServerBrowser is a Steam client command that opens the server browser. (Damn, it's all so self explanatory) You can change it to any other Steam command, such as OpenLoadGameDialog which would cause the button to open the load game dialog instead.

Available commands are: I'll let you guess what they do.

You can also use engine commands.
Entering engine <console command>, would cause the button to execute the console command when pressed. Example:
"command" "engine map c1a0"
This would cause the button to start the map c1a0.

The third parameter, notsingle makes the button invisible in singleplayer mode. Other similar parameters are available: notmulti, OnlyInGame and notsteam. They can be used together, like this:
"notsingle" "1"
"OnlyInGame" "1"
This would cause the button to only be visible when in a multiplayer game.

Dialogs

That's not all you can customize, oh no. You can customize all the dialogs as well. They all have their own .res file in the resource folder.

NewGameDialog.res contains the new game dialog (Couldn't guess, could you?).

The dialogs are more complex then the menu. If you open the .res you'll see segments like these:
"Training"
{
    "ControlName"    "RadioButton"
    "fieldName"      "Training"
    "xpos"           "40"
    "ypos"           "94"
    "wide"           "220"
    "tall"           "24"
    "autoResize"     "0"
    "pinCorner"      "0"
    "visible"        "1"
    "enabled"        "1"
    "tabPosition"    "1"
    "labelText"      "#GameUI_TrainingRoom"
    "textAlignment"  "west"
    "dulltext"       "0"
    "default"        "0"
    "SubTabPosition" "1"
}
This is the "Training Room" radio button. labelText changes the label. The other stuff should be self-explanatory enough, you'll have to try and change them and see what happens.
Limitations of edits
You can't delete an element (radio button for example) because the menu code is still "aware" of it and thus will put default values on the element. This is annoying if you are trying to remove "Training Room" from the new game dialog for example.

An "ugly workaround" to that problem is to set a negative X and Y position to "hide" the element, but anyone with the knowledge could restore the "hidden" element or do something to trigger it so don't rely too much on it.

Adding interactive elements such as "check boxes", "radio buttons", "text edits" are pointless since the menu code has no "awareness" of them even if they will get displayed.
Half-Life 25th Anniversary update compatibility
Many dialog boxes have been changed between the pre- and post-HL25 update, which can either be softlocking (e.g. unable to start a new game) or even crash the game if run on the wrong branch of the game engine. You either need to choose one branch and force players to use it, or ship both versions and let the players choose.
You can also change the colour of these dialogs, but I won't explain this in any detail. The colour scheme is contained in resource/TrackerScheme.res. You should be able to figure it out or find some old Steam skin creation tutorial, as the process is pretty much the same.

Steam Games icon

As you might have noticed, some games have small icons in the Steam games list. You can, too.

Create a 16x16 32bit TGA, name it icon.tga and put in your mod's folder, you might need to restart your Steam client to see the change in your Steam's library.
Now you should be all customized up and ready. If this still isn't enough, head over to the tutorial's addendum.
Original title: Tutorial: Splash Screens for Steam

10 Comments

Commented 15 years ago2009-03-26 17:10:55 UTC Comment #100714
I found the Steam Splash Creator included with the tutorial didn't work for me fsr.... I got this one from fpsbanana, and it worked for me.
Commented 14 years ago2010-02-26 12:39:51 UTC Comment #100715
nice but hard
Commented 14 years ago2010-08-18 13:53:06 UTC Comment #100716
TY captain terror! ...and chickenfist for making this tutorial!
Commented 13 years ago2011-01-30 13:05:45 UTC Comment #100717
steam recently added a way to add a second 32x32 sized icon to display in the game description area (but no way to add game info text to show up on steam yet??? anyone?)

to make the 32x32 icon, put your 32x32 tga icon file in same location as the 16x16 but add "_big" to the end of the file name
Commented 10 years ago2014-08-14 03:53:33 UTC Comment #100718
The splash screen method is not working, i cant see it ingame. The icon method works tho. Pleas help
Commented 10 years ago2014-09-03 06:43:45 UTC Comment #100719
Is SSC virus/Trojan free? Im asking because on Virus Total the detection ratio is 1/55 and im super cautious about this kind of stuff
Commented 9 years ago2015-02-18 18:47:52 UTC Comment #100720
You have to place the background folder into the resource folder, then the splash screen should work.
Commented 2 years ago2022-02-14 20:44:47 UTC Comment #104121
Yeah I just can't seem to get the icon to work
oh well
Commented 1 year ago2023-11-21 00:18:31 UTC Comment #105646
Half-Life 25th Anniversary changes
Due to Valve reworking the game menu to visually look like the old WON menu screen, the structure of GameMenu.res is changing and in flux until Valve finalizes it.
As usual, switch to the steam_legacy beta to continue using the old specs in the meantime.
  • 2024-05-08 - Safe to say the new specs have stabilized.
    • Mods no longer crashes if gamemenu is missing the WON-style help texts.
    • Mods with custom code may still crash from the differences in the UI resource files like new game dialog and option pages and may still require the legacy branch.
Commented 1 week ago2024-11-23 20:47:47 UTC Comment #106524
if you want to have a similar looking steam splashscreen in the new 25th anniversary update add this to the bottom of liblist.gam of your mod:
hd_background "1"
animated_title "0" (or just dont put this)

You must log in to post a comment. You can login or register a new account.