diff --git a/empyrion-galactic-survival.kvp b/empyrion-galactic-survival.kvp new file mode 100644 index 0000000..e244685 --- /dev/null +++ b/empyrion-galactic-survival.kvp @@ -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 (?.+?)\/'(?.+?)' login ok$ +Console.UserLeaveRegex=^.*-LOG-.*, (?.+?)\/=\/'(?.+?)' disconnected$ +Console.UserChatRegex=^(?.+?): (?.+)$ +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 diff --git a/empyrion-galactic-survivalconfig.json b/empyrion-galactic-survivalconfig.json new file mode 100644 index 0000000..ffcfffe --- /dev/null +++ b/empyrion-galactic-survivalconfig.json @@ -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 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": {} + } +] \ No newline at end of file diff --git a/empyrion-galactic-survivalmetaconfig.json b/empyrion-galactic-survivalmetaconfig.json new file mode 100644 index 0000000..f79f911 --- /dev/null +++ b/empyrion-galactic-survivalmetaconfig.json @@ -0,0 +1,7 @@ +[ + { + "ConfigFile": "EmpyrionDedicated.yaml", + "AutoMap": true, + "ConfigType": "json" + } +] diff --git a/empyrion-galactic-survivalports.json b/empyrion-galactic-survivalports.json new file mode 100644 index 0000000..a731d8f --- /dev/null +++ b/empyrion-galactic-survivalports.json @@ -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" + } +] \ No newline at end of file diff --git a/empyrion-galactic-survivalupdates.json b/empyrion-galactic-survivalupdates.json new file mode 100644 index 0000000..e21ce99 --- /dev/null +++ b/empyrion-galactic-survivalupdates.json @@ -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/" + } +] \ No newline at end of file diff --git a/empyriondedicated.yaml b/empyriondedicated.yaml new file mode 100644 index 0000000..43b29f3 --- /dev/null +++ b/empyriondedicated.yaml @@ -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" + } +} \ No newline at end of file