Satisfactory: various updates (#420)

This commit is contained in:
Greelan 2023-07-17 17:33:16 +10:00 committed by GitHub
parent 6c303ec80f
commit d770df1024
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 285 additions and 48 deletions

View File

@ -1,42 +1,100 @@
App.AdminMethod=STDIO
App.ApplicationPort1=7777
App.ApplicationPort2=15000
App.ApplicationPort3=15777
App.RemoteAdminPort=0
App.ApplicationReadyMode=RegexMatch
App.BaseDirectory=./satisfactory/1690800/
App.WindowsCommandLineArgs=FactoryGame -log -unattended
App.LinuxCommandLineArgs=FactoryGame -log -unattended
App.CommandLineArgs={{$PlatformArgs}} -MultiHome={{$ApplicationIPBinding}} ?listen -Port={{$ApplicationPort1}} -BeaconPort={{$ApplicationPort2}} -ServerQueryPort={{$ApplicationPort3}} {{$FormattedArgs}}
App.CommandLineParameterDelimiter=
App.CommandLineParameterFormat=-{0}="{1}"
Meta.DisplayName=Satisfactory
Meta.Description=Satisfactory Dedicated Server
Meta.OS=Windows, Linux
Meta.AarchSupport=Unknown
Meta.Arch=x86_64
Meta.Author=Greelan, CubeCoders Limited
Meta.URL=https://www.satisfactorygame.com/
Meta.DisplayImageSource=steam:526870
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$ApplicationPort3}
Meta.ConfigManifest=satisfactoryconfig.json
Meta.MetaConfigManifest=satisfactorymetaconfig.json
Meta.ConfigRoot=satisfactory.kvp
Meta.MinAMPVersion=2.3.4.0
Meta.SpecificDockerImage=
Meta.DockerRequired=False
Meta.ContainerPolicy=Supported
Meta.ContainerPolicyReason=
Meta.ExtraSetupStepsURI=
Meta.Prerequsites=[]
Meta.ExtraContainerPackages=[]
Meta.ConfigReleaseState=NotSpecified
Meta.NoCommercialUsage=False
Meta.ConfigVersion=0.0.0.0
Meta.ReleaseNotes=
Meta.BreakingReleaseNotes=
App.DisplayName=Satisfactory
App.EnvironmentVariables={"LD_LIBRARY_PATH": "{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%", "SteamAppId": "526870"}
App.ExecutableLinux=1690800/Engine/Binaries/Linux/UE4Server-Linux-Shipping
App.RootDir=./satisfactory/
App.BaseDirectory=./satisfactory/1690800/
App.SteamWorkshopDownloadLocation=
App.ExecutableWin=1690800\Engine\Binaries\Win64\UE4Server-Win64-Shipping.exe
App.ExecutableLinux=1690800/Engine/Binaries/Linux/UE4Server-Linux-Shipping
App.WorkingDir=1690800
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} FactoryGame -MultiHome={{$ApplicationIPBinding}} -Port={{$ApplicationPort1}} -BeaconPort={{$ApplicationPort2}} -ServerQueryPort={{$ApplicationPort3}} {{$FormattedArgs}} -log -unattended
App.UseLinuxIOREDIR=False
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"526870"}
App.CommandLineParameterFormat=-{0}={1}
App.CommandLineParameterDelimiter=
App.ExitMethod=OS_CLOSE
App.ExitTimeout=10
App.HasReadableConsole=true
App.HasWritableConsole=true
App.RapidStartup=false
App.RootDir=./satisfactory/
App.UpdateSource=Multi
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":15777,"Offset":0,"Range":1,"Ref":"ApplicationPort3","Name":"Server Query Port","Description":"Port used to connect to server in-game","ChildPorts":null},{"Protocol":"UDP","Port":15000,"Offset":0,"Range":1,"Ref":"ApplicationPort2","Name":"Beacon Port","Description":"","ChildPorts":null},{"Protocol":"UDP","Port":7777,"Offset":0,"Range":1,"Ref":"ApplicationPort1","Name":"Game Port","Description":"Port for main game traffic","ChildPorts":null}]
App.AdminPortRef=0
App.PrimaryApplicationPortRef=ApplicationPort3
App.UniversalSleepApplicationUDPPortRef=ApplicationPort1
App.UniversalSleepSteamQueryPortRef=ApplicationPort3
App.MaxUsers=4
App.UseRandomAdminPassword=False
App.PersistRandomPassword=True
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[satisfactoryupdates.json]
App.WorkingDir=1690800
App.PreStartStages=[]
App.ForceUpdate=False
App.ForceUpdateReason=
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.AppReadyRegex=^LogWorld: Bringing up level for play took: [\d\.]+$|^LogInit: Display: Starting Game\.$
Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$
Console.UserChatRegex=
Console.AppReadyRegex=^LogWorld: Bringing up level for play took: [\d\.]+|LogInit: Display: Starting Game\.$
Console.UserJoinRegex=^User (?<username>.+?) \((?<userid>-?d+)\) connected from \[::ffff:(?<endpoint>.+?)\]$
Console.UserLeaveRegex=^User (?<username>.+?) \((?<userid>-?d+)\) disconnected\. Reason: (.+?)$
Meta.Author=CubeCoders Limited
Meta.ConfigRoot=satisfactory.kvp
Meta.ConfigManifest=satisfactoryconfig.json
Meta.Description=
Meta.DisplayImageSource=steam:526870
Meta.DisplayName=Satisfactory
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.ApplicationPort3}
Meta.OS=3
Meta.URL=https://store.steampowered.com/app/526870/Satisfactory/
Meta.MinAMPVersion=2.3.4.0
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

View File

@ -1,17 +1,173 @@
[
{
"DisplayName": "Server Release Stream",
"Description": "Which release stream should be used to Update the server",
"Category": "SteamCMD and Updates",
"FieldName": "releasestream",
"ParamFieldName": "releasestream",
"IncludeInCommandLine": false,
"InputType": "enum",
"EnumValues": {
"public": "Early Access",
"experimental": "Experimental"
{
"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,limit,maxplayers",
"FieldName":"$MaxUsers",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"ini:Game:[/Script/Engine.GameSession]:MaxPlayers",
"IncludeInCommandLine":true,
"DefaultValue":"4",
"Placeholder":"4",
"Suffix":"players",
"EnumValues":{}
},
"DefaultValue": "public"
}
]
{
"DisplayName":"Initial Connection Timeout",
"Category":"Server Settings",
"Description":"Sets the amount of time to wait for a new network connection to be established before destroying the connection. May assist with connection issues for client systems with older hardware or slower networks",
"Keywords":"initial,connect,connection,timeout,initialconnecttimeout",
"FieldName":"InitialConnectTimeout",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/OnlineSubsystemUtils.IpNetDriver]:InitialConnectTimeout",
"IncludeInCommandLine":true,
"DefaultValue":"30",
"Placeholder":"30",
"Suffix":"seconds",
"EnumValues":{}
},
{
"DisplayName":"Established Connection Timeout",
"Category":"Server Settings",
"Description":"Sets the amount of time to wait before considering an established connection timed out. Typically shorter than the Initial Connection Timeout. May assist with connection issues for client systems with older hardware or slower networks",
"Keywords":"established,connection,timeout,connectiontimeout",
"FieldName":"ConnectionTimeout",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/OnlineSubsystemUtils.IpNetDriver]:ConnectionTimeout",
"IncludeInCommandLine":true,
"DefaultValue":"20",
"Placeholder":"20",
"Suffix":"seconds",
"EnumValues":{}
},
{
"DisplayName":"Maximum Tick Rate",
"Category":"Server Settings",
"Description":"Sets the maximum tick rate for the server",
"Keywords":"maximum,tick,rate,netmaxtickrate,lanmaxtickrate",
"FieldName":"MaxTickRate",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/OnlineSubsystemUtils.IpNetDriver]:NetServerMaxTickRate",
"IncludeInCommandLine":true,
"DefaultValue":"30",
"Placeholder":"30",
"Suffix":"ticks per second",
"EnumValues":{}
},
{
"DisplayName":"Maximum Tick Rate",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"MaxTickRate",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/OnlineSubsystemUtils.IpNetDriver]:LanServerMaxTickRate",
"IncludeInCommandLine":true,
"EnumValues":{}
},
{
"DisplayName":"Maximum Tick Rate",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"MaxTickRate",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/SocketSubsystemEpic.EpicNetDriver]:NetServerMaxTickRate",
"IncludeInCommandLine":true,
"EnumValues":{}
},
{
"DisplayName":"Maximum Tick Rate",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"MaxTickRate",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/SocketSubsystemEpic.EpicNetDriver]:LanServerMaxTickRate",
"IncludeInCommandLine":true,
"EnumValues":{}
},
{
"DisplayName":"Maximum Tick Rate",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"MaxTickRate",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/Engine.Engine]:NetClientTicksPerSecond",
"IncludeInCommandLine":true,
"EnumValues":{}
},
{
"DisplayName":"Server IP Binding",
"Category":"Server Settings",
"Description":"If required, you can change the binding of the server by editing App.ApplicationIPBinding in GenericModule.kvp for the instance. Stop the instance (not just the server) first",
"Keywords":"ip,binding,multihome",
"FieldName":"MultiHome",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"MultiHome",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Maximum Autosaves",
"Category":"Server Settings",
"Description":"Sets the maximum number of autosaves created before rotation by the server",
"Keywords":"maximum,autosaves,rotation,mnumrotatingautosaves",
"FieldName":"mNumRotatingAutosaves",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[/Script/FactoryGame.FGSaveSession]:mNumRotatingAutosaves",
"IncludeInCommandLine":true,
"DefaultValue":"3",
"Placeholder":"3",
"Suffix":"autosaves",
"EnumValues":{}
},
{
"DisplayName":"Enable Crash Reports Upload (Linux Only)",
"Category":"Server Settings",
"Description":"If enabled, crash reports will be automatically uploaded to the Satisfactory developers",
"Keywords":"crash,reports,upload,bimplicitsend",
"FieldName":"bImplicitSend",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"ini:Engine:[CrashReportClient]:bImplicitSend",
"IncludeInCommandLine":true,
"DefaultValue":"True",
"EnumValues":{
"False":"False",
"True":"True"
}
},
{
"DisplayName":"Server Release Stream",
"Category":"SteamCMD and Updates",
"Description":"Sets the server release stream to install. Note: Update the server after changing this setting",
"Keywords":"release,stream,beta,version",
"FieldName":"releasestream",
"InputType":"enum",
"ParamFieldName":"releasestream",
"IncludeInCommandLine":false,
"DefaultValue":"public",
"EnumValues":{
"public":"Public/Early Access (default)",
"experimental":"Experimental"
}
}
]

View File

@ -0,0 +1 @@
[]

View File

@ -33,5 +33,27 @@
"OverwriteExistingFiles":true,
"UpdateSourceConditionSetting":"releasestream",
"UpdateSourceConditionValue":"experimental"
},
{
"UpdateStageName":"Saves Directory Creation",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c 'mkdir -p ~/.config/Epic/FactoryGame/Saved/SaveGames ; mkdir -p \"{{$FullBaseDir}}FactoryGame/Saved\" ; ln -sf ~/.config/Epic/FactoryGame/Saved/SaveGames \"{{$FullBaseDir}}FactoryGame/Saved/\"'"
},
{
"UpdateStageName":"Saves Directory Creation",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"Executable",
"UpdateSourceData":"cmd.exe",
"UpdateSourceArgs":"/C mkdir \"%LocalAppData%\\FactoryGame\\Saved\\SaveGames\" & mkdir \"{{$FullBaseDir}}FactoryGame\\Saved\" & mklink /J \"{{$FullBaseDir}}FactoryGame\\Saved\\SaveGames\" \"%LocalAppData%\\FactoryGame\\Saved\\SaveGames\""
},
{
"UpdateStageName":"Create Readme File",
"UpdateSourcePlatform":"All",
"UpdateSource":"CreateFile",
"UpdateSourceArgs":"{{$FullBaseDir}}FactoryGame/Saved/SaveGames/README.txt",
"UpdateSourceData":"WARNING: This directory may include the save data of multiple Satisfactory servers\nrun on this system.\n\nIf viewing this directory from AMPs ADS File Manager/SFTP, you will see the\nsave data of all Satisfactory servers run on this system, other than those run by\nAMP in Docker.\n\nYou will see the same save data if viewing this directory from AMPs File Manager/SFTP\nfor a particular Satisfactory instance that is NOT run in Docker.\n\nIf viewing this directory from AMPs File Manager/SFTP for a particular Satisfactory\ninstance that IS run in Docker, you will only see the save data of that instance.\n\nYou can also use the ADS File Manager/SFTP to view the save data of a Satisfactory\ninstance that is run in Docker by navigating to the following directory in the\ninstances datastore: .virtualhome/.config/Epic/FactoryGame/Saved/SaveGames.\n\nThe save data for a specific instance is linked to its port (as part of the\nServerSettings file name) and its session name (as part of the autosave file names\nin the server subdirectory).\n\nSave data will not be automatically deleted when a non-Docker Satisfactory server is\nremoved, so you may need to delete the ServerSettings file and/or autosave files\nif later creating a new Satisfactory server with the same port and/or session name.\n\nTake care when managing files in this directory or its subdirectory!",
"OverwriteExistingFiles":true
}
]
]