Arma 3: server branch and headless client updates (#426)

This commit is contained in:
Greelan 2023-07-27 14:17:11 +10:00 committed by GitHub
parent 0ef5503aaa
commit 3430e15c37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 115 additions and 12 deletions

View File

@ -60,7 +60,7 @@ App.RCONHeartbeatMinutes=0.5
App.RCONHeartbeatCommand=ping
App.TelnetLoginFormat={0}
App.UpdateSources=@IncludeJson[arma3updates.json]
App.PreStartStages=[{"UpdateStageName":"Delete Active File","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'rm -f {{$FullBaseDir}}battleye/beserver_x64_active_*.cfg'"},{"UpdateStageName":"Delete Active File","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C del /Q /F {{$FullBaseDir}}battleye\\beserver_x64_active_*.cfg"},{"UpdateStageName":"Headless Client Script Download","UpdateSourcePlatform":"Linux","UpdateSource":"FetchURL","UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3runhc.sh","UpdateSourceArgs":"runhc.sh","UpdateSourceTarget":"{{$FullInstanceDir}}","OverwriteExistingFiles":true},{"UpdateStageName":"Headless Client Script Download","UpdateSourcePlatform":"Windows","UpdateSource":"FetchURL","UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3runhc.ps1","UpdateSourceArgs":"runhc.ps1","UpdateSourceTarget":"{{$FullInstanceDir}}","OverwriteExistingFiles":true},{"UpdateStageName":"Start Headless Clients","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'chmod +x ./runhc.sh; ./runhc.sh {{HeadlessClientsNum}} {{$ApplicationIPBinding}} {{$GamePort}} \"{{password}}\" \"{{mod}}\" &'"},{"UpdateStageName":"Start Headless Clients","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C start powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File \"runhc.ps1\" {{HeadlessClientsNum}} {{$ApplicationIPBinding}} {{$GamePort}} \"{{password}}\" \"{{mod}}\""}]
App.PreStartStages=[{"UpdateStageName":"Delete Active File","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'rm -f {{$FullBaseDir}}battleye/beserver_x64_active_*.cfg'"},{"UpdateStageName":"Delete Active File","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C del /Q /F {{$FullBaseDir}}battleye\\beserver_x64_active_*.cfg"},{"UpdateStageName":"Headless Client Script Download","UpdateSourcePlatform":"Linux","UpdateSource":"FetchURL","UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3runhc.sh","UpdateSourceArgs":"runhc.sh","UpdateSourceTarget":"{{$FullInstanceDir}}","OverwriteExistingFiles":true},{"UpdateStageName":"Headless Client Script Download","UpdateSourcePlatform":"Windows","UpdateSource":"FetchURL","UpdateSourceData":"https://github.com/CubeCoders/AMPTemplates/raw/main/arma3runhc.ps1","UpdateSourceArgs":"runhc.ps1","UpdateSourceTarget":"{{$FullInstanceDir}}","OverwriteExistingFiles":true},{"UpdateStageName":"Start Headless Clients","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'chmod +x ./runhc.sh; ./runhc.sh {{HeadlessClientsNum}} {{$ApplicationIPBinding}} {{$GamePort}} \"{{password}}\" \"{{mod}}\" \"{{hc_parfile}}\" &'"},{"UpdateStageName":"Start Headless Clients","UpdateSourcePlatform":"Windows","UpdateSource":"Executable","UpdateSourceData":"cmd.exe","UpdateSourceArgs":"/C start powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File \"runhc.ps1\" {{HeadlessClientsNum}} {{$ApplicationIPBinding}} {{$GamePort}} \"{{password}}\" \"{{mod}}\" \"{{hc_parfile}}\""}]
App.Compatibility=None
App.SteamUpdateAnonymousLogin=False
App.SteamForceLoginPrompt=True

View File

@ -227,7 +227,7 @@
{
"DisplayName":"Minimum Client Version",
"Category":"Arma Server Settings",
"Description":"Sets the minimum client version, below which clients won't be allowed to join. Default of 99999999 equates to the server version",
"Description":"Sets the minimum client version, below which clients won't be allowed to join. Default of 99999999 equates to the server version. NOTE: If the server uses the Performance Profiling Build in any way, set this to 0, otherwise no client can connect",
"Keywords":"required,build,requiredbuild",
"FieldName":"requiredBuild",
"InputType":"number",
@ -284,6 +284,22 @@
"Placeholder":"\"127.0.0.1\",\"210.187.254.121\"",
"EnumValues":{}
},
{
"DisplayName":"Use Headless Client Startup Parameters File",
"Category":"Arma Server Settings",
"Description":"If enabled, allows the use of a [parameters file](https://community.bistudio.com/wiki/Startup_Parameters_Config_File) for additional startup parameters for headless clients. File is \"hc_parameters.txt\" in the server base directory. Useful if the server also uses its own Startup Parameters File for mods. Use with care",
"Keywords":"headless,client,custom,server,arguments,parameters,file,parfile",
"FieldName":"hc_parfile",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"hc_parfile",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{
"False":"",
"True":"hc_parameters.txt"
}
},
{
"DisplayName":"Local Headless Client IPs",
"Category":"Arma Server Settings",
@ -347,9 +363,9 @@
"EnumValues":{}
},
{
"DisplayName":"Use Startup Parameters File",
"DisplayName":"Use Server Startup Parameters File",
"Category":"Arma Server Settings",
"Description":"If enabled, allows the use of a [parameters file](https://community.bistudio.com/wiki/Startup_Parameters_Config_File) for additional startup parameters. File is \"parameters.txt\" in the server base directory. Useful for long startup parameters such as -mods or -servermods. Use with care",
"Description":"If enabled, allows the use of a [parameters file](https://community.bistudio.com/wiki/Startup_Parameters_Config_File) for additional startup parameters for the server. File is \"parameters.txt\" in the server base directory. Useful for long startup parameters such as -mod or -serverMod. Use with care",
"Keywords":"custom,server,arguments,parameters,file,parfile",
"FieldName":"parfile",
"InputType":"checkbox",
@ -1178,7 +1194,7 @@
{
"DisplayName":"Server Branch",
"Category":"SteamCMD and Updates",
"Description":"Sets the server branch to install. NOTE: Update the server after switching branches!",
"Description":"Sets the server branch (or branches) to install. NOTE: Update the server after switching branches, and set the Minimum Client Version to 0 if using the Performance Profiling Build in any way!",
"Keywords":"server,branch,depot",
"FieldName":"ServerBranch",
"InputType":"enum",
@ -1190,7 +1206,8 @@
"public":"Public (default)",
"profiling":"Performance Profiling Build",
"creatordlc":"Creator DLC Build",
"contact":"Contact Build"
"contact":"Contact Build",
"creatordlc-profiling":"Creator DLC + Performance Profiling Builds"
}
}
]

View File

@ -1,4 +1,4 @@
# Arguments: [number_clients] [server_binding] [server_port] "<server_password>" "<mod_list>"
# Arguments: [number_clients] [server_binding] [server_port] "<server_password>" "<mod_list>" "<hc_parameters_file>"
# Check if any headless clients are to be run
# If none, immediately exit
@ -19,6 +19,11 @@ if (-not $serverStarted) { exit 1 }
# Start the headless clients
$clients = @()
$basePort = [int]$args[2] + 498
if ($args.Length -lt 6) {
$parfile = ""
} else {
$parfile = $args[6]
}
cd "$PSScriptRoot\arma3\233780"
for ($i = 1; $i -le [int]$args[0]; $i++) {
if ($args[1] -eq "0.0.0.0") {
@ -26,7 +31,7 @@ for ($i = 1; $i -le [int]$args[0]; $i++) {
} else {
$connect = $args[1]
}
$hcProcess = Start-Process -FilePath "ArmA3Server_x64.exe" -ArgumentList "-client", "-nosound", "-connect=${connect}:$($args[2])", "-port=$basePort", "-password=`"$($args[3])`"", "`"-mod=$($args[4])`"" -WindowStyle Hidden -PassThru
$hcProcess = Start-Process -FilePath "ArmA3Server_x64.exe" -ArgumentList "-client", "-nosound", "-profiles=A3Master", "-connect=${connect}:$($args[2])", "-port=$basePort", "-password=`"$($args[3])`"", "`"-mod=$($args[4])`"", "`"-par=$parfile`"" -WindowStyle Hidden -PassThru
$clients += $hcProcess.Id
}

View File

@ -1,6 +1,6 @@
#!/bin/bash
# Arguments: [number_clients] [server_binding] [server_port] "<server_password>" "<mod_list>"
# Arguments: [number_clients] [server_binding] [server_port] "<server_password>" "<mod_list>" "<hc_parameters_file>"
netcommand="$(command -v "ss" >/dev/null 2>&1 && echo "ss" || echo "netstat")"
@ -24,6 +24,7 @@ fi
# Start the headless clients
baseport=$(($3 + 498))
parfile="${6:-}"
export LD_LIBRARY_PATH=$(dirname "$0")/linux64:$LD_LIBRARY_PATH
cd ./arma3/233780
for i in $(seq 1 "$1"); do
@ -32,7 +33,7 @@ for i in $(seq 1 "$1"); do
else
connect="$2"
fi
./arma3server_x64 -client -nosound -connect=$connect:$3 -port=$baseport -password="$4" "-mod=$5" >/dev/null 2>&1 &
./arma3server_x64 -client -nosound -profiles=A3Master -connect=$connect:$3 -port=$baseport -password="$4" "-mod=$5" "-par=$parfile" >/dev/null 2>&1 &
clients+=($!)
done

View File

@ -5,7 +5,80 @@
"UpdateSource":"SteamCMD",
"UpdateSourceData":"233780",
"UpdateSourceArgs":"107410",
"UpdateSourceVersion":"{{ServerBranch}}"
"UpdateSourceVersion":"public",
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"public"
},
{
"UpdateStageName":"SteamCMD Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"233780",
"UpdateSourceArgs":"107410",
"UpdateSourceVersion":"profiling",
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"profiling"
},
{
"UpdateStageName":"SteamCMD Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"233780",
"UpdateSourceArgs":"107410",
"UpdateSourceVersion":"creatordlc",
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"creatordlc"
},
{
"UpdateStageName":"SteamCMD Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"233780",
"UpdateSourceArgs":"107410",
"UpdateSourceVersion":"contact",
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"contact"
},
{
"UpdateStageName":"SteamCMD Creator DLC Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"233780",
"UpdateSourceArgs":"107410",
"UpdateSourceVersion":"creatordlc",
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"creatordlc-profiling"
},
{
"UpdateStageName":"SteamCMD Performance Profiling Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"233780",
"UpdateSourceArgs":"107410",
"UpdateSourceTarget":".profiling",
"UpdateSourceVersion":"profiling",
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"creatordlc-profiling"
},
{
"UpdateStageName":"Performance Profiling Binary Copy",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"CopyFilePath",
"UpdateSourceData":"{{$FullBaseDir}}arma3server_x64",
"UpdateSourceArgs":"{{$FullRootDir}}.profiling/arma3server_x64",
"OverwriteExistingFiles":true,
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"creatordlc-profiling"
},
{
"UpdateStageName":"Performance Profiling Binary Copy",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"CopyFilePath",
"UpdateSourceData":"{{$FullBaseDir}}ArmA3Server_x64.exe",
"UpdateSourceArgs":"{{$FullRootDir}}.profiling/ArmA3Server_x64.exe",
"OverwriteExistingFiles":true,
"UpdateSourceConditionSetting":"ServerBranch",
"UpdateSourceConditionValue":"creatordlc-profiling"
},
{
"UpdateStageName":"Server Config Template Download",
@ -26,12 +99,19 @@
"OverwriteExistingFiles":false
},
{
"UpdateStageName":"Create Parameters File",
"UpdateStageName":"Create Server Parameters File",
"UpdateSourcePlatform":"All",
"UpdateSource":"CreateFile",
"UpdateSourceArgs":"{{$FullBaseDir}}parameters.txt",
"OverwriteExistingFiles":false
},
{
"UpdateStageName":"Create Headless Client Parameters File",
"UpdateSourcePlatform":"All",
"UpdateSource":"CreateFile",
"UpdateSourceArgs":"{{$FullBaseDir}}hc_parameters.txt",
"OverwriteExistingFiles":false
},
{
"UpdateStageName":"Modscript Download",
"UpdateSourcePlatform":"Linux",