mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-17 12:57:01 +02:00
The Mods page has a third tab, PROFILES. A profile is a saved list of which mods are on, in what order and at what version; every mod stays installed once, in the one Mods folder. Loading a profile rewrites mods.json, switches off what it does not name, and downloads from Thunderstore what it names that is missing. Profiles live in Mods/profiles.json. A profile travels the way r2modman's do, so the two managers read each other's: export.r2x inside a .r2z file, and a code on Thunderstore's profile service. Config files in an r2modman profile are ignored. Installing or updating a Thunderstore package now brings the packages it depends on, needed ones first, leaving out any already installed at a new enough version. A mod pack is a package that is nothing else. A kick, by an admin or by a passed vote, used to keep the player out until the server restarted. "kick_minutes" in the players section of the config (1-1440; 0, the default, is still until the restart) and the console command "kick-time <minutes>|restart" now set how long it lasts. The player is told how long when they are kicked, and how many minutes are left if they try to join early. A kick keeps the time it was given, so changing the setting is for later kicks. Bans are unchanged.
655 lines
42 KiB
Plaintext
655 lines
42 KiB
Plaintext
ReSkate dedicated server
|
|
========================
|
|
|
|
A headless ReSkate lobby that runs on its own, without the game. Players find it
|
|
in the in-game server browser (Multiplayer > Servers), or join with its code.
|
|
|
|
Start it
|
|
--------
|
|
Run ReSkateServer.exe. The first run writes ReSkateServer.json next to it; edit
|
|
that file (at least "name") and start the server again, then make yourself an
|
|
admin by typing role <your SteamID64> admin in its window. Leave this
|
|
folder together: steam_api64.dll, steamclient64.dll, tier0_s64.dll and
|
|
vstdlib_s64.dll are how the server talks to Steam, and world-layers.json lets it
|
|
set world layers (time of day and so on) for everyone.
|
|
|
|
Start it with --config <file> to use another settings file instead, e.g.
|
|
ReSkateServer.exe --config grom.json. A file that does not exist yet is written
|
|
with the defaults, as on the first run.
|
|
|
|
Custom maps
|
|
-----------
|
|
Copy a custom map's mod folder from the game's Mods folder into a Mods folder
|
|
next to the server (its reskate-levels.json and manifest.json are read). The
|
|
map can then be chosen by name. Players need the same map mod installed to
|
|
join.
|
|
|
|
A player without it is offered it when the map is from Thunderstore: the game
|
|
downloads it, applies it and joins the server again. For that the folder has to
|
|
keep the name Thunderstore gives it: Owner-Name as the launcher installs it
|
|
(Sandos-Vancouver_Plaza), or Owner-Name-1.0.0 as its zip unpacks. The server
|
|
tells players that name, and the version from manifest.json when the file is
|
|
there. A map under any other folder name
|
|
works as before: players install it themselves.
|
|
|
|
Park mods
|
|
---------
|
|
A park built in the game's Park Editor and saved as a mod (a folder with
|
|
manifest.json and parks/<map>.park.json) can be put up by the server for
|
|
everyone. Copy the mod's folder into the Mods folder next to the server, list it
|
|
in maps.park_mods with a name and the map it was built on, and spawn it with
|
|
"park-mod add <name>" while that map runs: from the console, in chat by a player
|
|
whose role has park-mod (/park-mod add street 30; the admin role does, see
|
|
README-roles.txt), or by a player vote (see votes.custom). With minutes
|
|
(1-1440) it goes by itself when the time is up; players are told a minute before
|
|
and when it goes. Without, it stays until removed. Every park goes when the map
|
|
changes, and none come back after a restart.
|
|
|
|
Nothing needs a restart: a mod copied into Mods can be set up with
|
|
"park-mod config add" (saved to the config like the map pool), and a park whose
|
|
mod was updated is read again with "park-mod reload <name>". Every park-mod
|
|
add reads the park's file afresh. Don't edit ReSkateServer.json by hand while
|
|
the server runs: it writes its settings back whenever an admin changes one.
|
|
|
|
A spawned park belongs to the server, not to a player: it counts against nobody's
|
|
object limit, nobody can move or delete it, and it stays when players leave.
|
|
Players need no mod for it: its objects are Build Kit items the game has. An
|
|
object players' games would not show (not a Build Kit item, or broken) is left
|
|
out, and the log says which. A park only fits the map it was built on, so the
|
|
server spawns it on that map alone, even where custom maps share a base map's
|
|
parks (most use bam). The log has a [parks] line for each park spawned or
|
|
removed, and for each one that could not be.
|
|
|
|
Players connect through Steam's relay network, so no ports need opening. If you
|
|
do forward UDP 27015-27016 (port, query_port), the browser also shows the
|
|
server's ping and players can join a little faster.
|
|
|
|
The server signs in to Steam anonymously and gets a new Steam ID, and so a new
|
|
join code, every time it starts. The browser always finds it by name.
|
|
|
|
Players and the server need the same ReSkate version.
|
|
|
|
Updates
|
|
-------
|
|
The server keeps itself on the latest ReSkate release. It checks when it starts
|
|
and every half hour after that. A new version found while players are on is
|
|
installed as soon as the server is empty: it restarts on its own, keeping
|
|
ReSkateServer.json, Mods and its logs. Type "update" to check and install
|
|
straight away (players are told to rejoin). Turn this off with
|
|
"auto_update": false, or start the server with --no-update.
|
|
|
|
ReSkateServer.json
|
|
------------------
|
|
The settings are in sections; each setting below is listed under the section it is in,
|
|
like "server": {"name": "My server"}. A file from an older version, with every setting at
|
|
the top and some under older names, is read as it is and written back this way the first
|
|
time the server starts.
|
|
|
|
"server" - The server itself: its name, who it lets in by password, and its ports.
|
|
name Shown in the browser: 1-64 letters, numbers, spaces and - _ / [ ] ( ).
|
|
password Empty for anyone; otherwise players type it to join.
|
|
welcome_message A chat line sent to each player as they join.
|
|
chat_color The colour of the server's own lines in chat: its "Server" badge
|
|
and name, as "#RRGGBB" (default "#8E5CFF", violet).
|
|
chat_text_color The colour of the text of those lines (default "#D9C8FF",
|
|
lavender). Pick one that reads on a dark background.
|
|
Console: chat-color <#badge> [<#text>].
|
|
listed false hides the server; players then need the code.
|
|
max_players 1-249.
|
|
port, query_port Steam game server ports (default 27015, 27016).
|
|
steam_token A Steam game server login token, or empty (default). Without one
|
|
the server signs in anonymously and gets a new Steam ID every
|
|
start. With one it keeps the same Steam ID, printed at startup.
|
|
Make a token at steamcommunity.com/dev/managegameservers with
|
|
App ID 3354750; each running server needs its own. Keep it
|
|
private: anyone with it can sign in as your server.
|
|
The ReSkate team can set the in-game server browser to show
|
|
only servers that have one; the server says so in its log when
|
|
that hides it. Players can always join with the code.
|
|
auto_update Install new ReSkate releases when nobody is on (default true).
|
|
autostart The server window starts the server as soon as it opens,
|
|
without waiting for Start (default false). The console
|
|
server always starts at once.
|
|
activity_log Log what players do (default true): throwdown drops placed,
|
|
joins, starts, turns and results; objects placed or removed;
|
|
how long players take to load.
|
|
|
|
"access" - Who always has a place on the server. (Who runs it is in
|
|
data/roles.json: see Roles below.)
|
|
reserved_players_slots
|
|
SteamID64s of the players with a reserved slot, e.g.
|
|
["76561198000000000"] (default none). They can join when
|
|
the server is full, as players whose role has a reserved
|
|
slot always can: each of them adds a slot beyond
|
|
max_players that only they use. With 32 players and 2
|
|
admins and 2 listed, anyone can join until 32 are on, and
|
|
those four can still join after that, up to 36. The browser then shows 33/32 and so on. Nothing is
|
|
held back from everyone else.
|
|
use_global_bans Turn away players the ReSkate team has banned from multiplayer
|
|
(default true). The list is read from api.reskate.dev at startup
|
|
and every ten minutes. false lets them in; the server's own
|
|
bans (data/bans.json) apply either way.
|
|
|
|
"maps" - What is skated.
|
|
map The map everyone skates, named like the game's load command:
|
|
"San Vansterdam", "Isle of Grom", "Super Ultra Mega Resort",
|
|
"Stadium 1", or a custom map such as "bbcity" (see Custom maps).
|
|
pool The maps players may vote for and the rotation goes through,
|
|
in order, e.g. ["San Vansterdam", "Isle of Grom", "bbcity"].
|
|
Empty (the default) allows every map the server knows.
|
|
Admins can still change to any map.
|
|
rotation_minutes Minutes on each map before the server moves to the next
|
|
one in pool (default 0: off). Players get a minute's
|
|
warning; the clock waits while nobody is on, and starts
|
|
over whenever the map changes (by a vote or an admin too).
|
|
rotation_vote When a map's time is up, players vote for the next one
|
|
(default false): three maps of the pool picked at random,
|
|
"Random map", and "Stay here". The most votes wins, a tie
|
|
is drawn, and with no vote at all it is the pool's next
|
|
map. The maps are chosen a minute before, so players'
|
|
games have their pictures ready.
|
|
rotation_vote_seconds
|
|
How long that vote runs, 10-120 (default 30). It ends
|
|
sooner once everyone has voted.
|
|
rotation_extend_minutes
|
|
What "Stay here" adds to the map's time, 1-240 (default
|
|
15), or 0 to leave that answer out. Players can ask for
|
|
the same at any time with "/vote extend" (votes.extend_map),
|
|
and "rotation extend [minutes]" adds time at once.
|
|
rotation_announce Tell players on a card when the map has 10, 5 and 1
|
|
minutes left (default true).
|
|
latest_versions Keep this server's custom maps at Thunderstore's newest
|
|
version (default false). A map mod in Mods whose folder is a
|
|
Thunderstore package (Owner-Name) is looked up when the
|
|
server starts and every latest_check_minutes; when a newer
|
|
version is out, that version is written into the folder's
|
|
manifest.json and the maps are read again. Nothing is
|
|
downloaded: the server only needs to know the version, and
|
|
players, who are sent to the server's version of a map,
|
|
fetch it as they join. A player who already has a later
|
|
version than the server keeps it. The map being played is
|
|
left until nobody is on it. A folder that is not a
|
|
Thunderstore package is never touched.
|
|
The level list is not changed: when a new version adds,
|
|
removes or renames levels, copy its reskate-levels.json in.
|
|
latest_check_minutes
|
|
How often Thunderstore is asked, 5-1440 (default 60).
|
|
parks Layout for each park lot, e.g. "skatepark_01", or "empty".
|
|
world_layer_sync Force the "layers" below on every player.
|
|
layers World layer key -> "on" / "off".
|
|
park_mods Parks built in the game's Park Editor and shared as mods,
|
|
which the server can spawn for everyone (see Park mods).
|
|
A list, e.g.
|
|
[{"name": "street", "folder": "popular skate 2 street park",
|
|
"map": "San Vansterdam", "key": "bam"}]
|
|
name: what park-mod and votes call it, 1-16 of a-z, 0-9, -
|
|
and _. folder: the mod's folder in Mods next to the server
|
|
(copied from the game's Mods folder; spaces are fine).
|
|
map: the map it was built on; it is only spawned while that
|
|
map runs. key: which of the mod's parks, by the base map it
|
|
is for (the file parks/<key>.park.json: bam, grom, mpr,
|
|
ftue, stadium_1, stadium_2); empty when the mod has one.
|
|
park_limits How much may be spawned at once (default {"parks": 3,
|
|
"objects": 512}): parks 1-16, their objects in all 1-1024.
|
|
|
|
"players" - What players may do.
|
|
allow_noclip, allow_no_bail, allow_boosts
|
|
Let players use noclip (and tp) / No Bail / the forward and up
|
|
boosts (default true; admins always can).
|
|
allow_parties Let players form parties (default true): invite each other
|
|
from the game's Social menu, a player card, the ReSkate
|
|
Multiplayer menu or chat (/party invite <player>). Party
|
|
members join each other's coop challenges, see each other on
|
|
the map and talk with /p <message>.
|
|
party_size Most players in one party, 2-8 (default 8).
|
|
afk_kick_minutes Remove a player who has been away this many minutes, 1-1440
|
|
(default 0: never). Away is not moving, speaking, typing
|
|
in chat or changing their objects. They are warned in chat
|
|
a minute before and can join again at once. Admins are
|
|
never removed for it. Console: afk-kick <minutes>|off.
|
|
kick_minutes How long a kicked player is kept out, by an admin's kick or
|
|
by a vote: 1-1440 minutes (default 0: until the server
|
|
restarts). They are told how long when they are kicked and
|
|
when they try to join. A kick keeps the time it was given;
|
|
changing this is for later kicks. A ban is still for good.
|
|
Console: kick-time <minutes>|restart.
|
|
word_warnings The ReSkate team keeps a list of words that are not allowed
|
|
in chat at all (read from api.reskate.dev with the global
|
|
bans). A message with one is never passed on, whatever
|
|
this is set to, and its player is warned. After this many
|
|
warnings, 1-10 (default 3), the next one gets them kicked;
|
|
they can join again, and are kicked again at the next.
|
|
Warnings last until the server restarts. 0: nobody is
|
|
warned or kicked; the message is still not passed on.
|
|
use_global_word_filter
|
|
Use the ReSkate team's chat word lists (default true). Set
|
|
false to leave them out: then only the words in this
|
|
server's own data/words_blocked.txt are refused in chat.
|
|
Console: words global on|off. See "Chat words" below.
|
|
allow_voice_chat Allow voice chat.
|
|
voice_range How far proximity voice reaches, 50-1000 m.
|
|
object_placement everyone, admins (only admins can build), or nobody.
|
|
object_limit How many objects each player may have placed, 1-1024
|
|
(default 100), or 0 for no limit. Admins are not limited.
|
|
A player at the limit deletes one to place another.
|
|
A player who places more than twice the limit plus 100
|
|
in a minute (a modified game animating objects by
|
|
respawning them) has theirs deleted for everyone, and
|
|
nothing they place is shared for a minute; the log
|
|
says who. Admins are exempt.
|
|
allow_object_scaling Let players place objects bigger or smaller than their
|
|
own size (default true). false shares every player's
|
|
objects at their own size and turns the size controls
|
|
off in their park editor. Admins can still resize
|
|
theirs. Console: object-scaling on|off.
|
|
sync_effects Let players see each other's skater effects (default true):
|
|
sparks and dust where a skater touches the world, and
|
|
the trails and fire of costumes and skateboards. false
|
|
relays none and players' games show each other without
|
|
them, which saves a little traffic and drawing on a busy
|
|
server. Console: effects on|off.
|
|
announce_throwdowns Tell everyone in chat when a throwdown drop is placed
|
|
(default true).
|
|
|
|
"anti_cheat" - What the server checks, and what it does about it.
|
|
speed_hack Catch players whose game runs faster than normal (Cheat
|
|
Engine's speedhack and the like), measured from the timing
|
|
of what their game sends: "warn" (default) takes them out of
|
|
throwdowns and coop challenges until their speed is normal
|
|
again and tells them so (the log has it for the admins), "kick" removes them from the
|
|
server, "off" does not check.
|
|
pinned_board Catch players whose skateboard stays on another player as
|
|
that player moves (a hacked game placing its board there):
|
|
"warn" (default) stops showing their board to everyone else
|
|
until it has behaved for half a minute and tells the admins
|
|
in the game and the log who it is, "kick" removes them from
|
|
the server, "off" does not check.
|
|
modified_scoring Catch players whose mods change how many points tricks
|
|
score (per-trick points, the scoring multipliers, the
|
|
throwdown scoring logic) or how the skater handles (core
|
|
physics, wipeouts, trick gestures). Each player's ReSkate checks its
|
|
mods at launch and reports the result when joining:
|
|
"warn" (default) takes them out of throwdowns and coop
|
|
challenges (the server stops passing their throwdown
|
|
messages on) and everyone is told in chat, "kick" removes
|
|
them, "off" does not check. A player has to restart Skate
|
|
without the mod to take part again.
|
|
allowed_scoring_mods Scoring fingerprints accepted like the game's own, for a
|
|
server that runs on a scoring mod everyone installs
|
|
(16 hex digits each; score-check lists each player's).
|
|
enforce_tuning Players skate with the game's own Gameplay/SkatePhysicsTuning,
|
|
not copies they edited (default true). Edited tuning (truck
|
|
positions and the rest) otherwise shows on their skater for
|
|
everyone.
|
|
bone_scale_limit How far a mod may resize part of a skater for the other
|
|
players (a "big head" mod and the like): the most a bone may
|
|
be scaled, 1 to 8 (default 2); 0 is no limit. The game's
|
|
own skater height is a scale too, so 1 shows every skater
|
|
at the same height and build as well as stopping mods; 2
|
|
leaves height alone and still halves the largest heads.
|
|
The player with the mod still sees it on their own screen.
|
|
Console: bone-scale <1-8>|off.
|
|
bone_reach_limit How far, in metres, a bone of a skater's body or board may
|
|
be from the one it hangs from for the other players: 0.5
|
|
to 20 (default 1); 0 is no limit. The game never moves
|
|
them (the longest, a thigh, is 0.44), so the default
|
|
changes nothing for an ordinary player and stops a hacked
|
|
game from stretching its skater across the map. Every
|
|
player's own game also holds what it is shown to 2.
|
|
Console: bone-reach <0.5-20>|off.
|
|
|
|
"network" - How players connect and how much they are sent. The defaults suit most servers.
|
|
use_steam_relay How players reach the server: true (default) or false.
|
|
true Through Steam's relay network. Nothing to open, and
|
|
the server never sees a player's address. The route
|
|
is Steam's choice and can be a long way round.
|
|
false Straight to this server's "port" over UDP, which
|
|
must be open to the internet. The shortest route,
|
|
so the lowest ping. The server sees the addresses
|
|
of the players who connect this way, as any
|
|
dedicated server does; players never see each
|
|
other's.
|
|
With false the server still answers through the relays: a
|
|
game tries the port first and uses the relays if it gets no
|
|
answer in a few seconds, and a player can turn direct
|
|
connections off in their own settings. So false never
|
|
keeps anyone out. Steam vouches for who each player is
|
|
either way. "net" shows who is direct, and the log has a
|
|
[direct] line for each player who asks to connect that way.
|
|
send_rate The most the server sends one player, in KB/s (default 900,
|
|
128-16384). About 1100 is what reaches a player through
|
|
Steam's relays: set higher, what is lost is resent until the
|
|
connection is full of resends and half of everything is
|
|
lost. Console: rate <KB/s>, also for the players already on.
|
|
crowd_budget The most position updates a second one player is sent
|
|
(default 600, 0 for no limit). Players near each other are
|
|
sent at the full rate, 20 a second; this only matters once
|
|
more are in one place than budget / 20, about 30. Then the
|
|
nearest stay at the full rate and the farthest of the crowd
|
|
drop to 10 and 5 a second, instead of everyone's connection
|
|
filling up. About 1000 is what reaches a player through
|
|
Steam's relays; more than that was seen to lose half.
|
|
Console: crowd <n>|off.
|
|
pack_ms How long a message to a player may wait to go in the same
|
|
packet as the next ones, in milliseconds (default 10, 0 to
|
|
50). A full server sends each player hundreds of small
|
|
messages a second, each in a packet of its own with its own
|
|
headers; packed, the same updates take fewer packets, less
|
|
bandwidth and less CPU. It adds up to that long to when an
|
|
update arrives. Voice is never held back. 0 sends every
|
|
message at once, as before. Takes effect on restart.
|
|
threads How many threads share the sending of each pass (default 0:
|
|
one for each of the machine's processors but one, up to
|
|
8; 1: a single thread, as before). Most of a full
|
|
server's work is building each player's update of everyone
|
|
else, which the threads do for several players at once.
|
|
What is sent is the same whatever the number. The server
|
|
says how many it uses when it starts. Takes effect on
|
|
restart.
|
|
finger_distance Past this many metres (default 25) a player's fingers are not
|
|
sent moving: they stay as they were, and move again when the
|
|
player is nearer. Fingers are nearly half of every position
|
|
update and cannot be made out at that distance. 0 always
|
|
sends them.
|
|
distances When far-away players update less often (metres).
|
|
steam_debug true logs what Steam's own networking says it is doing: each
|
|
connection asked for, and what it refused or ignored and
|
|
why. For finding out why players cannot connect; it is a
|
|
lot of text, so turn it off again afterwards.
|
|
|
|
"votes" - What players may vote on.
|
|
votes Player votes, each off until turned on:
|
|
"map": {"enabled": true, "percent": 60} /vote map <map>
|
|
(a map in maps.pool)
|
|
"kick": {"enabled": true, "percent": 60} /vote kick <player>
|
|
"time_of_day": {"enabled": true, "percent": 50} /vote tod <time>
|
|
(needs world_layer_sync)
|
|
"extend_map": {"enabled": true, "percent": 50} /vote extend
|
|
(on by default; needs
|
|
maps.rotation_minutes: the
|
|
map in play gets
|
|
rotation_extend_minutes more)
|
|
"percent" is the share of the votes cast that yes needs to
|
|
pass it: players who do not vote count for neither side. A
|
|
vote runs its time and is decided then, or sooner once the
|
|
players still to vote could not change it. A kick always
|
|
needs two yes votes. "seconds" (default 30) is how long a vote runs and
|
|
"cooldown_seconds" (default 60) how long a player waits before
|
|
starting another. Players vote with /yes and /no in chat;
|
|
admins cannot be vote-kicked.
|
|
Each vote may also have its own "seconds" and
|
|
"cooldown_seconds" (0: the ones above) and "min_players", the
|
|
players who must be on before anyone can start it (default 1).
|
|
starter_votes_yes Whoever starts a vote has voted yes (default true).
|
|
custom Votes of your own: a list, each running a server command
|
|
when it passes. {map} in the command is the current map,
|
|
{arg} the choice the player picked (one of "choices"; without
|
|
choices the vote takes no argument). For example:
|
|
{"name": "restart", "description": "Reload the current map",
|
|
"command": "map {map}", "percent": 60}
|
|
{"name": "noclip", "description": "Turn noclip on or off",
|
|
"command": "noclip {arg}", "choices": ["on", "off"]}
|
|
{"name": "park", "description": "Spawn a park for 30 min",
|
|
"command": "park-mod add {arg} 30",
|
|
"choices": ["street", "plaza"], "percent": 60}
|
|
{"name": "unpark", "description": "Remove a park",
|
|
"command": "park-mod remove {arg}", "choices": ["street", "plaza"]}
|
|
Players start them with /vote restart, /vote noclip off; /vote
|
|
list shows them. A name and each choice is 1-16 of a-z, 0-9,
|
|
- and _, and not one of the server's own (map, kick, tod,
|
|
list...). Each takes "enabled", "percent", "seconds",
|
|
"cooldown_seconds" and "min_players" as the others do. Up to 16.
|
|
polls Who may ask everyone a question with up to six answers:
|
|
"off", "admins" (default) or "everyone".
|
|
/poll Next map? | Grom | San Vansterdam | Stadium
|
|
Players answer on the card or with /1, /2... A poll runs
|
|
nothing; it ends after "poll_seconds" (default 60), or when
|
|
whoever started it (or an admin) types /poll end.
|
|
Server votes The console (and scripts that talk to it) starts the same
|
|
votes and polls: "vote tod night", "vote map grom",
|
|
"vote noclip off", "poll Next map? | Grom | Stadium" and
|
|
"poll end". A vote still has to be on, and its "min_players"
|
|
met; a poll may be asked whatever "polls" says. The server has
|
|
no vote of its own and no cooldown. Chat reads "The server
|
|
started a vote to ..." or "The server asks: ...".
|
|
"poll-run <command> | <question> | <answer>..." also runs a
|
|
command for the answer that wins, {answer} replaced by it
|
|
(nothing on a tie or when nobody answered), e.g.
|
|
poll-run tod {answer} | Time of day? | morning | noon | night
|
|
|
|
"announcements" - Messages from the server.
|
|
messages Lines the server posts in turn, one every "interval_minutes"
|
|
(0: off) while players are on. Each is at most one chat line.
|
|
Announcements show as a card at the top of the screen, not
|
|
in chat; :emotes: in them (and in polls) show as images. Admins announce something once with announce <text>,
|
|
or to one player only with announce-to <player> <text>.
|
|
|
|
"commands" - Chat commands of your own, e.g. /discord or /rules. A list, each:
|
|
name 1-16 of a-z, 0-9, - and _; not one of the server's own
|
|
commands (help, party, vote, kick, map...).
|
|
reply A chat line sent back to whoever typed it (optional).
|
|
command A server command, or a list of up to 8, run as the console
|
|
(optional). {player} is the SteamID64 of whoever typed it,
|
|
{map} the current map and {arg} the rest of what they
|
|
typed. Each command needs a reply, a command, or both.
|
|
admin Only admins may use it (default false).
|
|
For example:
|
|
{"name": "discord", "reply": "Join us: discord.gg/..."}
|
|
{"name": "rules", "command": "announce-to {player} No griefing!"}
|
|
{"name": "restart", "admin": true, "command": ["map {map}"]}
|
|
They are not listed in /help: tell players about them yourself.
|
|
Up to 32. Mind what {arg} lets players put into a command.
|
|
|
|
Every change made from the console or by an admin is saved back to this file.
|
|
|
|
Bans are kept in data/bans.json, beside this file: the players who can never
|
|
join, managed with ban / unban. The ReSkate team's own list is separate: see
|
|
use_global_bans. A config from an older version that still has "bans" in it has
|
|
them moved there the first time the server starts.
|
|
|
|
Chat words
|
|
----------
|
|
Two files in data/, beside the bans, hold this server's own chat words. Both are
|
|
made, empty, the first time the server starts. One word to a line; a line
|
|
starting with # is a comment. Edit them and type: words reload
|
|
|
|
data/words_filtered.txt Words this server filters, on top of the team's.
|
|
Messages with them are still passed on; the server
|
|
sends the list to its players' games, which show
|
|
the word as stars to players who have their chat
|
|
filter on. The first 256 words of up to 32 letters
|
|
are sent.
|
|
data/words_blocked.txt Words not allowed in this server's chat at all, on
|
|
top of the team's. A message with one is not passed
|
|
on and its player is warned (word_warnings).
|
|
|
|
"use_global_word_filter": false leaves the team's lists out altogether, so only
|
|
words_blocked.txt is refused.
|
|
|
|
What this does not change: each player's game still stars out the team's
|
|
filtered words for a player who has their chat filter on, and hides a server
|
|
whose name has one of the team's words from the server browser. Those are the
|
|
team's lists in the player's game, whatever a server sets.
|
|
|
|
Roles
|
|
-----
|
|
Who may do what is in data/roles.json, beside the bans. README-roles.txt has the
|
|
whole of it: every permission and every command a role can be given, with
|
|
examples. In short, the server writes the file the first time it starts, with
|
|
five roles to change or add to (up to 32):
|
|
|
|
player Everybody who was given no role: chat, votes, parties and private
|
|
messages, and no commands. ("default_role" names it.)
|
|
vip A reserved slot and a VIP tag.
|
|
moderator kick, ban, unban, messages, tphere and giving out the roles
|
|
below it; a reserved slot, anti-cheat alerts, polls.
|
|
admin Every command and every permission.
|
|
muted For a player who is to keep quiet: no chat or private messages.
|
|
|
|
A role is:
|
|
|
|
name 1 to 24 of a-z, 0-9, - and _.
|
|
tag The word shown before the player's name in the game, up to 16
|
|
characters ("" for none). Not one the game uses itself (Server,
|
|
Host, Friend, Dev, ReSkate Admin...).
|
|
color The tag's colour, like "#FF74C6".
|
|
rank 0 to 1000. Nobody kicks, bans or changes the role of a player
|
|
whose rank is theirs or higher, or gives out a role whose rank
|
|
is. Only the server's own window is above every role.
|
|
commands The server commands the role may use, by the names below (kick,
|
|
map, tod, placement...). "*" is every command except role and
|
|
reserved, which a role has only when it lists them.
|
|
permissions What it may do besides commands:
|
|
chat talk in chat
|
|
votes start the votes that are on, and vote
|
|
parties parties and their chat
|
|
whisper private messages (/w)
|
|
reserved_slot join when the server is full
|
|
unlimited_objects no object limit; build and resize when
|
|
players may not
|
|
movement noclip, No Bail and the boosts when
|
|
players may not
|
|
no_afk_kick never removed for being away
|
|
vote_kick_immune cannot be kicked by a vote
|
|
anticheat_alerts told in chat what the anti-cheat finds
|
|
polls start and end polls when players may not
|
|
inherit true (the default): the role also has everything the default
|
|
role has. false: only what it lists itself, as muted does.
|
|
|
|
"players" in the file is who has which role, by SteamID64. Change it with
|
|
role <player or SteamID64> <role> give a player a role
|
|
role <player or SteamID64> none take it away (they are the default role again)
|
|
roles list the roles and who has them
|
|
roles reload read data/roles.json again after editing it
|
|
A file with a mistake in it is not loaded, and the server says what is wrong.
|
|
|
|
A config from before there were roles lists its admins under "access": they are
|
|
moved into the admin role the first time the server starts.
|
|
|
|
The game shows a player the controls their role gives them: a moderator sees
|
|
kick and ban in the Multiplayer menu, a role with map can pick the server's
|
|
level, and so on. A setting their role cannot change shows as set by the server.
|
|
|
|
Console and role commands
|
|
-------------------------
|
|
Type these in the server window. Players whose role has a command run it in the
|
|
game with the console command "mp server <command>", or in chat with a / in
|
|
front (/kick, /map, /votes). Their replies arrive in chat. They can also use
|
|
the game's menus for what their role gives them: the server's map from Levels
|
|
or Travel, and voice, distances, placement and kicks from the Multiplayer menu.
|
|
|
|
help A short list of every command.
|
|
status Name, map, players, code.
|
|
players Connected players and their SteamID64s.
|
|
reserved Who has a reserved slot, and how many extra slots there are.
|
|
reserved add|remove <player or id> (the console, or a role that lists reserved)
|
|
net [player] How the connections are doing right now: traffic,
|
|
queues, the server's own loop timing, and the twelve
|
|
connections doing worst. With a player, that one's
|
|
ping, delivery, queue and when it was last heard from.
|
|
The log also gets a [network] line every minute and,
|
|
when a player's connection ends, how Steam says it ended.
|
|
say <text> Chat as the server (console only).
|
|
msg <player> <text> Private message, shown to them as "[DM from <you>] ...".
|
|
Name start (one word) or SteamID64.
|
|
msg-party <player> <text> Message everyone in that player's party ("[DM from <you> to party]").
|
|
msg-admins <text> Message every admin who is online ("[DM from <you> to admins]").
|
|
Players can whisper each other with /w <player> <text> in chat.
|
|
kick <player> Until the server restarts, or for kick-time's minutes.
|
|
Name start or SteamID64.
|
|
kick-time <minutes>|restart How long a kicked player (by an admin or a vote) is kept
|
|
out: 1-1440 minutes, or until the server restarts.
|
|
Nobody kicks or bans a player of their rank or above; the console can.
|
|
ban <player or id> [name] For good. unban <id> bans
|
|
map <name> e.g. map San Vansterdam, map grom, map bbcity
|
|
maps The maps this server knows.
|
|
maps reload Read the Mods folder again: a map mod copied in
|
|
while the server runs can be switched to at once.
|
|
maps update Ask Thunderstore now for the newest version of
|
|
each of this server's maps and take it (see
|
|
maps.latest_versions); the log says what it did.
|
|
maps latest on|off Turn maps.latest_versions on or off.
|
|
maps latest every <minutes> How often Thunderstore is asked.
|
|
map-pool [add|remove <map>|clear] The maps players vote between and the
|
|
rotation uses (see maps.pool).
|
|
rotation [<minutes>|off] Change the map on a timer (see maps.rotation_minutes).
|
|
rotation vote on|off Players vote for the next map when the time is up.
|
|
rotation stay <minutes>|off What "Stay here" in that vote adds (off: not offered).
|
|
rotation announce on|off Tell players at 10, 5 and 1 minutes left.
|
|
rotation extend [minutes] Give the map in play more time now.
|
|
name <text> password <text|off> welcome <text|off> listed on|off
|
|
voice on|off voice-range <m>
|
|
distances <full> <half> <half-return> <low>
|
|
placement everyone|admins|nobody clear-objects
|
|
objects <number>|off How many objects each player may have placed.
|
|
object-scaling on|off Whether players may resize the objects they place.
|
|
effects on|off Whether players see each other's skater effects.
|
|
noclip on|off nobail on|off boosts on|off
|
|
What players may use (admins always can).
|
|
tuning on|off Everyone on the game's own physics tuning.
|
|
tpall [player] Everyone to you (admins in game) or to a player.
|
|
tphere <player> One player to you (admins in game).
|
|
teleport <players> <player|x y z>
|
|
Players to a player or a place. <players> is one
|
|
player, or SteamID64s joined by commas with no
|
|
spaces (at most 64); ones not on or not in the
|
|
world yet are skipped and named. x y z are world
|
|
units as the log prints them, e.g. "placed ... at
|
|
(-247, 2172, -259)"; y is up. Several players
|
|
stand in a ring round the target. Logged as
|
|
"[teleport] <n> player(s) to <target> by <who>".
|
|
park <construction|historic|financial> <layout>
|
|
park random Randomize all three park slots (excludes empty lots).
|
|
park-mod list The park mods (maps.park_mods); spawned ones with
|
|
their minutes left.
|
|
park-mod add <name> [<name>...] [minutes] Spawn parks on the current map:
|
|
for 1-1440 minutes, or until removed. All or none.
|
|
park-mod remove <name> [<name>...] park-mod clear Remove spawned parks.
|
|
park-mod reload <name> [<name>...] Read a spawned park's file again (its mod
|
|
was updated) and swap its objects in place; it keeps
|
|
its timer.
|
|
park-mod config add <name> | <mod folder> | <map> [| <key>] Set up a park mod
|
|
while the server runs, saved to maps.park_mods, e.g.
|
|
park-mod config add street | popular skate 2 street park | San Vansterdam | bam
|
|
park-mod config remove <name> Take one out of the setup (removing it if spawned).
|
|
layer-sync on|off layer <key> default|on|off
|
|
layers <key>=<mode> ... Several world layers at once, each default, on or off.
|
|
tod <default|morning|noon|afternoon|evening|night|weatherday|weathernight>
|
|
Time of day on every map (needs layer-sync on).
|
|
votes [map|kick|tod on|off|<percent>] The vote settings (see votes).
|
|
votes seconds <n> votes cooldown <n> vote-cancel
|
|
votes <vote> seconds|cooldown|min-players <n> One vote's own limits; <vote>
|
|
is map, kick, tod or a custom vote's name, which
|
|
also takes on|off|<percent>.
|
|
votes polls off|admins|everyone votes poll-seconds <n> votes starter-yes on|off
|
|
vote <map|kick|tod|<custom vote>> [argument] Start a vote as the server
|
|
(see Server votes).
|
|
poll <question> | <answer> | <answer>... Ask everyone (2 to 6 answers).
|
|
poll end End the running poll now.
|
|
poll-run <command with {answer}> | <question> | <answer>... A poll whose
|
|
winning answer runs the command (console only).
|
|
announce <text> Tell everyone, in chat and on a card.
|
|
announce-to <player> <text> Tell one player, on a card.
|
|
announcements [list | add <text> | remove <n> | clear | interval <minutes>|off]
|
|
The messages posted on a timer.
|
|
activity-log on|off Log player activity (see activity_log).
|
|
words [reload | global on|off]
|
|
This server's chat words: what is in use, read
|
|
the two files again, or use the ReSkate team's
|
|
lists or not (see Chat words).
|
|
announce-throwdowns on|off Chat message when a throwdown is placed.
|
|
parties [on|off] List the parties, or allow them (off ends them all).
|
|
party-size <2-8> Most players in one party.
|
|
afk-kick <minutes>|off Remove players who have been away that long.
|
|
speed-check off|warn|kick What happens to players whose game runs fast.
|
|
board-check off|warn|kick What happens to players who keep their skateboard
|
|
on another player.
|
|
score-check [off|warn|kick] What happens to players whose mods change scoring
|
|
or physics; with no argument, every player's result.
|
|
score-allow [<fingerprint>|remove <fingerprint>] Accept a scoring mod's
|
|
fingerprint like the game's own (or list them).
|
|
roles [reload] The roles and who has them; reload reads data/roles.json again.
|
|
role <player or id> <role>|none Give a player a role, or take theirs away.
|
|
update Check for a new release and install it now (console only).
|
|
quit, exit or stop Shut the server down (console only).
|