Skip to content

Commit cab2856

Browse files
authored
Add Windrose (#1879)
1 parent 0bed7f9 commit cab2856

6 files changed

Lines changed: 278 additions & 0 deletions

windrose.kvp

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
Meta.DisplayName=Windrose
2+
Meta.Description=Windrose Dedicated Server
3+
Meta.OS=Windows, Linux
4+
Meta.AarchSupport=Unknown
5+
Meta.Arch=x86_64
6+
Meta.Author=Greelan
7+
Meta.URL=https://windrosecrew.com/
8+
Meta.DisplayImageSource=url:https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/3041230/7e838d87d787735d5d29d72777c5ee55653dfb2b/header.jpg
9+
Meta.EndpointURIFormat=
10+
Meta.ConfigManifest=windroseconfig.json
11+
Meta.MetaConfigManifest=windrosemetaconfig.json
12+
Meta.ConfigRoot=windrose.kvp
13+
Meta.MinAMPVersion=2.6.0.0
14+
Meta.SpecificDockerImage=cubecoders/ampbase:wine-stable
15+
Meta.DockerRequired=False
16+
Meta.DockerBaseReadOnly=False
17+
Meta.ContainerPolicy=SupportedOnWindows, RecommendedOnLinux
18+
Meta.ContainerPolicyReason=The server requires Wine (ideally latest stable from winehq.org) to run on Linux. Using a container avoids the need for you to install this dependency on the host.
19+
Meta.ExtraSetupStepsURI=
20+
Meta.Prerequisites=[]
21+
Meta.ExtraContainerPackages=[]
22+
Meta.ConfigReleaseState=NotSpecified
23+
Meta.NoCommercialUsage=False
24+
Meta.ConfigVersion=1
25+
Meta.ReleaseNotes=
26+
Meta.BreakingReleaseNotes=
27+
Meta.AppConfigId=719703a2-78d0-45fc-86c7-3d548aba1706
28+
Meta.ImportableExtensions=[".json"]
29+
Meta.AppIsMultiIPAware=False
30+
App.DisplayName=Windrose
31+
App.RootDir=./windrose/
32+
App.BaseDirectory=./windrose/4129620/
33+
App.SteamWorkshopDownloadLocation=
34+
App.ExecutableWin=4129620\R5\Binaries\Win64\WindroseServer-Win64-Shipping.exe
35+
App.ExecutableLinux=/usr/bin/wine
36+
App.WorkingDir=4129620
37+
App.LinuxCommandLineArgs="{{$FullBaseDir}}R5/Binaries/Win64/WindroseServer-Win64-Shipping.exe"
38+
App.WindowsCommandLineArgs=
39+
App.CommandLineArgs={{$PlatformArgs}} R5 {{$FormattedArgs}} -stdout -FullStdOutLogOutput
40+
App.UseLinuxIOREDIR=False
41+
App.AppSettings={}
42+
App.EnvironmentVariables={"SteamAppId":"3041230","WINEPREFIX":"{{$FullRootDir}}.wine","WINEARCH":"win64","WINEDEBUG":"-all"}
43+
App.CommandLineParameterFormat=-{0}={1}
44+
App.CommandLineParameterDelimiter=
45+
App.ExitMethod=OS_CLOSE
46+
App.ExitMethodWindows=None
47+
App.ExitTimeout=30
48+
App.ExitString=exit
49+
App.ExitFile=app_exit.lck
50+
App.RestartDelaySeconds=0
51+
App.HasWriteableConsole=False
52+
App.HasReadableConsole=True
53+
App.UDPLogger=False
54+
App.SupportsLiveSettingsChanges=False
55+
App.LiveSettingChangeCommandFormat=
56+
App.ForceIPBinding=False
57+
App.SupportsIPv6=False
58+
App.ApplicationIPBinding=0.0.0.0
59+
App.Ports=@IncludeJson[windroseports.json]
60+
App.AdminPortRef=0
61+
App.PrimaryApplicationPortRef=GamePort
62+
App.UniversalSleepApplicationUDPPortRef=0
63+
App.UniversalSleepSteamQueryPortRef=0
64+
App.MaxUsers=4
65+
App.UseRandomAdminPassword=False
66+
App.PersistRandomPassword=False
67+
App.RemoteAdminPassword=
68+
App.AdminMethod=STDIO
69+
App.IgnoreSTDOUTAfterRCON=False
70+
App.AdminLoginTransform=None
71+
App.StripANSIControlCodes=True
72+
App.LoginTransformPrefix=
73+
App.RCONConnectDelaySeconds=5
74+
App.RCONConnectRetrySeconds=5
75+
App.RCONHeartbeatMinutes=0
76+
App.RCONHeartbeatCommand=ping
77+
App.RCONSelectIPMethod=Default
78+
App.TelnetLoginFormat={0}
79+
App.TelnetNewLineType=Default
80+
App.TailLogFilePath={{$FullBaseDir}}R5/Saved/Logs/R5.log
81+
App.UpdateSources=@IncludeJson[windroseupdates.json]
82+
App.PreStartStages=[]
83+
App.CommandTriggers={}
84+
App.UserActions=[]
85+
App.ForceUpdate=False
86+
App.ForceUpdateReason=
87+
App.Compatibility=None
88+
App.SteamUpdateAnonymousLogin=True
89+
App.SteamForceLoginPrompt=False
90+
App.RapidStartup=False
91+
App.SmartExcludeExemptions=[".cfg",".conf",".config",".ini",".json",".xml",".properties",".kvp",".yml",".yaml",".toml",".lua"]
92+
App.SmartExcludeSupported=False
93+
App.DumpFullChildProcessTree=False
94+
App.MonitorChildProcessName=^.*{{$WineBaseDir}}R5\\Binaries\\Win64\\WindroseServer-Win64-Shipping\.exe.*$
95+
App.MonitorDirectChildOnly=False
96+
App.SupportsUniversalSleep=False
97+
App.UseSteamQueryForStatus=False
98+
App.WakeupMode=Any
99+
App.ApplicationReadyMode=RegexMatch
100+
App.QuiesceCommand=
101+
App.DequiesceCommand=
102+
App.QuiesceSettleDelayMilliseconds=5
103+
Console.FilterMatchRegex=(\e\[(\d+;)*(\d+)?[ABCDHJKfmsu]|\e\[?[?\>\=\da-z]+|ProtonFixes\[\d+\] WARN: Skipping fix execution\. We are probably running a unit test\.)
104+
Console.FilterMatchReplacement=
105+
Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+$
106+
Console.AppReadyRegex=^\[[\d\.]+-[\d\.]+:\d+\]\[[\d ]+\]LogGlobalStatus: UEngine::LoadMap Load map complete.*$
107+
Console.UserJoinRegex=^\s+ServerAccount\. AccountName '(?<username>.+?)'\. AccountId (?<userid>.+?)\. PlayerState .*$
108+
Console.UserLeaveRegex=^\s+\s+\d+. Name '(?<username>.+?)'\. AccountId '(?<userid>.+?)'\. State 'SaidFarewell'\..*$
109+
Console.UserChatRegex=
110+
Console.UpdateAvailableRegex=
111+
Console.PreConnectRegex=
112+
Console.ConnectIPRegex=
113+
Console.MetricsRegex=
114+
Console.ServerInfoRegex=^\s+\"InviteCode\": \"(?<Invite_Code>\w+)\",$
115+
Console.ServerAuthURLPromptRegex=
116+
Console.ServerAuthAckRegex=
117+
Console.ConsoleFormatRegex=
118+
Console.DownloadProgressRegex=
119+
Console.HideFromConsoleRegex=
120+
Console.SuppressLogAtStart=False
121+
Console.UserActions={}
122+
Limits.SleepMode=True
123+
Limits.SleepOnStart=False
124+
Limits.SleepDelayMinutes=5
125+
Limits.DozeDelay=2
126+
Limits.AutoRetryCount=2
127+
Limits.SleepStartThresholdSeconds=25

windroseconfig.json

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
[
2+
{
3+
"DisplayName": "Invite Code",
4+
"Category": "Windrose:stadia_controller",
5+
"Subcategory": "Server:dns:1",
6+
"Description": "Sets the invite code used to search for the server in-game. Must contain at least 8 alphanumeric characters. Case-sensitive. Empty or not valid = a new invite code will be generated at server start (which can be imported from 'R5/ServerDescription.json' into this setting for persistence)",
7+
"Keywords": "invite,code,invitecode,search",
8+
"FieldName": "InviteCode",
9+
"InputType": "text",
10+
"ParamFieldName": "$.ServerDescription_Persistent.InviteCode",
11+
"DefaultValue": "",
12+
"Placeholder": "d6221bb7",
13+
"EnumValues": {}
14+
},
15+
{
16+
"DisplayName": "World Island ID",
17+
"Category": "Windrose:stadia_controller",
18+
"Subcategory": "Server:dns:1",
19+
"Description": "Sets the ID of world to load on server start. It must match the ID in that world's 'WorldDescription.json' file. Empty = new world (the world ID generated for that world can be imported from 'R5/ServerDescription.json' into this setting)",
20+
"Keywords": "world,id,worldId,worldislandid",
21+
"FieldName": "WorldIslandId",
22+
"InputType": "text",
23+
"ParamFieldName": "$.ServerDescription_Persistent.WorldIslandId",
24+
"DefaultValue": "",
25+
"Placeholder": "DB57768A8A7746899683D0EEE91F97BF",
26+
"EnumValues": {}
27+
},
28+
{
29+
"DisplayName": "Server Note",
30+
"Category": "Windrose:stadia_controller",
31+
"Subcategory": "Server:dns:1",
32+
"Description": "Sets an additional description for the server. Helpful in rare cases of similar invite codes",
33+
"Keywords": "note,description,server,note",
34+
"FieldName": "Note",
35+
"InputType": "text",
36+
"ParamFieldName": "$.ServerDescription_Persistent.Note",
37+
"DefaultValue": "",
38+
"EnumValues": {}
39+
},
40+
{
41+
"DisplayName": "Enable Password Protection",
42+
"Category": "Windrose:stadia_controller",
43+
"Subcategory": "Server:dns:1",
44+
"Description": "If set, the password set under Server Password will be required to join the server",
45+
"Keywords": "password,protected,ispasswordprotected",
46+
"FieldName": "IsPasswordProtected",
47+
"InputType": "checkbox",
48+
"ParamFieldName": "$.ServerDescription_Persistent.IsPasswordProtected",
49+
"DefaultValue": "false",
50+
"EnumValues": {
51+
"False": "false",
52+
"True": "true"
53+
}
54+
},
55+
{
56+
"DisplayName": "Server Password",
57+
"Category": "Windrose:stadia_controller",
58+
"Subcategory": "Server:dns:1",
59+
"Description": "Sets the password required to join the server. Enable Password Protection must be set for this to take effect",
60+
"Keywords": "server,password",
61+
"FieldName": "Password",
62+
"InputType": "password",
63+
"ParamFieldName": "$.ServerDescription_Persistent.Password",
64+
"DefaultValue": "",
65+
"EnumValues": {}
66+
},
67+
{
68+
"DisplayName": "Player Limit",
69+
"Category": "Windrose:stadia_controller",
70+
"Subcategory": "Server:dns:1",
71+
"Description": "Sets the maximum number of players allowed on the server at one time. More than 4 players may cause performance issues, particularly when deploying large frigates",
72+
"Keywords": "max,player,count,players,limit,maxplayercount",
73+
"FieldName": "$MaxUsers",
74+
"InputType": "number",
75+
"MinValue": "1",
76+
"MaxValue": "10",
77+
"ParamFieldName": "$.ServerDescription_Persistent.MaxPlayerCount",
78+
"DefaultValue": "4",
79+
"Placeholder": "4",
80+
"Suffix": "players",
81+
"EnumValues": {}
82+
}
83+
]

windrosemetaconfig.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[
2+
{
3+
"ConfigFile": "R5/ServerDescription.json",
4+
"AutoMap": true,
5+
"Importable": true,
6+
"ConfigType": "json"
7+
}
8+
]

windroseports.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[
2+
{
3+
"Protocol": "UDP",
4+
"Port": 7777,
5+
"Ref": "GamePort",
6+
"Name": "Game Port",
7+
"Description": "Port used for main game traffic"
8+
}
9+
]

windroseserverdescription.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"Version": 1,
3+
"ServerDescription_Persistent": {
4+
"PersistentServerId": "",
5+
"InviteCode": "",
6+
"IsPasswordProtected": false,
7+
"Password": "",
8+
"Note": "",
9+
"WorldIslandId": "",
10+
"MaxPlayerCount": 4,
11+
"P2pProxyAddress": "127.0.0.1"
12+
}
13+
}

windroseupdates.json

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[
2+
{
3+
"UpdateStageName": "Windrose Download",
4+
"UpdateSourcePlatform": "All",
5+
"UpdateSource": "SteamCMD",
6+
"UpdateSourceData": "4129620",
7+
"UpdateSourceArgs": "3041230",
8+
"ForceDownloadPlatform": "Windows",
9+
"SkipOnFailure": false
10+
},
11+
{
12+
"UpdateStageName": "SteamCMD Component Download",
13+
"UpdateSourcePlatform": "All",
14+
"UpdateSource": "SteamCMD",
15+
"UpdateSourceData": "1007",
16+
"UpdateSourceTarget": "{{$FullBaseDir}}R5/Binaries/Win64",
17+
"ForceDownloadPlatform": "Windows",
18+
"SkipOnFailure": false
19+
},
20+
{
21+
"UpdateStageName": "Default ServerDescription.json Download",
22+
"UpdateSourcePlatform": "All",
23+
"UpdateSource": "FetchURL",
24+
"UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/windroseserverdescription.json",
25+
"UpdateSourceTarget": "{{$FullBaseDir}}R5",
26+
"UpdateSourceArgs": "ServerDescription.json",
27+
"OverwriteExistingFiles": false,
28+
"SkipOnFailure": false
29+
},
30+
{
31+
"UpdateStageName": "Initialise Wine",
32+
"UpdateSourcePlatform": "Linux",
33+
"UpdateSource": "Executable",
34+
"UpdateSourceData": "/bin/bash",
35+
"UpdateSourceArgs": "-c \"rm -rf \\\"{{$FullRootDir}}.wine\\\" >/dev/null 2>&1; WINEPREFIX=\\\"{{$FullRootDir}}.wine\\\" WINEARCH=win64 WINEDEBUG=-all /usr/bin/wineboot --init\"",
36+
"SkipOnFailure": false
37+
}
38+
]

0 commit comments

Comments
 (0)