Serious Sam Classic TSE

Serious Sam Classic The Second Encounter

Serious Sam Rockets Forever Mod

Rockets Forever is a mod made by codecat / Miss / Scratch. You can compile it by cloning her git:

Github page

or you can download precompiled binaries here:

Precompiled binaries on Google Drive

Precompiled binaries on Discord

ReadMe is on the github page and even in the precompiled archive.

Multi MS Dedicated Server

This mod has been made by [Rocketers] Alex and allows you to have multiple master servers. You can find precompiled binaries here:

Precompiled binaries on Google Drive

Precompiled binaries on Discord

ReadMe is in the archive.

Command logic

Serious Sam's command logic isn't hard to understand, it is the same of C. You can use all the shift operators and you can cast variables to any type. In the game client, use / before using any command. In order to compare numerics you need to cast to (INDEX) or (FLOAT), while in order to output you might need to cast to (CTString) depending on the command. Since CTString is a custom type, you can also compare strings and merge them up with +. Comment code as you normaly would by using //. The main types you need to know about are INDEX (integer, no decimal point), FLOAT (decimal point) and CTString (strings). Some example:

Echo((CTString)1.5 + "\n"); //shows 1.5 converted to CTString then adds endline

Echo((CTString)(INDEX)1.5 + "\n"); //truncates 1.5 showing the integer part of it then adds endline

if((INDEX)((FLOAT)1.5 + (FLOAT)1.0) == 2){Echo("1.5 + 1 truncated is 2\n");}

if(((FLOAT)5.2 * (FLOAT)2.2) < (FLOAT)15.0){Echo("11.44 is less than 15.0\n");}

if((CTString)"hello" == (CTString)"hello"){Echo("It can compare strings!\n");}

Variables have a prefix, which can be net_, gam_, inp_, etcetera, depending on the kind of command whether it is a float (f), an index (i) or a string (str), they usually start with the relative letter/prefix (for example inp_fMouseSensitivity).

Some functions

Echo(CTString message); //shows some message in Console, requires endline at the end or it will add up

Say(CTString message); //shows some message in public chat

nextmap(); //switches to next map only on dedicated server

LoadCommands(); //loads custom console commands from Scripts

NetworkInfo(); //shows network info including ticks

ListPlayers(); //shows a player list with their own index

KickByName(CTString name, CTString reason); //kicks someone by name

KickClient(INDEX client, CTString reason); //kicks someone by client index

Admin(CTString command); //executes some command from game client to RCON, this requires escaping

RemoveSubString(CTString removefrom, CTString removewhat); //removes some substring from a string

You can find more by typing something and then pressing TAB.

Some variables

net_strMasterServer = CTString host; //sets the primary master server in client and dedicated server, empty string to have none

net_strMasterServerOverride = CTString host; //only in game client, sets a secondary master server to query, empty string to have none

net_strMasterServer1 = CTString host; //only in Multi MS sets Master Server 1, empty string to have none

net_strMasterServer2 = CTString host; //only in Multi MS sets Master Server 2, empty string to have none

net_strMasterServer3 = CTString host; //only in Multi MS sets Master Server 3, empty string to have none

net_strMasterServer4 = CTString host; //only in Multi MS sets Master Server 4, empty string to have none

net_strAdminPassword = CTString host; //in client: sets RCON password for Admin command, in server: sets server RCON password

cmd_cmdOnChat = CTString command; //sets commands to run whenever someone types on chat, requires escaping and endline at the end

cmd_cmdOnTick = CTString command; //sets commands to run on tick, requires escaping and endline at the end

ded_strLevel = CTString levelpath; //sets the next level, requires escaping of backslashes

ser_iMaxAllowedBPS = INDEX value; //sets max allowed BPS, this is useful to avoid lags

You can find more by typing net_, gam_, rf_ (Rockets Forever), cmd_ and ser_ and then pressing tab in the game client.

Some are also in Dedicated_startup.ini and configuration_name\*.ini, don't forget to check them.

Map paths logic

The game uses some directory structure logic. You can see the logic in any configuration (Scripts\Dedicated\any_configuration\1_begin.ini). What we can see there is that paths require backslash escaping just like in C. To find the relative map paths you can inspect any GRO file with any archive reader, like 7-zip. GRO files go into game's root directory (so not Bin).

Configuration files

Main configuration files of Dedicated Server:

Scripts\Dedicated_startup.ini

Scripts\Dedicated\(configuration_name)\*.ini

Run the Dedicated Server

Run in a batch file placed in the main Serious Sam TSE directory:

Bin\DedicatedServer.exe configuration_name

Replace configuration_name with your config name. Don't forget to edit Dedicated_startup.ini and the ini files in Scripts\Dedicated\(configuration_name)\

Run the RCON client

Run in a batch file placed in the main Serious Sam TSE directory:

Bin\rcon.exe ip port "password"

Replace ip with your IP or hostname, replace port with the port, replace password with the password, make sure to put the password in quotes or it will say "wrong password".

Log to RCON from a game client

First, set net_strAdminPassword in the game client:

/net_strAdminPassword="somepassword";

Then run commands with the Admin() command:

/Admin("nextmap();");

Master Servers

  • gs.ostap.eu - bans servers randomly off his list

  • master.errorist.eu

  • master.333networks.com

CRC Check Issues

Set the following variable in Dedicated_startup.ini

ser_bUseCustomCRCList = 0;

Examples

Chat timers

cmd_cmdOnTick=cmd_cmdOnTick+"if((FLOAT)cmd_tmTick - (FLOAT)(INDEX)cmd_tmTick < 0.05 && (INDEX)cmd_tmTick % (INDEX)300 == 0){Say(\"This runs every 5 minutes\");}\n";

Replace (INDEX)300 with the amount of seconds (60 seconds would be (INDEX)60)

Chat commands

cmd_cmdOnChat=cmd_cmdOnChat+"if(cmd_strChatMessage == \"!serious_speed\"){Say(\"SERIOUS SPEED - use !normal_speed to revert\"); gam_fRealTimeFactor=2;}\n";

cmd_cmdOnChat=cmd_cmdOnChat+"if(cmd_strChatMessage == \"!normal_speed\"){gam_fRealTimeFactor=1;}\n";

This speeds up the game when using !serious_speed and then slows it back to normal when using !normal_speed

Remove BPS limit from server-side

ser_iMaxAllowedBPS=2147483647;

Sets BPS to (2^31)-1.

If players shake, you can also try 2500 instead.

Windows 10 build 2004 fix

Admin CMD:

bcdedit /set forcefipscrypto No

Resources

Super DM pack

Second Encounter Gold Edition Maps

Ultimate Deathmatch Pack

Shotty Trouble

Platinum Skin Pack

Map RCON Command Script - this was generated with some custom program, requires all the maps above, use /Admin("map list") in game client console

Map CHAT Command Script - this was generated with some custom program, requires all the maps above, use !map list in chat

Serious Sam Master Server Changer - by me, all source code included

Credits

  • Melody, myself

  • Supersniper98 for helping a lot in the process of finding things

  • Godsather (Padrino) for testing a lot and giving some hints

  • codecat / Miss / Scratch for Rockets Forever

  • [Rocketers] Alex for the Multi MS mod

  • All the users who made mods and other things that would require too much room to type