aboutsummaryrefslogtreecommitdiff
path: root/docs/hosting-a-server-with-northstar/dedicated-server/README.md
blob: cb918c3c013596142997c04096c5172285c62daf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
# Hosting a Dedicated Server

## Hosting a Dedicated Server

### Setup

Dedicated servers allow you to host a Northstar server without having to use a full client, making them more lightweight and easier to host for longer periods of time. Dedicated servers are still in development for Northstar, so while they do work, expect some bugs and general jank.\
To start a dedicated server on Northstar, launch NorthstarLauncher.exe with the argument `-dedicated`, this can be done manually, but releases also provide the batch file `r2ds.bat`, which will also do this.\
When using a dedicated server, arguments are read from `ns_startup_args_dedi.txt`, rather than `ns_startup_args.txt`.

#### Useful configuration files

* `ns_startup_args_dedi.txt`\
  contains the [startup arguments](./#startup-arguments)
* `R2Northstar\mods\Northstar.CustomServers\mod.json`\
  contains [ConVars](./#convars) default values
* `R2Northstar\mods\Northstar.CustomServers\mod\cfg\autoexec_ns_server.cfg`\
  contains [ConVars](./#convars) and overrides

### Dedicated Server Caveats

At the moment, dedicated servers still require DirectX 11 to work, which typically requires a physical GPU, though they use almost no GPU processing power while in use, this can be an issue especially on GPU-less setups, so the launch argument `-softwared3d11` can be used to force DirectX to run in software mode.\
While this is absolutely not ideal, it's the best solution for truly headless dedicated servers at the moment, and surprisingly hardly uses any CPU time, though it can use roughly up to 1GB of RAM.\
Regarding RAM usage, dedicated servers also use significant amounts of RAM at the moment, often requiring 1.5-2GB, though I expect this to lower as development continues.

### Troubleshoot

See [troubleshoot](../troubleshooting.md)

## Startup Arguments

Startup arguments can be added in the `ns_startup_args_dedi.txt` file.\
Example: `+setplaylist private_match +mp_gamemode ps`

| Arguments                  | Accepted Values                                                 | Description                                                               |
| -------------------------- | --------------------------------------------------------------  | ------------------------------------------------------------------------- |
| `+setplaylist`             | see [Gamemodes](./#gamemodes) (Should be the same as `mp_gamemode` unless you want a private match) | Set the server type (If it is not `private_match`, make sure you have also included `+map` and NOT `mp_lobby` or else you can't search your server in the game) |
| `+setplaylistvaroverrides` | see [PlaylistOverrides](./#playlist-overrides)                  | Edits the behaviour of the server                                         |
| `-port`                    | int beteween `1-65535`                                          | Determines which UDP port the server will listen to                       |
| `+mp_gamemode`             | see [Gamemodes](./#gamemodes)                                   | Forces the gamemode of the server                                         |
| `+map`                     | see [Maps](./#maps) (`mp_lobby` is the default if not included) | Forces the map of the server at the first start                           |

| Flags                 | Description                                                                    |
| --------------------- | ------------------------------------------------------------------------------ |
| `-maxplayersplaylist` | Allows [PlaylistOverrides](./#playlist-overrides) to override max player count |
| `-enablechathooks`    | Allows send the commands using in-game chat                                    |
| `-allowdupeaccounts`  | Allows the same account joining multiple times                                 |

### Playlist overrides

Playlist overrides determines the behaviour of the server. PlaylistOverrides can be added using the `+setplaylistvaroverrides` argument in the `ns_startup_args_dedi.txt` file.

The list of playlist overrides needs to be quoted and separated by spaces.\
Example: `+setplaylistvaroverrides "run_epilogue 0 featured_mode_amped_tacticals 1"`

| PlaylistOverrides                            | Accepted Values | Default Value | Description                                                                                    |
| -------------------------------------------- | --------------- | ------------- | ---------------------------------------------------------------------------------------------- |
| `max_players`                                | `int`           |               | Needs to be in combination with the [`-maxplayersplaylist`](./#Startup\_flags-maxplrplst) flag |
| `custom_air_accel_pilot`                     |                 |               |                                                                                                |
| `pilot_health_multiplier`                    |                 |               |                                                                                                |
| `run_epilogue`                               | `0-1`           | `1`           | Enables escape dropship                                                                        |
| `respawn_delay`                              |                 |               | Delay before respawn                                                                            |
| `boosts_enabled`                             | `0-1`           | `0`           | Disable boosts. Doesn't disable Titanmeter. Note that unlike the name suggests `1` disables boosts |
| `earn_meter_pilot_overdrive`                 | `0-1`           |               |                                                                                                |
| `earn_meter_pilot_multiplier`                |                 |               |                                                                                                |
| `earn_meter_titan_multiplier`                |                 |               |                                                                                                |
| `aegis_upgrades`                             | `0-1`           | `0`           | Enable titan aegis upgrades                                                                    |
| `infinite_doomed_state`                      | `0-1`           |               |                                                                                                |
| `titan_shield_regen`                         | `0-1`           | `0`           | Enable regenerating titan shields                                                             |
| `scorelimit`                                 |                 |               |                                                                                                |
| `roundscorelimit`                            |                 |               |                                                                                                |
| `timelimit`                                  |                 |               |                                                                                                |
| `oob_timer_enabled`                          | `0-1`           |               | Out of bounds timer enable                                                                      |
| `roundtimelimit`                             |                 |               |                                                                                                |
| `classic_rodeo`                              | `0-1`           |               |                                                                                                |
| `classic_mp`                                 | `0-1`           | `1`           | Enables intro dropship                                                                         |
| `fp_embark_enabled`                          |                 |               | First person embark and terminations                                                            |
| `promode_enable`                             | `0-1`           | `0`           |                                                                                                |
| `riff_floorislava`                           | `0-1`           | `0`           | Covers the whole map with deadly electric smoke                                                |
| `featured_mode_all_holopilot`                | `0-1`           | `0`           |                                                                                                |
| `featured_mode_all_grapple`                  | `0-1`           | `0`           |                                                                                                |
| `featured_mode_all_phase`                    | `0-1`           | `0`           |                                                                                                |
| `featured_mode_all_ticks`                    | `0-1`           | `0`           |                                                                                                |
| `featured_mode_tactikill`                    | `0-1`           | `0`           |                                                                                                |
| `featured_mode_amped_tacticals`              | `0-1`           | `0`           |                                                                                                |
| `featured_mode_rocket_arena`                 | `0-1`           | `0`           |                                                                                                |
| `featured_mode_shotguns_snipers`             | `0-1`           | `0`           |                                                                                                |
| `iron_rules`                                 | `0-1`           | `0`           | Disables ejection and disembark                                                                |
| `riff_player_bleedout`                       |                 |               |                                                                                                |
| `player_bleedout_forceHolster`               |                 |               |                                                                                                |
| `player_bleedout_forceDeathOnTeamBleedout`   |                 |               |                                                                                                |
| `player_bleedout_bleedoutTime`               |                 |               |                                                                                                |
| `player_bleedout_firstAidTime`               |                 |               |                                                                                                |
| `player_bleedout_firstAidTimeSelf`           |                 |               |                                                                                                |
| `player_bleedout_firstAidHealPercent`        |                 |               |                                                                                                |
| `player_bleedout_aiBleedingPlayerMissChance` |                 |               |                                                                                                |

### Sticks and Stones playlist overrides

| PlaylistOverrides for SNS                    | Accepted Values | Default Value | Description                                                                                    |
| -------------------------------------------- | --------------- | ------------- | ---------------------------------------------------------------------------------------------- |
| sns_softball_enabled                       | 0-1           | 0           | Enables Softball usage                                                                        |
| sns_softball_kill_value                    | int           | 10          |                                                                                                |
| sns_wme_kill_value                         | int           | 10          |                                                                                                |
| sns_offhand_kill_value                     | int           | 10          |                                                                                                |
| sns_reset_kill_value                       | int           | 5           |                                                                                                |
| sns_melee_kill_value                       | int           | 5           |                                                                                                |
| sns_reset_pulse_blade_cooldown_on_pulse_blade_kill | 0-1   | 1           | Enables getting Pulse Blade back after a Pulse Blade kill                                 |

## Convars

Convars are located inside the `R2Northstar\mods\Northstar.CustomServers\mod\cfg\autoexec_ns_server.cfg` file.

They allow the server admin to set server's properties like the name, port, and description.

| Name                                             | Description                                                                                                                                                                                 | Default Value                  | Accepted Values                                    |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | -------------------------------------------------- |
| `ns_server_name`                                 | Your server's name on the server browser                                                                                                                                                    | `"Unnamed Northstar Server"`   | `string`                                           |
| `ns_server_desc`                                 | Your server's description on the server browser                                                                                                                                             | `"Default server description"` | `string`                                           |
| `ns_server_password`                             | The password required to join your server, can be bypassed if clients directly connect and you are using insecure auth                                                                      | `""`                           | `string`                                           |
| `ns_report_server_to_masterserver`               | Whether your server should report itself to the masterserver, for use in auth and the serverbrowser                                                                                         | `1`                            | `0-1`                                              |
| `ns_report_sp_server_to_masterserver`            | Whether your server should report itself to the masterserver if started on a singleplayer map, for use in auth and the serverbrowser                                                        | `0`                            | `0-1`                                              |
| `ns_auth_allow_insecure`                         | Allows clients to join your server without authenticating with the masterserver, currently required to allow clients to connect directly to your IP, rather than through the server browser | `0`                            | `0-1`                                              |
| `ns_erase_auth_info`                             | Whether your server should erase authentication information after it is used, this is useful for development but should normally be kept at 1                                               | `1`                            | `0-1`                                              |
| `ns_player_auth_port`                            | Northstar v1.12 and older only. The port used for the server's local authentication server, this is the TCP port we forwarded earlier                                                       | `8081`                         | `1-65535`                                          |
| `everything_unlocked`                            | Whether all items, weapons, etc should be unlocked on the server                                                                                                                            | `1`                            | `0-1`                                              |
| `ns_should_return_to_lobby`                      | Whether the server should return to private match lobby after completing a game, if 0, this will go to the next map/mode in the playlist                                                    | `1`                            | `0-1`                                              |
| `ns_private_match_only_host_can_change_settings` | If 0 Players can change all match settings. If 1 Players can only change map and gamemode. If 2 Players can change nothing                                                                  | `0`                            | `0-2`                                              |
| `ns_private_match_countdown_length`              | Length is seconds before the match is started after the start button in the lobby                                                                                                           | `15`                           | `int`                                              |
| `ns_private_match_only_host_can_start`           | If 1 only the host can press the *start match* button, if 0 anyone can press the *start match* button                                                                                       | `0`                            | `0-1`                                              |
| `ns_private_match_last_mode`                     | Forces the lobby to a specific Gamemode                                                                                                                                                     | `tdm`                          | Any [Gamemode](./#gamemodes)                       |
| `ns_private_match_last_map`                      | Forces the lobby to a specific map                                                                                                                                                          | `mp_forwardbase_kodai`         | Any [Map](./#maps)                                 |
| `ns_disallowed_weapons`                          | Blacklists weapons                                                                                                                                                                          |                                | List of [Weapons](./#weapons) separated by a comma |
| `ns_allow_kill_commands`                         | Enables the use of `kill` in the console                                                                                                                                                    | `0`                            | `0-1`                                              |
| `ns_disallowed_weapon_primary_replacement`       | Replaces blacklisted weapons by one weapon                                                                                                                                                  |                                | a [Weapon](./#weapons)                             |
| `ns_should_log_unknown_clientcommands`           | Whether unknown clientcommands should be printed in the console, worth disabling if they get on your nerves                                                                                 | `1`                            | `0-1`                                              |
| `net_chan_limit_mode`                            | If 0, don't limit the netchannel processing time individual clients are allowed. If 1, kick clients that go over the limit. If 2, log clients that go over the limit in console             | `2`                            | `0-2`                                              |
| `net_chan_limit_msec_per_sec`                    | The number of milliseconds of server netchan processing time clients can use per second before triggering the response set in net\_chan\_limit\_mode                                        | `30`                           | `int`                                              |
| `base_tickinterval_mp`                           | The delay between each tick ran on the server, your tickrate will be 1 divided by this value                                                                                                | `0.016666667`                  | `float`                                            |
| `sv_updaterate_mp`                               | The maximum number of times per second your server will send information to connected players, if a player's cl\_updaterate\_mp value is lower than this, their rate will be limited to it  | `20`                           | `int`                                              |
| `sv_max_snapshots_multiplayer`                   | The number of snapshots stored locally for use in replays, this should be set to sv\_updaterate\_mp \* 15                                                                                   | `300`                          | `int`                                              |
| `host_skip_client_dll_crc`                       | Whether the server should allow clients with modified client.dll files to connect, these are used for visor colour edit mods                                                                | `1`                            | `0-1`                                              |

## Gamemodes

Gamemodes can be forced by the server using the [`+mp_gamemode`](./#Startup\_args-mpgamemode) startup arg

If ran on a server with the [`ns_should_return_to_lobby 0`](./#Convars-returntolobby) convar, one should also set gamemodes in [`ns_private_match_last_mode`](./#Convars-lastmode) convar

### Vanilla

| Playlist | Title |
| --- | --- |
| private_match | Private Match |
| aitdm | Attrition |
| at | Bounty Hunt |
| coliseum | Coliseum |
| cp | Amped Hardpoint |
| ctf | Capture the Flag |
| ~~fd_easy~~ | Frontier Defense (Easy) |
| ~~fd_hard~~ | Frontier Defense (Hard) |
| ~~fd_insane~~ | Frontier Defense (Insane) |
| ~~fd_master~~ | Frontier Defense (Master) |
| ~~fd_normal~~ | Frontier Defense (Regular) |
| fw | Frontier War |
| lts | Last Titan Standing |
| mfd | Marked For Death |
| ps | Pilots vs. Pilots |
| solo | Campaign |
| tdm | Skirmish |
| ttdm | Titan Brawl |

Note an exception to the rule of playlist and gamemode names being the same. With Live Fire, startup arguments need to be different for `+setplaylist` and `+mp_gamemode` for a server to run Live Fire.
| Playlist | Gamemode | Title |
| --- | --- | --- |
| lf | speedball | Live Fire |

### Vanilla (Featured)

| Playlist | Title |
| --- | --- |
| alts | Aegis Last Titan Standing |
| attdm | Aegis Titan Brawl |
| ffa | Free For All |
| fra | Free Agents |
| holopilot_lf | The Great Bamboozle |
| rocket_lf | Rocket Arena |
| turbo_lts | Turbo Last Titan Standing |
| turbo_ttdm | Turbo Titan Brawl |

### Northstar.Custom

| Playlist | Title |
| --- | --- |
| chamber | One in the Chamber |
| ctf_comp | Competitive CTF |
| fastball | Fastball |
| gg | Gun Game |
| hidden | The Hidden |
| hs | Hide and Seek |
| inf | Infection |
| kr | Amped Killrace |
| sns | Sticks and Stones |
| tffa | Titan FFA |
| tt | Titan Tag |

### Northstar.Coop

| Playlist | Title |
| --- | --- |
| sp_coop | Singleplayer Coop |

## Weapons

Weapon Code|Weapon name
-|-
mp_weapon_car|CAR
mp_weapon_alternator_smg|Alternator
mp_weapon_hemlok_smg|Volt
mp_weapon_r97|R-97
mp_weapon_hemlok|Hemlock rifle
mp_weapon_vinson|Flatline
mp_weapon_g2|G2
mp_weapon_rspn101|R-201
mp_weapon_rspn101_og|R-101
mp_weapon_esaw|Devotion
mp_weapon_lstar|L-STAR
mp_weapon_lmg|Spitfire
mp_weapon_shotgun|EVA-8 Auto
mp_weapon_mastiff|Mastiff
mp_weapon_dmr|DMR
mp_weapon_sniper|Kraber
mp_weapon_doubletake|Double Take
mp_weapon_pulse_lmg|Cold War
mp_weapon_smr|Sidewinder SMR
mp_weapon_softball|Softball
mp_weapon_epg|EPG-1
mp_weapon_shotgun_pistol|Mozambique
mp_weapon_wingman_n|Wingman Elite
mp_weapon_autopistol|RE-45 Auto
mp_weapon_semipistol|P2016
mp_weapon_wingman|Wingman
mp_weapon_mgl|MGL
mp_weapon_arc_launcher|Thunderbolt
mp_weapon_rocket_launcher|Archer
mp_weapon_defender|Charge Rifle

## Maps

Maps can be set on autorotation using [`ns_should_return_to_lobby 0`](./#Convars-returntolobby)

First map of autorotation can be set using [`ns_private_match_last_map`](./#Convars-lastmap)

A way to blacklist maps with autorotation does not exist.

### Vanilla (mp)

| Map | Title |
| --- | --- |
| mp_angel_city | Angel City |
| mp_black_water_canal | Black Water Canal |
| mp_box | Box |
| mp_coliseum | Coliseum |
| mp_coliseum_column | Pillars |
| mp_colony02 | Colony |
| mp_complex3 | Complex |
| mp_crashsite3 | Crash Site |
| mp_drydock | Drydock |
| mp_eden | Eden |
| mp_forwardbase_kodai | Forwardbase Kodai |
| mp_glitch | Glitch |
| mp_grave | Boomtown |
| mp_homestead | Homestead |
| mp_lf_deck | Deck |
| mp_lf_meadow | Meadow |
| mp_lf_stacks | Stacks |
| mp_lf_township | Township |
| mp_lf_traffic | Traffic |
| mp_lf_uma | UMA |
| mp_lobby | Lobby |
| mp_relic02 | Relic |
| mp_rise | Rise |
| mp_thaw | Exoplanet |
| mp_wargames | War Games |

### Vanilla (sp)

| Map | Title |
| --- | --- |
| sp_training | The Pilot's Gauntlet |
| sp_crashsite | BT-7274 |
| sp_sewers1 | Blood and Rust |
| sp_boomtown_start | Into the Abyss - Part 1 |
| sp_boomtown | Into the Abyss - Part 2 |
| sp_boomtown_end | Into the Abyss - Part 2 |
| sp_hub_timeshift | Effect and Cause - Part 1 or 3 |
| sp_timeshift_spoke02 | Effect and Cause - Part 2 |
| sp_beacon | The Beacon - Part 1 or 3 |
| sp_beacon_spoke0 | The Beacon - Part 2 |
| sp_tday | Trial by Fire |
| sp_s2s | The Ark |
| sp_skyway_v1 | The Fold Weapon |