Add Arma Reforger (#121)

This commit is contained in:
JetF0x 2023-03-08 13:24:06 -06:00 committed by GitHub
parent 89fb007715
commit af786f90a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 554 additions and 0 deletions

91
arma-reforger.kvp Normal file
View File

@ -0,0 +1,91 @@
Meta.DisplayName=Arma Reforger
Meta.Description=Arma Reforger Dedicated Server
Meta.OS=Windows, Linux
Meta.Arch=x86_64
Meta.Author=JetFox, Greelan
Meta.URL=https://reforger.armaplatform.com
Meta.DisplayImageSource=steam:1874880
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$QueryPort}
Meta.ConfigManifest=arma-reforgerconfig.json
Meta.MetaConfigManifest=arma-reforgermetaconfig.json
Meta.ConfigRoot=arma-reforger.kvp
Meta.MinAMPVersion=2.4.2.0
Meta.SpecificDockerImage=
Meta.DockerRequired=False
Meta.ContainerPolicy=Supported
Meta.ContainerPolicyReason=
Meta.ExtraSetupStepsURI=
Meta.Prerequsites=[]
Meta.ExtraContainerPackages=[]
Meta.ConfigReleaseState=NotSpecified
Meta.NoCommercialUsage=False
App.DisplayName=Arma Reforger
App.RootDir=./arma-reforger/
App.BaseDirectory=./arma-reforger/1874900/
App.ExecutableWin=1874900\ArmaReforgerServer.exe
App.ExecutableLinux=1874900/ArmaReforgerServer
App.WorkingDir=1874900
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} -gproj "{{$FullBaseDir}}addons/data/ArmaReforger.gproj" -profile "{{$FullBaseDir}}AReforgerMaster" -bepath "{{$FullBaseDir}}battleye" -port={{$GamePort}} -config "{{$FullBaseDir}}Configs/server.json" -a2sIpAddress {{$ApplicationIPBinding}} -listScenarios -noThrow {{$FormattedArgs}} {{logStats}} {{CustomServerArgs}}
App.UseLinuxIOREDIR=False
App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"1874880"}
App.CommandLineParameterFormat=-{0} "{1}"
App.CommandLineParameterDelimiter=
App.ExitMethod=String
App.ExitTimeout=30
App.ExitString=#shutdown
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":2001,"Ref":"GamePort","Name":"Game Port","Description":"Port for game traffic"},{"Protocol":"UDP","Port":17777,"Ref":"QueryPort","Name":"Query Port","Description":"Port for Steam query traffic"},{"Protocol":"UDP","Port":2002,"Ref":"RCONPort","Name":"RCON Port","Description":"Port for RCON traffic"}]
App.AdminPortRef=RCONPort
App.PrimaryApplicationPortRef=GamePort
App.UniversalSleepApplicationUDPPortRef=GamePort
App.UniversalSleepSteamQueryPortRef=QueryPort
App.MaxUsers=127
App.UseRandomAdminPassword=True
App.PersistRandomPassword=True
App.RemoteAdminPassword=
App.AdminMethod=BattlEyeRCON
App.AdminLoginTransform=None
App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=5
App.RCONHeartbeatMinutes=0.5
App.RCONHeartbeatCommand=ping
App.TelnetLoginFormat={0}
App.UpdateSources=@IncludeJson[arma-reforgerupdates.json]
App.PreStartStages=[]
App.Compatibility=LinuxBufferedConsole, WindowsBufferedConsole
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=(\[0m|\[33m)
Console.FilterMatchReplacement=
Console.ThrowawayMessageRegex=^((WARNING|ERROR): Shader.+|Unknown command)$
Console.AppReadyRegex=^[\d:\s]*ENGINE\s+: Game successfully created\.$
Console.UserJoinRegex=^[\d:\s]*NETWORK\s+: ### Connecting player: connectionID=(?<userid>.+), Name=(?<username>.*)$
Console.UserLeaveRegex=^[\d:\s]*NETWORK\s+: Player disconnected: connectionID=(?<userid>.+)$
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=False
Limits.SleepOnStart=False
Limits.SleepDelayMinutes=5
Limits.DozeDelay=2
Limits.AutoRetryCount=5
Limits.SleepStartThresholdSeconds=25

377
arma-reforgerconfig.json Normal file
View File

@ -0,0 +1,377 @@
[
{
"DisplayName":"Game Port",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$GamePort",
"InputType":"number",
"IsFlagArgument":false,
"Hidden":true,
"ParamFieldName":"$.gameHostBindPort",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Register Port",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$GamePort",
"InputType":"number",
"IsFlagArgument":false,
"Hidden":true,
"ParamFieldName":"$.gameHostRegisterPort",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Query Port",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$QueryPort",
"InputType":"number",
"IsFlagArgument":false,
"Hidden":true,
"ParamFieldName":"$.steamQueryPort",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Enable Steam Query",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"a2sQueryEnabled",
"InputType":"text",
"IsFlagArgument":false,
"Hidden":true,
"ParamFieldName":"$.a2sQueryEnabled",
"IncludeInCommandLine":false,
"DefaultValue":"true",
"EnumValues":{}
},
{
"DisplayName":"Register IP Binding",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$ExternalIP",
"InputType":"text",
"IsFlagArgument":false,
"Hidden":true,
"ParamFieldName":"$.gameHostRegisterBindAddress",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Enable BattlEye",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"battlEye",
"InputType":"text",
"IsFlagArgument":false,
"Hidden":true,
"ParamFieldName":"$.game.gameProperties.battlEye",
"IncludeInCommandLine":false,
"DefaultValue":"true",
"EnumValues":{}
},
{
"DisplayName":"Server Name",
"Category":"Server Settings",
"Description":"Sets the server name visible in the game browser (up to 100 characters)",
"Keywords":"server,name",
"FieldName":"name",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"$.game.name",
"IncludeInCommandLine":false,
"DefaultValue":"Arma Reforger Server - Powered by AMP",
"EnumValues":{}
},
{
"DisplayName":"Server Region",
"Category":"Server Settings",
"Description":"Sets the server's region. Requires a valid [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) such as EU, US, AU, JP",
"Keywords":"region,location",
"FieldName":"region",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"$.region",
"IncludeInCommandLine":false,
"DefaultValue":"EU",
"EnumValues":{},
},
{
"DisplayName":"Server Map",
"Category":"Server Settings",
"Description":"Sets the server map. Specify the scenario conf file path as listed in the logs/console",
"Keywords":"map,scenario,scenarioid",
"FieldName":"scenarioId",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"$.game.scenarioId",
"IncludeInCommandLine":false,
"DefaultValue":"{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"Placeholder":"{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"EnumValues":{}
},
{
"DisplayName":"Server/RCON IP Binding",
"Category":"Server Settings",
"Description":"If required, you can change the binding of the server and BattlEye RCON by editing App.ApplicationIPBinding in GenericModule.kvp for the instance. Stop the instance (not just the server) first",
"Keywords":"ip,binding,gamehostbindaddress,rconip",
"FieldName":"$ApplicationIPBinding",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"$.gameHostBindAddress",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Make Server Public",
"Category":"Server Settings",
"Description":"If enabled, the server will be visible in the in-game browser",
"Keywords":"serverlist,public,visible",
"FieldName":"visible",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"$.game.visible",
"IncludeInCommandLine":false,
"DefaultValue":"true",
"EnumValues":{
"False":"false",
"True":"true"
}
},
{
"DisplayName":"Server Password",
"Category":"Server Settings",
"Description":"Sets the password required to connect to the server. Default is no password",
"Keywords":"server,password",
"FieldName":"password",
"InputType":"password",
"IsFlagArgument":false,
"ParamFieldName":"$.game.password",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Admin Password",
"Category":"Server Settings",
"Description":"Sets the password required for admin access to the server. Default is no password",
"Keywords":"admin,password,adminpassword",
"FieldName":"adminPassword",
"InputType":"password",
"IsFlagArgument":false,
"ParamFieldName":"$.adminPassword",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"RCON Password",
"Category":"Server Settings",
"Description":"See the Security and Privacy menu for configurable options for the server's RCON",
"Keywords":"rcon,password",
"FieldName":"RCONPassword",
"InputType":"hidden",
"IsFlagArgument":false,
"ParamFieldName":"RCONPassword",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Server Player Limit",
"Category":"Server Settings",
"Description":"Sets the maximum number of players that may connect to the server at one time",
"Keywords":"players,limit,maximum,playercountlimit",
"FieldName":"$MaxUsers",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"$.game.playerCountLimit",
"IncludeInCommandLine":false,
"DefaultValue":"127",
"Placeholder":"127",
"Suffix":"players",
"EnumValues":{}
},
{
"DisplayName":"Mission Player Limit",
"Category":"Server Settings",
"Description":"Sets the maximum number of players that a mission will allow",
"Keywords":"players,limit,maximum,mission,m_iplayercount",
"FieldName":"m_iPlayerCount",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"$.game.gameProperties.missionHeader.m_iPlayerCount",
"IncludeInCommandLine":false,
"DefaultValue":"127",
"Placeholder":"127",
"Suffix":"players",
"EnumValues":{}
},
{
"DisplayName":"Server FPS Limit",
"Category":"Server Settings",
"Description":"Sets the server FPS. Recommended to be in the range of 60 to 120 so that the server does not use all available resources",
"Keywords":"fps,limit,maxfps",
"FieldName":"maxFPS",
"InputType":"number",
"MinValue":"1",
"IsFlagArgument":false,
"ParamFieldName":"maxFPS",
"IncludeInCommandLine":true,
"DefaultValue":"60",
"Suffix":"fps",
"EnumValues":{}
},
{
"DisplayName":"Maximum View Distance",
"Category":"Server Settings",
"Description":"Sets the server's maximum view distance (between 500 to 10000). Default is 1600",
"Keywords":"maximum,view,distance,servermaxviewdistance",
"FieldName":"serverMaxViewDistance",
"InputType":"number",
"MinValue":"500",
"MaxValue":"10000",
"IsFlagArgument":false,
"ParamFieldName":"$.game.gameProperties.serverMaxViewDistance",
"IncludeInCommandLine":false,
"DefaultValue":"1600",
"Placeholder":"500 - 10000",
"EnumValues":{}
},
{
"DisplayName":"Network View Distance",
"Category":"Server Settings",
"Description":"Sets the server's maximum network streaming range of replicated entities (between 500 to 5000). Default is 500",
"Keywords":"network,stream,view,distance,networkviewdistance",
"FieldName":"networkViewDistance",
"InputType":"number",
"MinValue":"500",
"MaxValue":"5000",
"IsFlagArgument":false,
"ParamFieldName":"$.game.gameProperties.networkViewDistance",
"IncludeInCommandLine":false,
"DefaultValue":"500",
"Placeholder":"500 - 5000",
"EnumValues":{}
},
{
"DisplayName":"Minimum Grass Distance",
"Category":"Server Settings",
"Description":"Sets the server's minimum grass distance (between 50 to 150). 0 = no minimum distance is forced on clients (default)",
"Keywords":"minimum,grass,distance,servermingrassdistance",
"FieldName":"serverMinGrassDistance",
"InputType":"number",
"MinValue":"0",
"MaxValue":"150",
"IsFlagArgument":false,
"ParamFieldName":"$.game.gameProperties.serverMinGrassDistance",
"IncludeInCommandLine":false,
"DefaultValue":"0",
"Placeholder":"0 or 50 - 150",
"Suffix":"metres",
"EnumValues":{}
},
{
"DisplayName":"Quick Start Joinable",
"Category":"Server Settings",
"Description":"If enabled, the session can be selected through the auto join feature",
"Keywords":"join,auto,autojoinable",
"FieldName":"autoJoinable",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"$.game.autoJoinable",
"IncludeInCommandLine":false,
"DefaultValue":"true",
"EnumValues":{
"False":"false",
"True":"true"
}
},
{
"DisplayName":"Disable Third Person",
"Category":"Server Settings",
"Description":"If enabled, clients will be forced to use the first-person view. NOTE: This must be disabled for auto join",
"Keywords":"third,person,disablethirdperson",
"FieldName":"disableThirdPerson",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"$.game.gameProperties.disableThirdPerson",
"IncludeInCommandLine":false,
"DefaultValue":"false",
"EnumValues":{
"False":"false",
"True":"true"
}
},
{
"DisplayName":"Enable Fast Validation",
"Category":"Server Settings",
"Description":"If enabled, matching validation of map entities and components loaded on a client when it joins will be done with minimum information. Always enable for a public server!",
"Keywords":"validation,checksum,fastvalidation",
"FieldName":"fastValidation",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"$.game.gameProperties.fastValidation",
"IncludeInCommandLine":false,
"DefaultValue":"true",
"EnumValues":{
"False":"false",
"True":"true"
}
},
{
"DisplayName":"Log Statistics",
"Category":"Server Settings",
"Description":"If enabled, the server logs performance statistics every second or such other period set under \"Statistics Logging Interval\"",
"Keywords":"log,statistics,logstats",
"FieldName":"logStats",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"logStats",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{
"False":"",
"True":"-logStats {{logStatsInterval}}"
}
},
{
"DisplayName":"Statistics Logging Inverval",
"Category":"Server Settings",
"Description":"Sets the interval for logging of performance statistics, if \"Log Statistics\" is enabled. Default is 1000 (1 second)",
"Keywords":"log,statistics,logstats",
"FieldName":"logStatsInterval",
"InputType":"number",
"IsFlagArgument":false,
"ParamFieldName":"logStatsInterval",
"IncludeInCommandLine":false,
"DefaultValue":"1000",
"Placeholder":"1000",
"Suffix":"milliseconds",
"EnumValues":{}
},
{
"DisplayName":"Additional Server Startup Parameters",
"Category":"Server Settings",
"Description":"Specifies additional startup parameters that are not otherwise set by AMP. Use with care",
"Keywords":"custom,server,arguments,parameters",
"FieldName":"CustomServerArgs",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"CustomServerArgs",
"IncludeInCommandLine":false,
"DefaultValue":"",
"Placeholder":"-debug",
"EnumValues":{}
}
]

View File

@ -0,0 +1,24 @@
[
{
"ConfigFile":"Configs/server.json",
"AutoMap":true,
"ConfigType":"json"
},
{
"ConfigFile":"battleye/BEServer_x64.cfg",
"ConfigType":"kvp",
"ConfigFormat":"{0} {1}",
"Subsections":[
{
"Heading":"$root",
"SettingMappings":{
"GameID":"armar",
"MasterPort":"2001",
"RConPassword":"$RemoteAdminPassword",
"RConPort":"$RCONPort",
"RConIP":"$ApplicationIPBinding"
}
}
]
}
]

37
arma-reforgerserver.json Normal file
View File

@ -0,0 +1,37 @@
{
"dedicatedServerId":"",
"region":"EU",
"gameHostBindAddress":"",
"gameHostBindPort":2001,
"gameHostRegisterBindAddress":"",
"gameHostRegisterPort":2001,
"adminPassword":"",
"a2sQueryEnabled":true,
"steamQueryPort":17777,
"game":{
"name":"Arma Reforger Server - Powered by AMP",
"password":"",
"scenarioId":"{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"playerCountLimit":127,
"autoJoinable":true,
"visible":true,
"supportedGameClientTypes":[
"PLATFORM_PC",
"PLATFORM_XBL"
],
"gameProperties":{
"serverMaxViewDistance":1600,
"serverMinGrassDistance":0,
"networkViewDistance":500,
"disableThirdPerson":false,
"fastValidation":true,
"battlEye":true,
"missionHeader":{
"m_iPlayerCount":127,
"m_eEditableGameFlags":6,
"m_eDefaultGameFlags":6
}
},
"mods":[]
}
}

25
arma-reforgerupdates.json Normal file
View File

@ -0,0 +1,25 @@
[
{
"UpdateStageName":"SteamCMD Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"1874900",
"UpdateSourceArgs":"1874880"
},
{
"UpdateStageName":"Create Configs Directory",
"UpdateSourcePlatform":"All",
"UpdateSource":"CreateDirectory",
"UpdateSourceArgs":"{{$FullBaseDir}}Configs",
"OverwriteExistingFiles":false
},
{
"UpdateStageName":"Server Config File Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma-reforgerserver.json",
"UpdateSourceArgs":"server.json",
"UpdateSourceTarget":"{{$FullBaseDir}}Configs/",
"OverwriteExistingFiles":false
}
]