Add Post Scriptum (#344)

* Add Post Scriptum

Based on the standard Squad Dedicated Server template recently complete - PS is effectively a carbon copy game by the same publisher, so shares a lot of the same things.

* Update psconfigmanifest.json

Update - accidentally pushed older config

* Update post-scriptum.kvp

Add UpdateSourceArgs for mod support

* Naming Convention tidy

Tidy up naming conventions for files - adjust file names within kvp to match new names - no configuration changes other than that.

* Update post-scriptum.kvp

Change to utilise new ports system

* Update post-scriptum.kvp

Change to correct binding variable

* Update post-scriptum.kvp

Remove app.updatesource is redundant

* Update post-scriptum.kvp

Remove redundant admin port after new ports system implemented

* Update KVP - Full refactor

Refactor using a newly deployed instance. Bump MinAMPVersion

* Various tweaks

* Update post-scriptum.kvp

Update RCON delay

* Add EnforceTeamBalance to config

Add EnforceTeamBalance to config file as an option

* Filename amendment

Amend files to remove hyphens after the name of the service to be in-line with current conventions

---------

Co-authored-by: Greelan <53196309+Greelan@users.noreply.github.com>
This commit is contained in:
southnode 2023-05-08 12:31:01 +10:00 committed by GitHub
parent cb7b997df4
commit c699f6d196
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 412 additions and 0 deletions

88
post-scriptum.kvp Normal file
View File

@ -0,0 +1,88 @@
Meta.DisplayName=Post Scriptum
Meta.Description=Post Scriptum Dedicated Server
Meta.OS=Windows, Linux
Meta.AarchSupport=Unknown
Meta.Arch=x86_64
Meta.Author=Southnode
Meta.URL=http://postscriptumgame.com/
Meta.DisplayImageSource=steam:736220
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$QueryPort}
Meta.ConfigManifest=post-scriptumconfig.json
Meta.MetaConfigManifest=post-scriptummetaconfig.json
Meta.ConfigRoot=post-scriptum.kvp
Meta.MinAMPVersion=2.4.3.2
Meta.DockerRequired=False
Meta.ContainerPolicy=Supported
Meta.ConfigReleaseState=NotSpecified
Meta.NoCommercialUsage=False
App.DisplayName=Post Scriptum
App.RootDir=./post-scriptum-server/
App.BaseDirectory=./post-scriptum-server/746200/
App.SteamWorkshopDownloadLocation={{$FullBaseDir}}PostScriptum/Plugins/Mods
App.ExecutableWin=746200\PostScriptum\Binaries\Win64\PostScriptumServer.exe
App.ExecutableLinux=746200/PostScriptum/Binaries/Linux/PostScriptumServer
App.WorkingDir=746200
App.CommandLineArgs=MULTIHOME={{$ApplicationIPBinding}} Port={{$GamePort}} QueryPort={{$QueryPort}} RCONPORT={{$RCONPort}} RCONPASSWORD={{$RemoteAdminPassword}} FIXEDMAXTICKRATE={{MaxTPS}} RANDOM={{MapRandom}} -log -fullcrashdump
App.UseLinuxIOREDIR=False
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"736220"}
App.CommandLineParameterFormat={0}="{1}"
App.CommandLineParameterDelimiter=
App.ExitMethod=OS_CLOSE
App.ExitTimeout=30
App.ExitString=stop
App.ExitFile=app_exit.lck
App.HasWriteableConsole=True
App.HasReadableConsole=True
App.SupportsLiveSettingsChanges=False
App.LiveSettingChangeCommandFormat=set {0} "{1}"
App.ApplicationIPBinding=0.0.0.0
App.Ports=[{"Protocol":"UDP","Port":7777,"Ref":"GamePort","Name":"Game Port","Description":"Port for game traffic"},{"Protocol":"UDP","Port":27025,"Ref":"QueryPort","Name":"Query Port","Description":"Port for query traffic"},{"Protocol":"TCP","Port":25575,"Ref":"RCONPort","Name":"RCON Port","Description":"Port for RCON traffic"}]
App.AdminPortRef=RCONPort
App.PrimaryApplicationPortRef=GamePort
App.UniversalSleepApplicationUDPPort=GamePort
App.UniversalSleepSteamQueryPort=QueryPort
App.MaxUsers=80
App.UseRandomAdminPassword=True
App.PersistRandomPassword=True
App.RemoteAdminPassword=
App.AdminMethod=SourceRCON
App.AdminLoginTransform=None
App.LoginTransformPrefix=
App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=60
App.RCONHeartbeatMinutes=0
App.RCONHeartbeatCommand=ping
App.TelnetLoginFormat={0}
App.UpdateSources=[{"UpdateStageName":"SteamCMD Download","UpdateSourcePlatform":"All","UpdateSource":"SteamCMD","UpdateSourceData":"746200","UpdateSourceArgs":"736220"}]
App.PreStartStages=[]
App.Compatibility=None
App.SteamUpdateAnonymousLogin=True
App.SteamForceLoginPrompt=False
App.RapidStartup=False
App.MonitorChildProcess=False
App.DumpFullChildProcessTree=False
App.MonitorChildProcessWaitMs=100
App.MonitorChildProcessName=
App.SupportsUniversalSleep=False
App.WakeupMode=Any
App.ApplicationReadyMode=RegexMatch
App.TemplateMatchRegex={{(\$?[\w]+)}}
Console.FilterMatchRegex=
Console.FilterMatchReplacement=
Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$
Console.AppReadyRegex=^(LogInit: Display: Starting Game\.)|(LogOnline: GotoState: NewState: Playing)$
Console.UserJoinRegex=^$
Console.UserLeaveRegex=^$
Console.UserChatRegex=^\[Chat.*\] \[SteamID\:(?<userid>-?\d+)\] (?<username>.+?) \: (?<message>.+)$
Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$
Console.MetricsRegex=
Console.SuppressLogAtStart=False
Console.ActivateLogRegex=
Console.UserActions={}
Limits.SleepMode=False
Limits.SleepOnStart=False
Limits.SleepDelayMinutes=5
Limits.DozeDelay=2
Limits.AutoRetryCount=5
Limits.SleepStartThresholdSeconds=25

316
post-scriptumconfig.json Normal file
View File

@ -0,0 +1,316 @@
[
{
"DisplayName":"RCON Password",
"Category":"Server Config",
"Description":"See the Security and Privacy menu for configurable options for the server's RCON",
"Keywords":"rcon,password",
"FieldName":"RCONPassword",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"RCONPassword",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName": "Server Name",
"Category": "Server Config",
"Description": "Set the Name for the server in the Server Browser",
"Keywords": "server name, name",
"FieldName": "ServerName",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "ServerName",
"IncludeInCommandLine": false,
"DefaultValue": "A new Post Scriptum Server!"
},
{
"DisplayName": "Max Players",
"Category": "Server Config",
"Description": "Set the max players allowed on the server (minus reserved slots)",
"Keywords": "max players, players",
"FieldName": "$MaxUsers",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "MaxPlayers",
"IncludeInCommandLine": false,
"DefaultValue": "80",
"Suffix":"players",
"MinValue":"1"
},
{
"DisplayName": "Max TPS",
"Category": "Server Config",
"Description": "Set the maximum tickrate for the server (Set below 45 for best stability)",
"Keywords": "tps, tickrate",
"FieldName": "MaxTPS",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "MaxTPS",
"IncludeInCommandLine": false,
"DefaultValue": "40",
"Suffix":"tps",
"MinValue":"10"
},
{
"DisplayName": "LAN Mode",
"Category": "Server Config",
"Description": "Set the server to LAN mode",
"Keywords": "Lan,Server",
"FieldName": "IsLANMatch",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "IsLANMatch",
"DefaultValue": "false",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Should Advertise",
"Category": "Server Config",
"Description": "Control visibility in the server browser - disabling removes the server from the Server Browser",
"Keywords": "Visibility,Server",
"FieldName": "ShouldAdvertise",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "ShouldAdvertise",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Number of Reserved Slots",
"Category": "Server Config",
"Description": "Number of reserved slots for admins within the Admins.cfg file with the 'reserved' group permission",
"Keywords": "reserved players, players",
"FieldName": "NumReservedSlots",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "NumReservedSlots",
"IncludeInCommandLine": false,
"DefaultValue": "0"
},
{
"DisplayName": "Server Map Randomisation",
"Category": "Server Config",
"Description": "Set whether the server map rotation is randomised when the server starts. ALWAYS randomises all the maps in MapRotation.cfg, FIRST will select a first map at random from the list and proceed through the list in order.",
"Keywords": "Map Rotation,Rotation,Random",
"FieldName": "MapRandom",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "MapRandom",
"IncludeInCommandLine": false,
"DefaultValue": "None",
"EnumValues": {
"ALWAYS": "Always",
"FIRST": "First",
"NONE": "None"
}
},
{
"DisplayName": "Randomize At Start",
"Category": "Server Config",
"Description": "Should the Map/Layer rotations list be randomized at start?",
"Keywords": "Map Rotation,Rotation",
"FieldName": "RandomizeAtStart",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "RandomizeAtStart",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Enforce Team Balance",
"Category": "Server Config",
"Description": "Enable to force joining players to the side with less players, or randomly if teams are balanced",
"Keywords": "Balance, Enforce, Enable Balance",
"FieldName": "EnforceTeamBalance",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "EnforceTeamBalance",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Allow Team Change",
"Category": "Server Config",
"Description": "Completly Allow or Disallow Team change to all players. Only users with 'balance' permission within Admins.cfg can bypass this flag",
"Keywords": "Layer,Vote",
"FieldName": "AllowTeamChanges",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "AllowTeamChanges",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Prevent Team Change If Unbalanced",
"Category": "Server Config",
"Description": "If set to false, players can change teams regardless of team balance. Otherwise, the NumPlayersDiffForTeamChanges Value is used",
"Keywords": "Layer,Vote",
"FieldName": "PreventTeamChangeIfUnbalanced",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "PreventTeamChangeIfUnbalanced",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Max Allowed Difference in player count",
"Category": "Server Config",
"Description": "Maximum Allowed difference in player count between teams. This takes into account the team the player leaves and the team the player joins",
"Keywords": "queue,players",
"FieldName": "NumPlayersDiffForTeamChanges",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "NumPlayersDiffForTeamChanges",
"IncludeInCommandLine": false,
"DefaultValue": "3"
},
{
"DisplayName": "Rejoin Squad Delay After Kick",
"Category": "Server Config",
"Description": "Sets the delay after which a player is allowed to rejoin a squad after being kicked.",
"Keywords": "delay,players,kick",
"FieldName": "RejoinSquadDelayAfterKick",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "RejoinSquadDelayAfterKick",
"IncludeInCommandLine": false,
"DefaultValue": "180",
"Suffix":"seconds"
},
{
"DisplayName": "Map Voting",
"Category": "Server Config",
"Description": "Enable Map Voting at the end of a round",
"Keywords": "map, voting",
"FieldName": "MapVoting",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "MapVoting",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Server Message Interval",
"Category": "Server Config",
"Description": "Frequency in which the server displays the information inside the ServerMessages.cfg file as a broadcast to all players",
"Keywords": "Interval, Message",
"FieldName": "ServerMessageInterval",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerMessageInterval",
"IncludeInCommandLine": false,
"DefaultValue": "300",
"Suffix":"seconds"
},
{
"DisplayName": "Team Kill Auto Kick Enabled",
"Category": "Server Config",
"Description": "Enable Auto Kick for teamkilling",
"Keywords": "Kick,Auto,Team,Kill",
"FieldName": "TKAutoKickEnabled",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "TKAutoKickEnabled",
"DefaultValue": "True",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Vehicle Kit Requirement Disabled",
"Category": "Server Config",
"Description": "Toggle to disable vehicle kit requirement",
"Keywords": "Vehicle,Kit",
"FieldName": "VehicleKitRequirementDisabled",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "VehicleKitRequirementDisabled",
"DefaultValue": "false",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Allow Community Admin Access",
"Category": "Server Config",
"Description": "Enable QA Admin Access",
"Keywords": "Admin",
"FieldName": "AllowCommunityAdminAccess",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "AllowCommunityAdminAccess",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Offworld Developers only Admin",
"Category": "Server Config",
"Description": "Allow Offworld Industries QA Dev Profiling",
"Keywords": "Admin",
"FieldName": "AllowDevProfiling",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "AllowDevProfiling",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Allow QA",
"Category": "Server Config",
"Description": "Allow Offworld Industries QA",
"Keywords": "QA",
"FieldName": "AllowQA",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "AllowQA",
"DefaultValue": "true",
"EnumValues": {
"False": "false",
"True": "true"
}
},
{
"DisplayName": "Vehicle Claiming Disabled",
"Category": "Server Config",
"Description": "Disable Vehicle Claiming",
"Keywords": "Vehicle",
"FieldName": "VehicleClaimingDisabled",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "VehicleClaimingDisabled",
"DefaultValue": "false",
"EnumValues": {
"False": "false",
"True": "true"
}
}
]

View File

@ -0,0 +1,8 @@
[
{
"ConfigFile": "./PostScriptum/ServerConfig/Server.cfg",
"AutoMap": true,
"ConfigType": "kvp",
"ConfigFormat": "{0}=\"{1}\""
}
]