From b1d6d01ea6d0ea3305975d3395684f6a3cdfe331 Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Fri, 27 Oct 2023 19:03:17 +1100 Subject: [PATCH] Add Astro Colony --- astro-colony.kvp | 101 ++++++++++++++++++++++ astro-colonyconfig.json | 153 +++++++++++++++++++++++++++++++++ astro-colonymetaconfig.json | 7 ++ astro-colonyports.json | 16 ++++ astro-colonyserversettings.ini | 10 +++ astro-colonyupdates.json | 40 +++++++++ 6 files changed, 327 insertions(+) create mode 100644 astro-colony.kvp create mode 100644 astro-colonyconfig.json create mode 100644 astro-colonymetaconfig.json create mode 100644 astro-colonyports.json create mode 100644 astro-colonyserversettings.ini create mode 100644 astro-colonyupdates.json diff --git a/astro-colony.kvp b/astro-colony.kvp new file mode 100644 index 0000000..39b8f0c --- /dev/null +++ b/astro-colony.kvp @@ -0,0 +1,101 @@ +Meta.DisplayName=Astro Colony +Meta.Description=Astro Colony Dedicated Server +Meta.OS=Windows, Linux +Meta.AarchSupport=Unknown +Meta.Arch=x86_64 +Meta.Author=Greelan +Meta.URL=https://astrocolony.com/ +Meta.DisplayImageSource=steam:1614550 +Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$SteamQueryPort} +Meta.ConfigManifest=astro-colonyconfig.json +Meta.MetaConfigManifest=astro-colonymetaconfig.json +Meta.ConfigRoot=astro-colony.kvp +Meta.MinAMPVersion=2.4.6.6 +Meta.SpecificDockerImage=cubecoders/ampbase:wine +Meta.DockerRequired=False +Meta.DockerBaseReadOnly=False +Meta.ContainerPolicy=SupportedOnWindows, RecommendedOnLinux +Meta.ContainerPolicyReason=The server requires Wine 8 to run on Linux. Using a container avoids the need to install this dependency on the host. +Meta.ExtraSetupStepsURI= +Meta.Prerequsites=[] +Meta.ExtraContainerPackages=[] +Meta.ConfigReleaseState=NotSpecified +Meta.NoCommercialUsage=False +Meta.ConfigVersion=0.0.0.0 +Meta.ReleaseNotes= +Meta.BreakingReleaseNotes= +App.DisplayName=Astro Colony +App.RootDir=./astro-colony/ +App.BaseDirectory=./astro-colony/2662210/ +App.SteamWorkshopDownloadLocation= +App.ExecutableWin=2662210\AstroColony\Binaries\Win64\AstroColonyServer.exe +App.ExecutableLinux=/usr/bin/wine +App.WorkingDir=2662210 +App.LinuxCommandLineArgs="./AstroColony/Binaries/Win64/AstroColonyServer.exe" +App.WindowsCommandLineArgs= +App.CommandLineArgs={{$PlatformArgs}} AstroColony -Port={{$GamePort}} -QueryPort={{$SteamQueryPort}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput +App.UseLinuxIOREDIR=False +App.AppSettings={} +App.EnvironmentVariables={"SteamAppId":"1614550","WINEPREFIX":"{{$FullRootDir}}.wine","WINEARCH":"win64","WINEDEBUG":"-all"} +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[astro-colonyports.json] +App.AdminPortRef=0 +App.PrimaryApplicationPortRef=GamePort +App.UniversalSleepApplicationUDPPortRef=GamePort +App.UniversalSleepSteamQueryPortRef=SteamQueryPort +App.MaxUsers=5 +App.UseRandomAdminPassword=False +App.PersistRandomPassword=False +App.RemoteAdminPassword= +App.AdminMethod=STDIO +App.AdminLoginTransform=None +App.LoginTransformPrefix= +App.RCONConnectDelaySeconds=5 +App.RCONConnectRetrySeconds=5 +App.RCONHeartbeatMinutes=0 +App.RCONHeartbeatCommand=ping +App.TelnetLoginFormat={0} +App.UpdateSources=@IncludeJson[astro-colonyupdates.json] +App.PreStartStages=[] +App.ForceUpdate=False +App.ForceUpdateReason= +App.Compatibility=None +App.SteamUpdateAnonymousLogin=True +App.SteamForceLoginPrompt=False +App.RapidStartup=False +App.MonitorChildProcess=True +App.DumpFullChildProcessTree=False +App.MonitorChildProcessWaitMs=100 +App.MonitorChildProcessName=AstroColonyServer.exe +App.SupportsUniversalSleep=False +App.WakeupMode=Any +App.ApplicationReadyMode=RegexMatch +App.TemplateMatchRegex={{(\$?[\w]+)}} +Console.FilterMatchRegex= +Console.FilterMatchReplacement= +Console.ThrowawayMessageRegex= +Console.AppReadyRegex=^\[[\d.]+-[\d.:]+\]\[[\d ]+\]LogBlueprintUserMessages: \[BP_DedicatedServerPlayerController_C_\d+\] server create success$ +Console.UserJoinRegex=^$ +Console.UserLeaveRegex=^$ +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/astro-colonyconfig.json b/astro-colonyconfig.json new file mode 100644 index 0000000..be3a23b --- /dev/null +++ b/astro-colonyconfig.json @@ -0,0 +1,153 @@ +[ + { + "DisplayName":"Important Information", + "Category":"Server Settings", + "Description":"Currently, you must ensure that the Game Port allocated in AMP is 7777, otherwise clients will not be able to connect to the server", + "Keywords":"game,port", + "FieldName":"port", + "InputType":"hidden", + "ParamFieldName":"port", + "EnumValues":{} + }, + { + "DisplayName":"Server Name", + "Category":"Server Settings", + "Description":"Sets the name of the server to be displayed in the server list", + "Keywords":"server,name,ServerName", + "FieldName":"ServerName", + "InputType":"text", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.ServerName", + "DefaultValue":"AMP Powered Astro Colony Server", + "Placeholder":"AMP Powered Astro Colony Server", + "EnumValues":{} + }, + { + "DisplayName":"Server Name", + "Category":"Server Settings", + "Description":"", + "Keywords":"", + "FieldName":"ServerName", + "InputType":"text", + "Hidden":true, + "ParamFieldName":"SteamServerName", + "IncludeInCommandLine":true, + "EnumValues":{} + }, + { + "DisplayName":"Server Password", + "Category":"Server Settings", + "Description":"Sets the password required to connect to the server. Default is no password", + "Keywords":"server,password,ServerPassword", + "FieldName":"ServerPassword", + "InputType":"password", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.ServerPassword", + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Map Name", + "Category":"Server Settings", + "Description":"Sets the map name", + "Keywords":"map,name,MapName", + "FieldName":"MapName", + "InputType":"text", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.MapName", + "DefaultValue":"MyAstroColony", + "Placeholder":"MyAstroColony", + "EnumValues":{} + }, + { + "DisplayName":"Player Limit", + "Category":"Server Settings", + "Description":"Sets the maximum number of players that may connect to the server at one time", + "Keywords":"maximum,players,clients,limit,MaxPlayers", + "FieldName":"$MaxUsers", + "InputType":"number", + "MinValue":"1", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.MaxPlayers", + "DefaultValue":"5", + "Placeholder":"5", + "Suffix":"players", + "EnumValues":{} + }, + { + "DisplayName":"Server Admins", + "Category":"Server Settings", + "Description":"Comma separated list of [Steam64 IDs](https://www.steamidfinder.com/) of server admins", + "Keywords":"server,admins,ServerAdminAccounts", + "FieldName":"AdminList", + "InputType":"text", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.AdminList", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Savegame Name", + "Category":"Server Settings", + "Description":"Sets the name of the savegame (excluding the .sav extension) to load on server start. Will be overridden by Load Latest Savegame if enabled", + "Keywords":"savegame,name,SavegameName", + "FieldName":"SavegameName", + "InputType":"text", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.SavegameName", + "DefaultValue":"MyAstroColony", + "DefaultValue":"MyAstroColony", + "EnumValues":{} + }, + { + "DisplayName":"Load Latest Savegame", + "Category":"Server Settings", + "Description":"If enabled, the latest savegame will be loaded on server start", + "Keywords":"load,latest,savegame,ShouldLoadLatestSavegame", + "FieldName":"ShouldLoadLatestSavegame", + "InputType":"checkbox", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.ShouldLoadLatestSavegame", + "DefaultValue":"True", + "EnumValues":{ + "False":"False", + "True":"True" + } + }, + { + "DisplayName":"Enable Shared Technologies", + "Category":"Server Settings", + "Description":"If enabled, technologies will be shared between players, so that research is not duplicated", + "Keywords":"shared,technologies,research,SharedTechnologies", + "FieldName":"SharedTechnologies", + "InputType":"checkbox", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.SharedTechnologies", + "DefaultValue":"True", + "EnumValues":{ + "False":"False", + "True":"True" + } + }, + { + "DisplayName":"Enable Oxygen Consumption", + "Category":"Server Settings", + "Description":"If enabled, players will consume oxygen. If disabled, oxygen will not be required by players", + "Keywords":"oxygen,consumption,OxygenConsumption", + "FieldName":"OxygenConsumption", + "InputType":"checkbox", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.OxygenConsumption", + "DefaultValue":"True", + "EnumValues":{ + "False":"False", + "True":"True" + } + }, + { + "DisplayName":"Enable Free Construction", + "Category":"Server Settings", + "Description":"If enabled, construction will be allowed without cost or spending of resources", + "Keywords":"free,construction,cost,resources,FreeConstruction", + "FieldName":"FreeConstruction", + "InputType":"checkbox", + "ParamFieldName":"/Script/AstroColony.EHServerSubsystem.FreeConstruction", + "DefaultValue":"False", + "EnumValues":{ + "False":"False", + "True":"True" + } + } +] \ No newline at end of file diff --git a/astro-colonymetaconfig.json b/astro-colonymetaconfig.json new file mode 100644 index 0000000..e93f2e9 --- /dev/null +++ b/astro-colonymetaconfig.json @@ -0,0 +1,7 @@ +[ + { + "ConfigFile":"AstroColony/Saved/Config/WindowsServer/ServerSettings.ini", + "ConfigType":"ini", + "AutoMap":true + } +] \ No newline at end of file diff --git a/astro-colonyports.json b/astro-colonyports.json new file mode 100644 index 0000000..951a066 --- /dev/null +++ b/astro-colonyports.json @@ -0,0 +1,16 @@ +[ + { + "Protocol":"UDP", + "Port":"7777", + "Ref":"GamePort", + "Name":"Game Port", + "Description":"Port used for main game traffic" + }, + { + "Protocol":"UDP", + "Port":"27015", + "Ref":"SteamQueryPort", + "Name":"Steam Query Port", + "Description":"Port used for Steam query traffic" + } +] \ No newline at end of file diff --git a/astro-colonyserversettings.ini b/astro-colonyserversettings.ini new file mode 100644 index 0000000..3007875 --- /dev/null +++ b/astro-colonyserversettings.ini @@ -0,0 +1,10 @@ +[/Script/AstroColony.EHServerSubsystem] +ServerPassword= +MapName=MyAstroColony +MaxPlayers=5 +SavegameName=MyAstroColony +ShouldLoadLatestSavegame=True +AdminList= +SharedTechnologies=True +OxygenConsumption=True +FreeConstruction=False diff --git a/astro-colonyupdates.json b/astro-colonyupdates.json new file mode 100644 index 0000000..691dccc --- /dev/null +++ b/astro-colonyupdates.json @@ -0,0 +1,40 @@ +[ + { + "UpdateStageName":"SteamCMD Server Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"SteamCMD", + "UpdateSourceData":"2662210", + "UpdateSourceArgs":"1614550", + "ForceDownloadPlatform":"Windows" + }, + { + "UpdateStageName":"SteamCMD Component Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"SteamCMD", + "UpdateSourceData":"1007", + "UpdateSourceTarget":"{{$FullBaseDir}}AstroColony/Binaries/Win64", + "ForceDownloadPlatform":"Windows" + }, + { + "UpdateStageName":"Config Directory Creation", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateDirectory", + "UpdateSourceArgs":"{{$FullBaseDir}}AstroColony/Saved/Config/WindowsServer" + }, + { + "UpdateStageName":"Config File Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://raw.githubusercontent.com/Greelan/AMPTemplates/dev/astro-colonyserversettings.ini", + "UpdateSourceTarget":"{{$FullBaseDir}}AstroColony/Saved/Config/WindowsServer", + "UpdateSourceArgs":"ServerSettings.ini", + "OverwriteExistingFiles":false + }, + { + "UpdateStageName":"Initialise Wine", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c 'WINEPREFIX=\"{{$FullRootDir}}.wine\" WINEARCH=win64 /usr/bin/wineboot --init --update'" + } +] \ No newline at end of file