Add Icarus (#237)

This commit is contained in:
Greelan 2022-11-28 09:09:19 +11:00 committed by GitHub
parent 0d08f63bf3
commit 3361229bb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 454 additions and 0 deletions

79
icarus.kvp Normal file
View File

@ -0,0 +1,79 @@
Meta.DisplayName=Icarus
Meta.Description=Icarus Dedicated Server
Meta.OS=Windows
Meta.Arch=x86_64
Meta.Author=Greelan
Meta.URL=https://surviveicarus.com/
Meta.DisplayImageSource=steam:1149460
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$QueryPort}
Meta.ConfigManifest=icarusconfig.json
Meta.MetaConfigManifest=icarusmetaconfig.json
Meta.ConfigRoot=icarus.kvp
Meta.MinAMPVersion=2.4.0.10
Meta.SpecificDockerImage=
Meta.ContainerPolicy=NotSupported
Meta.ContainerPolicyReason=Icarus requires Winetricks when using Docker, which is currently not supported in AMP.
Meta.Prerequsites=[]
Meta.ConfigReleaseState=NotSpecified
App.DisplayName=Icarus
App.RootDir=./icarus/
App.BaseDirectory=./icarus/2089300/
App.ExecutableWin=2089300/Icarus/Binaries/Win64/IcarusServer-Win64-Shipping.exe
App.ExecutableLinux=
App.WorkingDir=2089300
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} Icarus -Port={{$GamePort}} -QueryPort={{$QueryPort}} {{StartupMode}}{{$FormattedArgs}} -stdout -FullStdOutLogOutput
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"1149460"}
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":17777,"Ref":"GamePort","Name":"Game Port","Description":"Port for game traffic"},{"Protocol":"UDP","Port":27015,"Ref":"QueryPort","Name":"Query Port","Description":"Port for Steam query traffic"}]
App.AdminPortRef=0
App.PrimaryApplicationPortRef=GamePort
App.UniversalSleepApplicationUDPPort=GamePort
App.UniversalSleepSteamQueryPort=QueryPort
App.MaxUsers=8
App.UseRandomAdminPassword=False
App.RemoteAdminPassword=Password123
App.AdminMethod=STDIO
App.AdminLoginTransform=None
App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=5
App.UpdateSources=[{"UpdateStageName":"SteamCMD Download","UpdateSourcePlatform":"All","UpdateSource":"SteamCMD","UpdateSourceData":"2089300","ForceDownloadPlatform":"Windows"},{"UpdateStageName":"Create Config Directory","UpdateSourcePlatform":"All","UpdateSource":"CreateDirectory","UpdateSourceArgs":"{{$FullBaseDir}}Icarus/Saved/Config/WindowsServer","OverwriteExistingFiles":false},{"UpdateStageName":"Config File Download","UpdateSourcePlatform":"All","UpdateSource":"FetchURL","UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/icarusserversettings.ini","UpdateSourceArgs":"ServerSettings.ini","UpdateSourceTarget":"{{$FullBaseDir}}Icarus/Saved/Config/WindowsServer/","OverwriteExistingFiles":false}]
App.Compatibility=None
App.SteamUpdateAnonymousLogin=True
App.SteamForceLoginPrompt=False
App.RapidStartup=False
App.MonitorChildProcess=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.+|\d+:err:ole:.*|Could not find Wine Gecko.*)$
Console.AppReadyRegex=^\[[\d\.]+-[\d\.:]+\]\[[\d ]+\]LogInit: Display: Game Engine Initialized\.$
Console.UserJoinRegex=^\[[\d\.]+-[\d\.:]+\]\[[\d ]+\]LogConnectedPlayers: Display: AddConnectedPlayer - UserId: (?<userid>.+?) \| PlayerName: (?<username>.+)$
Console.UserLeaveRegex=^\[[\d\.]+-[\d\.:]+\]\[[\d ]+\]LogOnline: STEAM: (?<userid>.+?) has been removed\.$
Console.UserChatRegex=^$
Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$
Console.SuppressLogAtStart=False
Console.ActivateLogRegex=
Console.UserActions={}
Limits.SleepMode=False
Limits.SleepOnStart=False
Limits.SleepDelayMinutes=5
Limits.DozeDelay=2
Limits.AutoRetryCount=5

356
icarusconfig.json Normal file
View File

@ -0,0 +1,356 @@
[
{
"DisplayName":"Load Prospect",
"Category":"Icarus Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"LoadProspect",
"InputType":"text",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.LoadProspect",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Create Prospect",
"Category":"Icarus Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"CreateProspect",
"InputType":"text",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.CreateProspect",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Resume Prospect",
"Category":"Icarus Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"ResumeProspect",
"InputType":"text",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.ResumeProspect",
"IncludeInCommandLine":false,
"DefaultValue":"False",
"EnumValues":{}
},
{
"DisplayName":"Session Name",
"Category":"Icarus Server Settings",
"Description":"Sets the session name for the server to be displayed in the server browser. Limit of 64 characters",
"Keywords":"session,name",
"FieldName":"SessionName",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"SteamServerName",
"IncludeInCommandLine":true,
"SkipIfEmpty":true,
"DefaultValue":"AMP Powered Icarus Server",
"EnumValues":{}
},
{
"DisplayName":"Session Name",
"Category":"Icarus Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"SessionName",
"InputType":"text",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.SessionName",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Server Password",
"Category":"Icarus Server Settings",
"Description":"Sets the password to join the server. Default is no password",
"Keywords":"server,password",
"FieldName":"JoinPassword",
"InputType":"password",
"IsFlagArgument":false,
"ParamFieldName":"JoinPassword",
"IncludeInCommandLine":true,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Server Password",
"Category":"Icarus Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"JoinPassword",
"InputType":"text",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.JoinPassword",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"RCON Password",
"Category":"Icarus Server Settings",
"Description":"Sets the admin RCON password. Default is a random, strong password",
"Keywords":"rcon,admin,password",
"FieldName":"AdminPassword",
"InputType":"password",
"IsFlagArgument":false,
"ParamFieldName":"AdminPassword",
"IncludeInCommandLine":true,
"DefaultValue":"{{newguid()}}",
"EnumValues":{}
},
{
"DisplayName":"RCON Password",
"Category":"Icarus Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"AdminPassword",
"InputType":"text",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.AdminPassword",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Player Limit",
"Category":"Icarus Server Settings",
"Description":"Maximum number of players that may connect to the server",
"Keywords":"players,limit",
"FieldName":"$MaxUsers",
"InputType":"number",
"MinValue":"1",
"MaxValue":"8",
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.MaxPlayers",
"IncludeInCommandLine":false,
"DefaultValue":"8",
"Suffix":"players",
"EnumValues":{}
},
{
"DisplayName":"Server IP Binding",
"Category":"Icarus Server Settings",
"Description":"Sets the binding of the server. Default is blank (all IPs). Change to internal interface IP only if the server has issues",
"Keywords":"ip,binding,localip,address,multihome",
"FieldName":"MultiHome",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"MultiHome",
"IncludeInCommandLine":true,
"SkipIfEmpty":true,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Startup Mode",
"Category":"Icarus Server Settings",
"Description":"Sets the server startup mode. For \"Load existing prospect\", the Prospect Save Name must be set and the file must exist. For \"Create and launch new prospect\", the Prospect Type must be set; if no Prospect Save Name is set, a random save name will be created for regular prospects",
"Keywords":"startup,mode,load,create,resume",
"FieldName":"StartupMode",
"InputType":"enum",
"IsFlagArgument":false,
"ParamFieldName":"StartupMode",
"IncludeInCommandLine":false,
"DefaultValue":"-CreateProspect=\"{{ProspectType}} {{Difficulty}} {{Hardcore}} {{ProspectSaveName}}\" ",
"EnumValues":{
"":"Wait in lobby",
"-CreateProspect=\"{{ProspectType}} {{Difficulty}} {{Hardcore}} {{ProspectSaveName}}\" ":"Create and launch new prospect (default)",
"-LoadProspect={{ProspectSaveName}} ":"Load existing prospect",
"-ResumeProspect ":"Resume last prospect"
}
},
{
"DisplayName":"Prospect Save Name",
"Category":"Icarus Server Settings",
"Description":"Sets the save name of the specific prospect to be loaded or created",
"Keywords":"prospect,save,name",
"FieldName":"ProspectSaveName",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"ProspectSaveName",
"IncludeInCommandLine":false,
"DefaultValue":"DefaultProspect01",
"EnumValues":{}
},
{
"DisplayName":"Prospect Type",
"Category":"Icarus Server Settings",
"Description":"Sets the prospect type to create a prospect with",
"Keywords":"prospect,type",
"FieldName":"ProspectType",
"InputType":"enum",
"IsFlagArgument":false,
"ParamFieldName":"ProspectType",
"IncludeInCommandLine":false,
"DefaultValue":"Tier1_Forest_Recon_0",
"EnumValues":{
"STYX_C_Construction":"Construction: Alcazar",
"STYX_A_Construction":"Construction: Highrise",
"Tier1_Forest_Construction":"Construction: Homestead",
"Tier2_Glacier_Construction_0":"Construction: Influx",
"Tier3_RiverLands_Construction":"Construction: Life Line",
"Tier2_Canyon_Construction_0":"Construction: Pyramid",
"Tier4_Desert_Construction_0":"Construction: Sandbox",
"Tier3_RiverLands_Delivery":"Delivery: Fire Walk",
"STYX_D_Delivery":"Delivery: Rendezvous",
"Tier4_Arctic_Expedition_0":"Expedition: Avalanche",
"Tier2_Canyon_Expedition_0":"Expedition: Dry Run",
"Tier4_Desert_Expedition_0":"Expedition: El Camino",
"Tier2_Glacier_Expedition_0":"Expedition: Icestorm",
"STYX_B_Expedition":"Expedition: Maelstrom",
"STYX_A_Expedition":"Expedition: Omphalos",
"STYX_C_Expedition":"Expedition: Ricochet",
"STYX_E_Expedition":"Expedition: Vertigo",
"Tier3_RiverLands_Expedition_0":"Expedition: Waterfall",
"STYX_D_Expedition":"Expedition: Zephyr",
"STYX_B_Exploration":"Exploration: Adagio",
"Tier1_Forest_Exploration_0":"Exploration: Argos",
"STYX_D_Exploration":"Exploration: Cavalcade",
"STYX_E_Exploration":"Exploration: Dust",
"Tier3_RiverLands_Exploration_0":"Exploration: Edelweiss",
"STYX_A_Exploration":"Exploration: Headlong",
"Tier2_Glacier_Exploration_0":"Exploration: High Wire",
"STYX_C_Exploration":"Exploration: Kismet",
"Tier4_Desert_Exploration_0":"Exploration: Promised Land",
"Tier2_Canyon_Exploration_0":"Exploration: Sandblast",
"Tier5_Omni_Exploration_0":"Exploration: Spirit Walk",
"Tier4_Arctic_Exploration_0":"Exploration: Tundra",
"STYX_C_Extermination2":"Extermination: Augmentation",
"STYX_C_Extermination":"Extermination: Ballistic",
"Tier4_Arctic_Extermination_0":"Extermination: Clean Up",
"Tier4_Desert_Extermination_0":"Extermination: Dust Up",
"STYX_B_Extermination":"Extermination: Halcyon",
"STYX_A_Extermination":"Extermination: Husk",
"Tier1_Forest_Extermination_0":"Extermination: Kill List",
"Tier4_Desert_Extermination_2":"Extermination: Loose Ends",
"STYX_D_Extermination":"Extermination: Lupine",
"Tier3_RiverLands_Extermination_0":"Extermination: Wet Work",
"Tier2_Glacier_Extraction_0":"Extraction: Deep Vein",
"Tier3_RiverLands_Extraction":"Extraction: Meridian",
"Tier4_Arctic_Extraction_0":"Extraction: Payday",
"Tier1_Farming":"Hydroponics: Agriculture",
"Outpost002_Forest":"Outpost: Arcwood",
"Outpost005_Forest":"Outpost: Holdfast",
"Outpost003_Arctic":"Outpost: Iceholm",
"Outpost006_Olympus":"Outpost: Olympus",
"OpenWorld_Styx":"Outpost: Styx",
"Tier1_Forest_Recon_0":"Recon: Beachhead (default)",
"Tier2_Glacier_Recovery_0":"Recovery: Broken Arrow",
"Tier4_Desert_Recovery":"Recovery: Concealment",
"Tier2_Canyon_Recovery_0":"Recovery: Field Test",
"Tier1_Forest_Defence":"Recovery: Forsaken",
"Tier4_Arctic_Recovery_0":"Recovery: Snowcrash",
"Tier5_Omni_Recovery":"Recovery: Voyager",
"STYX_D_Research_2":"Research: Abyss",
"Tier2_Canyon_Research_0":"Research: Bioshock",
"Tier4_Desert_Research_2":"Research: Carapace",
"Tier5_Omni_Research_2":"Research: Cryogenic",
"STYX_E_Research":"Research: Flatline",
"STYX_D_Research":"Research: Gossamer",
"Tier4_Desert_Research_0":"Research: Nightwatch",
"Tier2_Glacier_Research_0":"Research: Resurgence",
"Tier1_Forest_Research_0":"Research: Strange Harvest",
"Tier5_Omni_Research":"Research: Unearthed",
"Tier3_RiverLands_Research_0":"Research: Uplift",
"Tier2_Canyon_Scan_0":"Scan: Death Ray",
"Tier3_RiverLands_Scan_0":"Scan: Incursion",
"Tier1_Forest_Scan_0":"Scan: Livewire",
"Tier2_Glacier_Scan_0":"Scan: Searchlight",
"Tier4_Desert_Scan_0":"Scan: Seven Pillars",
"Tier4_Arctic_Scan_0":"Scan: Snowblind",
"Tier4_Arctic_Stockpile":"Stockpile: Advanced Order",
"Tier1_Forest_Stockpile":"Stockpile: Agriculture",
"Tier3_RiverLands_Stockpile_2":"Stockpile: Big Shot",
"STYX_B_Stockpile":"Stockpile: Opulence",
"Tier2_Canyon_Stockpile2":"Stockpile: Preservation",
"Tier3_RiverLands_Stockpile_0":"Stockpile: Ramp Up",
"Tier2_Canyon_Stockpile":"Stockpile: Solid Metal",
"Tier1_Forest_WS_Stockpile":"Stockpile: Spelunking",
"Tier3_RiverLands_Survey_0":"Survey: Clustered",
"STYX_E_Survey":"Survey: Crescendo",
"Tier1_Forest_Survey_0":"Survey: Headstone",
"Tier2_Glacier_Survey_0":"Survey: Ice Line",
"Tier4_Desert_Survey":"Survey: Migrating Sands",
"Tier5_Omni_Olympus":"Survey: Nightfall",
"Tier2_Canyon_LongSurvey_0":"Survey: Sandy Bridges",
"Tier2_Canyon_Survey_0":"Survey: Spirit Level",
"Tier4_Arctic_Survey_0":"Survey: Station To Station",
"Tier1_Forest_Range":"Training: Potshot"
}
},
{
"DisplayName":"Difficulty Level",
"Category":"Icarus Server Settings",
"Description":"Sets the difficulty level to create a prospect with",
"Keywords":"difficulty,level",
"FieldName":"Difficulty",
"InputType":"enum",
"IsFlagArgument":false,
"ParamFieldName":"Difficulty",
"IncludeInCommandLine":false,
"DefaultValue":"2",
"EnumValues":{
"1":"Easy",
"2":"Medium / Normal (default)",
"3":"Hard",
"4":"Extreme"
}
},
{
"DisplayName":"Enable Hardcore",
"Category":"Icarus Server Settings",
"Description":"If set, harcore mode will be enabled when creating a prospect (respawns will be disabled)",
"Keywords":"hardcore",
"FieldName":"Hardcore",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"Hardcore",
"IncludeInCommandLine":false,
"DefaultValue":"False",
"EnumValues":{
"False":"False",
"True":"True"
}
},
{
"DisplayName":"No Join Shutdown Interval",
"Category":"Icarus Server Settings",
"Description":"Sets the period after which the server will exit a prospect and return to the lobby, if no player has joined. -1 = run indefinitely, 0 = return to lobby immediately, >0 = interval for shutdown. Note that data loss/corruption may occur if the server is shut down in AMP before returning to the lobby",
"Keywords":"shutdown,not,joined,interval",
"FieldName":"ShutdownIfNotJoinedFor",
"InputType":"number",
"MinValue":"-1",
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.ShutdownIfNotJoinedFor",
"IncludeInCommandLine":false,
"DefaultValue":"300",
"Placeholder":"300",
"Suffix":"seconds",
"EnumValues":{}
},
{
"DisplayName":"Empty Shutdown Interval",
"Category":"Icarus Server Settings",
"Description":"Sets the period after which the server will exit a prospect and return to the lobby, if the server becomes empty. -1 = run indefinitely, 0 = return to lobby immediately, >0 = interval for shutdown. Note that data loss/corruption may occur if the server is shut down in AMP before returning to the lobby",
"Keywords":"shutdown,not,joined,interval",
"FieldName":"ShutdownIfEmptyFor",
"InputType":"number",
"MinValue":"-1",
"IsFlagArgument":false,
"ParamFieldName":"/Script/Icarus.DedicatedServerSettings.ShutdownIfEmptyFor",
"IncludeInCommandLine":false,
"DefaultValue":"300",
"Placeholder":"300",
"Suffix":"seconds",
"EnumValues":{}
}
]

8
icarusmetaconfig.json Normal file
View File

@ -0,0 +1,8 @@
[
{
"ConfigFile":"Icarus/Saved/Config/WindowsServer/ServerSettings.ini",
"AutoMap":true,
"ConfigType":"ini",
"ConfigFormatRegex":"^(?<key>.+?)=(?<value>.*?)$"
}
]

11
icarusserversettings.ini Normal file
View File

@ -0,0 +1,11 @@
[/Script/Icarus.DedicatedServerSettings]
SessionName=AMP Powered Icarus Server
JoinPassword=
MaxPlayers=8
AdminPassword=Password123
ShutdownIfNotJoinedFor=300
ShutdownIfEmptyFor=300
LoadProspect=
CreateProspect=
ResumeProspect=False
LastProspectName=