Risk Of Rain 2: Add mod functionality, tweak settings and metaconfig (#359)

This commit is contained in:
Greelan 2023-05-16 21:40:04 +10:00 committed by GitHub
parent ac41157f3c
commit f5f9908bec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 244 additions and 86 deletions

View File

@ -2,7 +2,7 @@ Meta.DisplayName=Risk of Rain 2
Meta.Description=Risk of Rain 2 Dedicated Server Meta.Description=Risk of Rain 2 Dedicated Server
Meta.OS=Windows, Linux Meta.OS=Windows, Linux
Meta.Arch=x86_64 Meta.Arch=x86_64
Meta.Author=IceOfWraith Meta.Author=IceOfWraith, Greelan
Meta.URL=https://store.steampowered.com/app/632360/Risk_of_Rain_2/ Meta.URL=https://store.steampowered.com/app/632360/Risk_of_Rain_2/
Meta.DisplayImageSource=steam:632360 Meta.DisplayImageSource=steam:632360
Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$ApplicationPort2} Meta.EndpointURIFormat=steam://connect/{ip}:{GenericModule.App.Ports.$ApplicationPort2}
@ -13,7 +13,7 @@ Meta.MinAMPVersion=2.3.3.0
Meta.SpecificDockerImage=cubecoders/ampbase:wine Meta.SpecificDockerImage=cubecoders/ampbase:wine
Meta.DockerRequired=False Meta.DockerRequired=False
Meta.ContainerPolicy=SupportedOnWindows, RecommendedOnLinux Meta.ContainerPolicy=SupportedOnWindows, RecommendedOnLinux
Meta.ContainerPolicyReason=The server requires Wine and Xvfb to run on Linux. Using a container avoids the need to install these dependencies on the host. Meta.ContainerPolicyReason=The server requires Wine (ideally Wine 8) and Xvfb to run on Linux. Using a container avoids the need to install these dependencies on the host.
Meta.Prerequsites=[] Meta.Prerequsites=[]
Meta.ConfigReleaseState=NotSpecified Meta.ConfigReleaseState=NotSpecified
App.DisplayName=Risk of Rain 2 App.DisplayName=Risk of Rain 2
@ -27,7 +27,7 @@ App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} App.CommandLineArgs={{$PlatformArgs}}
App.UseLinuxIOREDIR=False App.UseLinuxIOREDIR=False
App.AppSettings={} App.AppSettings={}
App.EnvironmentVariables={"LD_LIBRARY_PATH":"./linux64:%LD_LIBRARY_PATH%","SteamAppId":"{{$SteamAppID}}","WINEPREFIX":"{{$FullRootDir}}.wine","WINEARCH":"win64","WINEDEBUG":"-all"} App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullRootDir}}linux64:%LD_LIBRARY_PATH%","SteamAppId":"{{$SteamAppID}}","WINEPREFIX":"{{$FullRootDir}}.wine","WINEARCH":"win64","WINEDLLOVERRIDES":"winhttp=n,b","WINEDEBUG":"-all"}
App.CommandLineParameterFormat=+{0} {1} App.CommandLineParameterFormat=+{0} {1}
App.CommandLineParameterDelimiter= App.CommandLineParameterDelimiter=
App.ExitMethod=OS_CLOSE App.ExitMethod=OS_CLOSE
@ -39,7 +39,7 @@ App.HasReadableConsole=True
App.SupportsLiveSettingsChanges=False App.SupportsLiveSettingsChanges=False
App.LiveSettingChangeCommandFormat=set {0} "{1}" App.LiveSettingChangeCommandFormat=set {0} "{1}"
App.ApplicationIPBinding=0.0.0.0 App.ApplicationIPBinding=0.0.0.0
App.Ports=[{"Protocol":2,"Port":27015,"Offset":0,"Range":1,"Ref":"ApplicationPort1","Name":"Application Port 1","Description":"","ChildPorts":null},{"Protocol":2,"Port":27016,"Offset":0,"Range":1,"Ref":"ApplicationPort2","Name":"Application Port 2","Description":"","ChildPorts":null},{"Protocol":2,"Port":27017,"Offset":0,"Range":1,"Ref":"ApplicationPort3","Name":"Application Port 3","Description":"","ChildPorts":null}] App.Ports=[{"Protocol":2,"Port":27015,"Offset":0,"Range":1,"Ref":"ApplicationPort1","Name":"Game Port","Description":"Port for game traffic","ChildPorts":null},{"Protocol":2,"Port":27016,"Offset":0,"Range":1,"Ref":"ApplicationPort2","Name":"Steam Query Port","Description":"Port for Steam query traffic","ChildPorts":null},{"Protocol":2,"Port":27017,"Offset":0,"Range":1,"Ref":"ApplicationPort3","Name":"Steam Port","Description":"Port for Steam traffic","ChildPorts":null}]
App.AdminPortRef=RemoteAdminPort App.AdminPortRef=RemoteAdminPort
App.PrimaryApplicationPortRef=ApplicationPort1 App.PrimaryApplicationPortRef=ApplicationPort1
App.UniversalSleepApplicationUDPPortRef=ApplicationPort1 App.UniversalSleepApplicationUDPPortRef=ApplicationPort1
@ -52,7 +52,7 @@ App.AdminLoginTransform=None
App.RCONConnectDelaySeconds=5 App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=5 App.RCONConnectRetrySeconds=5
App.TelnetLoginFormat={0} App.TelnetLoginFormat={0}
App.UpdateSources=[{"UpdateStageName":"SteamCMD Download","UpdateSourcePlatform":"All","UpdateSource":"SteamCMD","UpdateSourceData":"1180760","UpdateSourceArgs":"632360","ForceDownloadPlatform":"Windows"},{"UpdateStageName":"SteamCMD Download","UpdateSourcePlatform":"All","UpdateSource":"SteamCMD","UpdateSourceData":"1007","UpdateSourceTarget":"1180760","ForceDownloadPlatform":"Windows"},{"UpdateStageName":"Initialise Wine","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/bash","UpdateSourceArgs":"-c 'WINEPREFIX=\"{{$FullRootDir}}.wine\" WINEARCH=win64 /usr/bin/wineboot --init --update'"}] App.UpdateSources=@IncludeJson[risk-of-rain-2updates.json]
App.Compatibility=None App.Compatibility=None
App.SteamUpdateAnonymousLogin=True App.SteamUpdateAnonymousLogin=True
App.SteamForceLoginPrompt=False App.SteamForceLoginPrompt=False
@ -66,7 +66,7 @@ App.ApplicationReadyMode=RegexMatch
App.TemplateMatchRegex={{(\$?[\w]+)}} App.TemplateMatchRegex={{(\$?[\w]+)}}
Console.FilterMatchRegex= Console.FilterMatchRegex=
Console.FilterMatchReplacement= Console.FilterMatchReplacement=
Console.ThrowawayMessageRegex=^.*Couldn't create a Convex Mesh from source mesh.*$|^.*Shader .* fallback shader .* not found.*$|^.*\[RoR2\.Audio\.NetworkSoundEventCatalog\] Error during network sound registration.*does not exist.*$|^.*\(Filename:.*Line: \d+\).*$ Console.ThrowawayMessageRegex=^.*Couldn't create a Convex Mesh from source mesh.*$|^.*Shader .* fallback shader .* not found.*$|^.*\[RoR2\.Audio\.NetworkSoundEventCatalog\] Error during network sound registration.*does not exist.*$|^.*\(Filename:.*Line: \d+\).*|Fallback handler could not load library .*$
Console.AppReadyRegex=^.*Press Enter to chat.*$ Console.AppReadyRegex=^.*Press Enter to chat.*$
Console.UserJoinRegex=^.*NetworkManagerSystem\.AddPlayerInternal\(conn=hostId: \d+ connectionId: (?<sessionid>\d+) .*$ Console.UserJoinRegex=^.*NetworkManagerSystem\.AddPlayerInternal\(conn=hostId: \d+ connectionId: (?<sessionid>\d+) .*$
Console.UserLeaveRegex=^.*Log: connection \{(?<sessionid>\d+)\} has been disconnected by timeout.*$ Console.UserLeaveRegex=^.*Log: connection \{(?<sessionid>\d+)\} has been disconnected by timeout.*$

View File

@ -1,22 +1,74 @@
[ [
{ {
"DisplayName": "Host name", "DisplayName":"Game Port",
"Category":"Server Settings", "Category":"Server Settings",
"Description": "Display name of the host", "Description":"",
"Keywords": "host name server", "Keywords":"",
"FieldName":"$ApplicationPort1",
"InputType":"number",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"sv_port",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Steam Query Port",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$ApplicationPort2",
"InputType":"number",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"steam_server_query_port",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Steam Port",
"Category":"Server Settings",
"Description":"",
"Keywords":"",
"FieldName":"$ApplicationPort3",
"InputType":"number",
"Hidden":true,
"IsFlagArgument":false,
"ParamFieldName":"steam_server_steam_port",
"IncludeInCommandLine":false,
"EnumValues":{}
},
{
"DisplayName":"Host Name",
"Category":"Server Settings",
"Description":"Sets the name of the server displayed publicly",
"Keywords":"host,name,server,sv_hostname",
"FieldName":"sv_hostname", "FieldName":"sv_hostname",
"InputType":"text", "InputType":"text",
"IsFlagArgument":false, "IsFlagArgument":false,
"ParamFieldName":"sv_hostname", "ParamFieldName":"sv_hostname",
"IncludeInCommandLine":false, "IncludeInCommandLine":false,
"DefaultValue": "Powered by AMP", "DefaultValue":"ROR2 - Powered by AMP",
"EnumValues":{} "EnumValues":{}
}, },
{ {
"DisplayName": "Password", "DisplayName":"Custom Tags",
"Category":"Server Settings", "Category":"Server Settings",
"Description": "Server password for users to join", "Description":"Comma separated list of tags to display in the server browser",
"Keywords": "server password users", "Keywords":"custom,tags,sv_custom_tags",
"FieldName":"sv_custom_tags",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"sv_custom_tags",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Server Password",
"Category":"Server Settings",
"Description":"Sets the password for players to join the server. Default is no password",
"Keywords":"server,password,users,sv_password",
"FieldName":"sv_password", "FieldName":"sv_password",
"InputType":"password", "InputType":"password",
"IsFlagArgument":false, "IsFlagArgument":false,
@ -26,24 +78,24 @@
"EnumValues":{} "EnumValues":{}
}, },
{ {
"DisplayName": "Max Players", "DisplayName":"Player Limit",
"Category":"Server Settings", "Category":"Server Settings",
"Description": "The maximum number of players", "Description":"Sets the maximum number of players that may join the server at one time",
"Keywords": "max players", "Keywords":"max,players,sv_maxplayers",
"FieldName":"$MaxUsers", "FieldName":"$MaxUsers",
"InputType":"number", "InputType":"number",
"MinValue":"1",
"IsFlagArgument":false, "IsFlagArgument":false,
"ParamFieldName":"sv_maxplayers", "ParamFieldName":"sv_maxplayers",
"IncludeInCommandLine":false, "IncludeInCommandLine":false,
"DefaultValue":"4", "DefaultValue":"4",
"EnumValues": {}, "EnumValues":{}
"MinValue":"1"
}, },
{ {
"DisplayName": "Steam Heartbeat", "DisplayName":"Advertise Server",
"Category":"Server Settings", "Category":"Server Settings",
"Description": "Advertise on the server list", "Description":"If enabled, the server will be advertised on the server list",
"Keywords": "advertise server list steam heartbeat", "Keywords":"advertise,server,list,steam,heartbeat,steam_server_heartbeat_enabled",
"FieldName":"steam_server_heartbeat_enabled", "FieldName":"steam_server_heartbeat_enabled",
"InputType":"checkbox", "InputType":"checkbox",
"IsFlagArgument":false, "IsFlagArgument":false,
@ -58,8 +110,8 @@
{ {
"DisplayName":"Game Mode", "DisplayName":"Game Mode",
"Category":"Server Settings", "Category":"Server Settings",
"Description": "Select a game mode for the server", "Description":"Sets the game mode for the server",
"Keywords": "game mode", "Keywords":"game,mode,gamemode",
"FieldName":"gamemode", "FieldName":"gamemode",
"InputType":"enum", "InputType":"enum",
"IsFlagArgument":false, "IsFlagArgument":false,
@ -68,8 +120,51 @@
"DefaultValue":"ClassicRun", "DefaultValue":"ClassicRun",
"EnumValues":{ "EnumValues":{
"EclipseRun":"Eclipse", "EclipseRun":"Eclipse",
"ClassicRun": "Normal", "ClassicRun":"Normal (default)",
"InfiniteTowerRun":"Simulacrum" "InfiniteTowerRun":"Simulacrum"
} }
},
{
"DisplayName":"Additional Server Settings",
"Category":"Server Settings",
"Description":"Specifies additional [settings](https://riskofrain2.fandom.com/wiki/Developer_Console) to include in \"server.cfg\". Each setting must be on a separate line and end with a semi-colon (;)",
"Keywords":"additional,settings,custom",
"FieldName":"UserSettings",
"InputType":"Textarea",
"IsFlagArgument":false,
"ParamFieldName":"UserSettings",
"IncludeInCommandLine":false,
"DefaultValue":"",
"EnumValues":{}
},
{
"DisplayName":"Install BepInEx",
"Category":"SteamCMD and Updates",
"Description":"Installs BepInEx. You must also select the \"BepInEx Version\" in the next field. NOTE: Update the server after enabling this option",
"Keywords":"install,bepinex",
"FieldName":"BepInExInstall",
"InputType":"checkbox",
"IsFlagArgument":false,
"ParamFieldName":"BepInExInstall",
"IncludeInCommandLine":false,
"DefaultValue":"false",
"EnumValues":{
"False":"false",
"True":"true"
}
},
{
"DisplayName":"BepInEx Version",
"Category":"SteamCMD and Updates",
"Description":"The version of BepInEx to download. You can find the latest version on [Thunderstore.io](https://thunderstore.io/package/bbepis/BepInExPack/). NOTE: Update the server after editing this option",
"Keywords":"install,bepinex,version",
"FieldName":"BepInExVersion",
"InputType":"text",
"IsFlagArgument":false,
"ParamFieldName":"BepInExVersion",
"IncludeInCommandLine":false,
"DefaultValue":"5.4.2109",
"Placeholder":"5.4.2109",
"EnumValues":{}
} }
] ]

View File

@ -1,23 +1,8 @@
[ [
{ {
"ConfigFile":"Risk of Rain 2_Data/Config/server.cfg", "ConfigFile":"Risk of Rain 2_Data/Config/server.cfg",
"ConfigType": "kvp", "ConfigType":"template",
"ConfigFormat": "{0} \"{1}\";", "AutoMap":true,
"Subsections": [ "ConfigFileTemplate":"risk-of-rain-2/AMP_server.cfg"
{
"Heading": "$root",
"SettingMappings": {
"sv_maxplayers": "$MaxUsers",
"steam_server_heartbeat_enabled": "steam_server_heartbeat_enabled",
"sv_hostname": "sv_hostname",
"sv_port": "$ApplicationPort1",
"steam_server_query_port": "$ApplicationPort2",
"steam_server_steam_port": "$ApplicationPort3",
"sv_password": "sv_password",
"gamemode": "gamemode"
}
}
]
} }
] ]

13
risk-of-rain-2server.cfg Normal file
View File

@ -0,0 +1,13 @@
// This file is controlled by AMP and
// must be configured via AMP
sv_maxplayers {{sv_maxplayers}};
steam_server_heartbeat_enabled {{steam_server_heartbeat_enabled}};
sv_hostname "{{sv_hostname}}";
sv_port {{sv_port}};
steam_server_query_port {{steam_server_query_port}};
steam_server_steam_port {{steam_server_steam_port}};
sv_password "{{sv_password}}";
sv_custom_tags "{{sv_custom_tags}}";
gamemode "{{gamemode}}";
{{UserSettings}}

View File

@ -0,0 +1,65 @@
[
{
"UpdateStageName":"SteamCMD Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"1180760",
"UpdateSourceArgs":"632360",
"ForceDownloadPlatform":"Windows"
},
{
"UpdateStageName":"SteamCMD Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"SteamCMD",
"UpdateSourceData":"1007",
"UpdateSourceTarget":"1180760",
"ForceDownloadPlatform":"Windows"
},
{
"UpdateStageName":"Server Config Template File Download",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://raw.githubusercontent.com/Greelan/AMPTemplates/dev/risk-of-rain-2server.cfg",
"UpdateSourceArgs":"AMP_server.cfg",
"UpdateSourceTarget":"{{$FullRootDir}}",
"OverwriteExistingFiles":true
},
{
"UpdateStageName":"Download BepInEx From Thunderstore",
"UpdateSourcePlatform":"All",
"UpdateSource":"FetchURL",
"UpdateSourceData":"https://gcdn.thunderstore.io/live/repository/packages/bbepis-BepInExPack-{{BepInExVersion}}.zip",
"UpdateSourceArgs":"bbepis-BepInExPack-{{BepInExVersion}}.zip",
"UpdateSourceTarget":"{{$FullBaseDir}}",
"UpdateSourceConditionSetting":"BepInExInstall",
"UpdateSourceConditionValue":"true",
"UnzipUpdateSource":true,
"OverwriteExistingFiles":true,
"DeleteAfterExtract":true
},
{
"UpdateStageName":"BepInEx Copy",
"UpdateSourcePlatform":"Windows",
"UpdateSource":"Executable",
"UpdateSourceData":"cmd.exe",
"UpdateSourceArgs":"/C xcopy /E /Y /I risk-of-rain-2\\1180760\\BepInExPack\\* risk-of-rain-2\\1180760\\ && rmdir /Q /S risk-of-rain-2\\1180760\\BepInExPack",
"UpdateSourceConditionSetting":"BepInExInstall",
"UpdateSourceConditionValue":"true"
},
{
"UpdateStageName":"BepInEx Copy",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c '\\cp -rf ./risk-of-rain-2/1180760/BepInExPack/* ./risk-of-rain-2/1180760/ && rm -rf ./risk-of-rain-2/1180760/BepInExPack/'",
"UpdateSourceConditionSetting":"BepInExInstall",
"UpdateSourceConditionValue":"true"
},
{
"UpdateStageName":"Initialise Wine",
"UpdateSourcePlatform":"Linux",
"UpdateSource":"Executable",
"UpdateSourceData":"/bin/bash",
"UpdateSourceArgs":"-c 'WINEPREFIX=\"{{$FullRootDir}}.wine\" WINEARCH=win64 /usr/bin/wineboot --init --update'"
}
]