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:
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 listmaster.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
Second Encounter Gold Edition Maps
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