Add Empyrion Galactic Survival (#155)

Reference: https://github.com/CubeCoders/AMPTemplates/pull/49

All changes requested by @Greelan have been implemented, but there are two things to note.
-I kept the working directory the same as the launcher lives in this folder, but calls the dedicated server executable one deeper.
-There are two ports that have unknown uses. I've looked around and have gotten mixed responses on if they're actually needed or what they do, but the telnet port is always 4 higher than the main game port in each case, so I have to assume there's a reason behind it.
This commit is contained in:
IceOfWraith 2022-06-28 19:38:18 -05:00 committed by GitHub
parent 2f19b5d580
commit e368ccbe78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 572 additions and 0 deletions

View File

@ -0,0 +1,83 @@
Meta.DisplayName=Empyrion Galactic Survival
Meta.Description=Empyrion Galactic Survival Dedicated Server
Meta.OS=Windows, Linux
Meta.Arch=x86_64
Meta.Author=Shinynecrid, IceOfWraith
Meta.URL=https://steamdb.info/app/383120/
Meta.DisplayImageSource=steam:383120
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$SteamQueryPort}
Meta.ConfigManifest=empyrion-galactic-survivalconfig.json
Meta.MetaConfigManifest=empyrion-galactic-survivalmetaconfig.json
Meta.ConfigRoot=empyrion-galactic-survival.kvp
Meta.MinAMPVersion=2.3.3
Meta.SpecificDockerImage=cubecoders/ampbase:wine
Meta.DockerRequired=False
Meta.ContainerPolicy=Recommended
Meta.Prerequsites=[]
Meta.ConfigReleaseState=NotSpecified
App.DisplayName=Empyrion Galactic Survival
App.RootDir=./empyrion-galactic-survival/
App.BaseDirectory=./empyrion-galactic-survival/530870/
App.ExecutableWin=530870\DedicatedServer\EmpyrionDedicated.exe
App.ExecutableLinux=/usr/bin/xvfb-run
App.WorkingDir=530870
App.LinuxCommandLineArgs=-a wine "./DedicatedServer/EmpyrionDedicated.exe"
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} -batchmode -nographics -dedicated empyriondedicated.yaml -logFile -
App.UseLinuxIOREDIR=False
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"./linux64:%LD_LIBRARY_PATH%","SteamAppId":"383120"}
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=@IncludeJson[empyrion-galactic-survivalports.json]
App.AdminPortRef=TelnetPort
App.PrimaryApplicationPortRef=GamePort1
App.UniversalSleepApplicationUDPPortRef=GamePort1
App.UniversalSleepSteamQueryPortRef=SteamQueryPort
App.MaxUsers=8
App.UseRandomAdminPassword=True
App.RemoteAdminPassword=
App.AdminMethod=TelnetRCON
App.AdminLoginTransform=None
App.RCONConnectDelaySeconds=30
App.RCONConnectRetrySeconds=15
App.TelnetLoginFormat={0}
App.UpdateSources=@IncludeJson[empyrion-galactic-survivalupdates.json]
App.Compatibility=None
App.SteamUpdateAnonymousLogin=True
App.SteamForceLoginPrompt=False
App.RapidStartup=False
App.SupportsUniversalSleep=False
App.WakeupMode=Any
App.ApplicationReadyMode=RegexMatch
App.TemplateMatchRegex={{(\$?[\w]+)}}
App.MonitorChildProcess=True
App.MonitorChildProcessWaitMs=2000
App.MonitorChildProcessName=wine64
Console.FilterMatchRegex=
Console.FilterMatchReplacement=
Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$
Console.AppReadyRegex=^.*-LOG- Server started listening on port .*$
Console.UserJoinRegex=^.*-LOG-.*Player (?<userid>.+?)\/'(?<username>.+?)' login ok$
Console.UserLeaveRegex=^.*-LOG-.*, (?<userid>.+?)\/=\/'(?<username>.+?)' disconnected$
Console.UserChatRegex=^(?<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=True
Limits.SleepOnStart=False
Limits.SleepDelayMinutes=5
Limits.DozeDelay=2
Limits.AutoRetryCount=5
Limits.SleepStartThresholdSeconds=25

View File

@ -0,0 +1,395 @@
[
{
"DisplayName": "Server Port",
"Category": "Server Settings",
"Description": "Must be edited using the Edit Port button in ADS.",
"Keywords": "",
"FieldName": "$GamePort1",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_Port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Telnet Port",
"Category": "Server Settings",
"Description": "Must be edited using the Edit Port button in ADS.",
"Keywords": "",
"FieldName": "$TelnetPort",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Tel_Port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Telnet Password",
"Category": "Server Settings",
"Description": "Must be set using AMP.",
"Keywords": "",
"FieldName": "$RemoteAdminPassword",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Tel_Pwd",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Server Name",
"Category": "Server Settings",
"Description": "Name that will be shown in the Server Browser.",
"Keywords": "server,name",
"FieldName": "Srv_Name",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_Name",
"IncludeInCommandLine": false,
"DefaultValue": "AMP Powered Server",
"EnumValues": {}
},
{
"DisplayName": "Server Password",
"Category": "Server Settings",
"Description": "Password players will use to join the server.",
"Keywords": "server,Password",
"FieldName": "Srv_Password",
"InputType": "password",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_Password",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {}
},
{
"DisplayName": "Max Players ",
"Category": "Server Settings",
"Description": "Maximum number of player allowed to join simultaneously in the server.",
"Keywords": "Max,Players",
"FieldName": "$MaxUsers",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_MaxPlayers",
"IncludeInCommandLine": false,
"DefaultValue": "8",
"EnumValues": {}
},
{
"DisplayName": "Server Description",
"Category": "Server Settings",
"Description": "Server description shown in Server Browser, can contain [b]bold[/b] text or a [u][url=empyriongame.com]link[/url][/u].",
"Keywords": "Server,Description",
"FieldName": "Srv_Description",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_Description",
"IncludeInCommandLine": false,
"DefaultValue": "AMP Powered Empyrion Server",
"EnumValues": {}
},
{
"DisplayName": "Reserve Playfields",
"Category": "Server Settings",
"Description": "Determines the number of playfield servers that are held in reserve. For busy public servers.",
"Keywords": "Reserve,Playfields",
"FieldName": "Srv_ReservePlayfields",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_ReservePlayfields",
"IncludeInCommandLine": false,
"DefaultValue": "1",
"EnumValues": {}
},
{
"DisplayName": "Public Server",
"Category": "Server Settings",
"Description": "Set the following parameter to false if you want to hide your server in the Server Browser. If server is not visible you can connect via IP or via joining a friend's game.",
"Keywords": "public,server",
"FieldName": "Srv_Public",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_Public",
"IncludeInCommandLine": false,
"DefaultValue": "true",
"EnumValues": {
"True": "true",
"False": "false"
}
},
{
"DisplayName": "Stop Period",
"Category": "Server Settings",
"Description": "All playfield servers will be automatically stopped every <n> real time hours. Players will get some warning messages before.",
"Keywords": "Stop,Period",
"FieldName": "Srv_StopPeriod",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.Srv_StopPeriod",
"IncludeInCommandLine": false,
"DefaultValue": "48",
"EnumValues": {}
},
{
"DisplayName": "Enable EAC",
"Category": "Server Settings",
"Description": "Activate Easy Anti Cheat (clients have to enable EAC via Options -> Misc to connect to a EAC protected server).",
"Keywords": "enable,EAC",
"FieldName": "EACActive",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.EACActive",
"IncludeInCommandLine": false,
"DefaultValue": "true",
"EnumValues": {
"True": "true",
"False": "false"
}
},
{
"DisplayName": "Save Directory",
"Category": "Server Settings",
"Description": "Location of save game folder.",
"Keywords": "save,directory",
"FieldName": "SaveDirectory",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.SaveDirectory",
"IncludeInCommandLine": false,
"DefaultValue": "Saves",
"EnumValues": {}
},
{
"DisplayName": "Max Allowed Size Class",
"Category": "Server Settings",
"Description": "Restrict allowed Blueprint size class: restricted types are not allowed to be produced or spawned. 1 = allow only small blueprints, 10 = allow very large blueprints, 50 = allow gigantic blueprints, 0 = no limits. Warning: large blueprints can have very strong performance impact!",
"Keywords": "Max,Allowed,Size,Class",
"FieldName": "MaxAllowedSizeClass",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.MaxAllowedSizeClass",
"IncludeInCommandLine": false,
"DefaultValue": "10",
"EnumValues": {}
},
{
"DisplayName": "Allowed Blueprints",
"Category": "Server Settings",
"Description": "Restrict Blueprint types allowed for production in factory: None = Blueprint system completely disabled; StockOnly = only stock blueprints can be produced; All = all types allowed (default).",
"Keywords": "Allowed,Blueprints",
"FieldName": "AllowedBlueprints",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.AllowedBlueprints",
"IncludeInCommandLine": false,
"DefaultValue": "All",
"EnumValues": {
"All": "All",
"StockOnly": "Stock Only",
"None": "None"
}
},
{
"DisplayName": "Heartbeat Server",
"Category": "Server Settings",
"Description": "Timeout in seconds after which a playfield server process will be killed (and all players on it disconnected) if it no longer sends heartbeat messages to the dedicated server. (0 to disable)",
"Keywords": "Heartbeat,Server",
"FieldName": "HeartbeatServer",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.HeartbeatServer",
"IncludeInCommandLine": false,
"DefaultValue": "15",
"suffix": "sec",
"EnumValues": {}
},
{
"DisplayName": "Heartbeat Client",
"Category": "Server Settings",
"Description": "Timeout in seconds after which a client will be disconnected if it no longer sends heartbeat messages to the dedicated server. (0 to disable)",
"Keywords": "Heartbeat,Client",
"FieldName": "HeartbeatClient",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.HeartbeatClient",
"IncludeInCommandLine": false,
"DefaultValue": "30",
"suffix": "sec",
"EnumValues": {}
},
{
"DisplayName": "Log Flags",
"Category": "Server Settings",
"Description": "Determines the logging level.",
"Keywords": "Log,Flags,level",
"FieldName": "LogFlags",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.LogFlags",
"IncludeInCommandLine": false,
"DefaultValue": "0",
"EnumValues": {
"0": "No Extra",
"1": "EAC",
"2": "EAC + All Details"
}
},
{
"DisplayName": "Disable Family Sharing",
"Category": "Server Settings",
"Description": "Activate if you want to prohibit Steam Family Sharers from playing (only the game owner can then play).",
"Keywords": "Disable,Steam,Family,Sharing",
"FieldName": "DisableSteamFamilySharing",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.DisableSteamFamilySharing",
"IncludeInCommandLine": false,
"DefaultValue": "false",
"EnumValues": {
"True": "true",
"False": "false"
}
},
{
"DisplayName": "Kick Players With High Ping",
"Category": "Server Settings",
"Description": "Players with a ping higher than the value specified below will be locked out of the game. High ping can result in cheating.",
"Keywords": "Kick,Players,With,High,Ping",
"FieldName": "KickPlayerWithPing",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.KickPlayerWithPing",
"IncludeInCommandLine": false,
"DefaultValue": "300",
"suffix": "ms",
"EnumValues": {}
},
{
"DisplayName": "Timeout to Boot Playfield Server",
"Category": "Server Settings",
"Description": "Monitors booting playfield server processes, kills them if they time out ( 0 to disabled). Note: This is a conservative default, for faster servers 60 seconds should be ok.",
"Keywords": "Timeout,Booting,Playfield,server",
"FieldName": "TimeoutBootingPfServer",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.TimeoutBootingPfServer",
"IncludeInCommandLine": false,
"DefaultValue": "90",
"suffix": "sec",
"EnumValues": {}
},
{
"DisplayName": "Player Login Parallel Count",
"Category": "Server Settings",
"Description": "If specified, the number of parallel logins to a server are restricted to this number. This is important when you expect a big number of people to login at the same time.",
"Keywords": "Player,Login,Parallel,Count",
"FieldName": "PlayerLoginParallelCount",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.PlayerLoginParallelCount",
"IncludeInCommandLine": false,
"DefaultValue": "5",
"EnumValues": {}
},
{
"DisplayName": "Player Login VIP Names",
"Category": "Server Settings",
"Description": "Add steam ids for preferred players that will get a better position in the login queue. [Find your Steam64 ID](https://steamidfinder.com/)",
"Keywords": "Player,Login,Parallel,Count",
"FieldName": "PlayerLoginVipNames",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "ServerConfig.PlayerLoginVipNames",
"IncludeInCommandLine": false,
"DefaultValue": "",
"Placeholder": "123456789,123456788,123456787",
"EnumValues": {}
},
{
"DisplayName": "Game Name",
"Category": "Game Settings",
"Description": "Determines name of the save game.",
"Keywords": "Game,Name",
"FieldName": "GameName",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "GameConfig.GameName",
"IncludeInCommandLine": false,
"DefaultValue": "DediGame",
"EnumValues": {}
},
{
"DisplayName": "Game Mode",
"Category": "Game Settings",
"Description": "Game mode for the server.",
"Keywords": "Game,Mode",
"FieldName": "Mode",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "GameConfig.Mode",
"IncludeInCommandLine": false,
"DefaultValue": "Survival",
"EnumValues": {
"Survival": "Survival",
"Creative": "Creative"
}
},
{
"DisplayName": "World Seed",
"Category": "Game Settings",
"Description": "Any number up to 7 digits (Cannot be 0). The seed determines how the world is procedurally generated - the same seed means the same world.",
"Keywords": "World,Seed",
"FieldName": "Seed",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "GameConfig.Seed",
"IncludeInCommandLine": false,
"DefaultValue": "1011345",
"EnumValues": {}
},
{
"DisplayName": "Custom Scenario",
"Category": "Game Settings",
"Description": "Choose from premade scenarios.",
"Keywords": "Custom,Scenario",
"FieldName": "CustomScenario",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "GameConfig.CustomScenario",
"IncludeInCommandLine": false,
"DefaultValue": "Default Multiplayer",
"EnumValues": {
"_TestBaseAttackCS": "Test Base Attack CS",
"_TestEmpyrion-SE": "Test Empyrion SE",
"_TestScenario": "Test Scenario",
"_TestScenario2": "Test Scenario 2",
"Default Akua-Omicron": "Default Akua-Omicron",
"Default Base Attack": "Default Base Attack",
"Default Creative": "Default Creative",
"Default Multiplayer": "Default Multiplayer",
"Default Random": "Default Random",
"Invader vs Defender - Conflict of Cygnus": "Invader vs Defender - Conflict of Cygnus",
"Shadows of Starlight": "Shadows of Starlight",
"Tutorial": "Tutorial"
}
},
{
"DisplayName": "Release Stream",
"Category": "SteamCMD and Updates",
"Description": "\"public\" is default. Choose a custom release on [SteamDB](https://steamdb.info/app/530870/depots/).",
"Keywords": "use,experimental,release,stream",
"FieldName": "Stream",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "Stream",
"IncludeInCommandLine": false,
"DefaultValue": "public",
"Placeholder": "public",
"EnumValues": {}
}
]

View File

@ -0,0 +1,7 @@
[
{
"ConfigFile": "EmpyrionDedicated.yaml",
"AutoMap": true,
"ConfigType": "json"
}
]

View File

@ -0,0 +1,37 @@
[
{
"Protocol": "Both",
"Name": "Game Port 1",
"Description": "The port used for main game traffic",
"Port": 30000,
"Ref": "GamePort1"
},
{
"Protocol": "Both",
"Name": "Steam Query Port",
"Description": "The port used for Steam Queries",
"Port": 30001,
"Ref": "SteamQueryPort"
},
{
"Protocol": "Both",
"Name": "Game Port 3",
"Description": "The port used for unknown game traffic",
"Port": 30002,
"Ref": "GamePort3"
},
{
"Protocol": "Both",
"Name": "Game Port 4",
"Description": "The port used for unknown game traffic",
"Port": 30003,
"Ref": "GamePort4"
},
{
"Protocol": "TCP",
"Name": "Telnet Port",
"Description": "The port used for telnet console",
"Port": 30004,
"Ref": "TelnetPort"
}
]

View File

@ -0,0 +1,17 @@
[
{
"UpdateStageName": "SteamCMD Download",
"UpdateSourcePlatform": "All",
"UpdateSource": "SteamCMD",
"UpdateSourceData": "530870",
"ForceDownloadPlatform": "Windows",
"UpdateSourceVersion": "{{Stream}}"
},
{
"UpdateStageName": "Base Config Download",
"UpdateSourcePlatform": "All",
"UpdateSource": "FetchURL",
"UpdateSourceData": "https://github.com/IceOfWraith/AMPTemplates/raw/empyrion/empyriondedicated.yaml",
"UpdateSourceTarget": "./530870/"
}
]

33
empyriondedicated.yaml Normal file
View File

@ -0,0 +1,33 @@
{
"ServerConfig": {
"Srv_Port": 30000,
"Srv_Name": "AMP Powered Server",
"Srv_Password": "",
"Srv_MaxPlayers": 8,
"Srv_ReservePlayfields": 1,
"Srv_Description": "AMP Powered Empyrion Server",
"Srv_Public": true,
"Srv_StopPeriod": 48,
"Tel_Enabled": true,
"Tel_Port": 30004,
"Tel_Pwd": "",
"EACActive": true,
"SaveDirectory": "Saves",
"MaxAllowedSizeClass": 10,
"AllowedBlueprints": "All",
"HeartbeatServer": 15,
"HeartbeatClient": 30,
"LogFlags": 0,
"DisableSteamFamilySharing": false,
"KickPlayerWithPing": 300,
"TimeoutBootingPfServer": 90,
"PlayerLoginParallelCount": 5,
"PlayerLoginVipNames": ""
},
"GameConfig": {
"GameName": "DediGame",
"Mode": "Survival",
"Seed": 1011345,
"CustomScenario": "Default Multiplayer"
}
}