Administrator guide

Bundled server configs

The Docker image ships a complete server configuration for TaystJK's own game module: server settings, a gameplay baseline, game modes, vote options and a ban list.

For the bundled jaPRO game module only

These files configure TaystJK’s bundled jampgame: the jaPRO-based game module in the taystjk mod directory. They depend on its settings and commands, such as jaPRO’s tweak bitmasks, restricts, the gametype command and vote options run through vstr. Another mod’s game module does not implement most of them.

The Docker image copies them into basepath/taystjk/ (Dockerfile). A dedicated server looks for configs only in base and in the directory fs_game selects, because dedicated builds leave fs_forcegame empty (files.cpp). If you set TJK_MOD to another mod, none of these files load, and the server starts from that mod’s own configuration instead; see running another mod.

Native releases do not include them. To use them outside Docker, copy the .cfg files from scripts/docker/ in the source repository into your taystjk/ directory, then launch with +exec server.cfg. Or build a set with the server config generator: its Bundled preset and jaPRO modes come from these files, with your server settings filled in.

What loads at startup

The server only runs server.cfg itself, and that file loads the rest:

File Holds
server.cfg Identity, passwords, downloads, network, connection security, bots, voting rules, admin levels, accounts, logging and demo settings. It starts the server on mp/ffa3 in FFA.
bans.cfg IP bans. See bans.
votes.cfg The options players can vote for. See vote options.
default.cfg The gameplay baseline that every mode starts from.
One file per mode The game modes.
pickups.cfg, nopickups.cfg, noboons.cfg Add-ons that switch pickups on or off.
tribesbase.cfg Settings shared by the Tribes modes. It is not meant to be run on its own.

server.cfg applies its own settings, then runs exec bans (line 49), exec votes (line 52) and exec default (line 110), and finally loads the map (line 122).

There is no map rotation. Each map load sets nextmap to restart the same map (sv_init.cpp), so when a match ends the current map restarts, and players change maps with callvote map. If you want the server to move on by itself, set g_autoMapCycle 1 in server.cfg; the game then picks the next map for the current gametype from the arena files (g_bot.c).

Server settings and gameplay are kept apart

server.cfg holds everything about running the server, and default.cfg holds only gameplay. Every mode runs default.cfg again when it loads, so loading one never changes your hostname, password, player limit or admin setup.

Four settings belong to the modes and go back to the baseline whenever a mode loads: which votes are allowed (g_allowVote) and the time, frag and capture limits. Put a limit you want in the mode’s file, or let players vote for one.

The baseline also sets restricts to 1550 (default.cfg). On TaystJK and jaPRO clients that hides the lead indicator, disables /do, and holds the third-person camera angle at 0 while racing. Two of its bits are defined but never read, so they do nothing.

server.cfg runs exec default before the first map for a second reason. On shutdown the server saves most of these settings to taystjk_server.cfg and loads them again at the next start (see the server rewriting its config). Without the reset, a restarted server would begin in FFA with the last mode’s weapons and force powers still applied.

Passwords

server.cfg ships three passwords near the top, all empty. Fill them in:

set rconpassword "replace-with-a-long-random-secret"
seta g_fullAdminPass "replace-with-another-secret"
seta g_juniorAdminPass "and-a-third"

An empty value disables that login. jaPRO server setup explains what the two admin logins grant and the other ways to give out admin rights.

Keep rconpassword in server.cfg, on a line that starts with set or seta. When Docker stops the container, the run script sends rcon quit so the server shuts down cleanly (run.sh), and it finds the password only by reading that line of server.cfg (functions.sh). Without it, the script has nothing to send, and Docker kills the server when its stop timeout runs out.

Game modes

Load a mode from the server console or with rcon exec <mode>, or let players vote for it with callvote vstr <mode>. Every mode first runs default.cfg, then applies its own settings, then reloads the map with map_restart 0 (for example). The reload is what makes the change complete: weapons and items on the map, and settings the engine only applies on a map load, change then and not before. It also resets the scores.

A mode that does not choose a gametype plays FFA, because default.cfg switches back to FFA with gametype 0 (default.cfg). In the table, “force limited to jumping and saber skills” means g_forcePowerDisable leaves only levitation and saber offense and defense.

Mode Plays as
airshot FFA with only the rocket launcher and no splash damage, so only direct hits count. Force limited to jumping and saber skills.
fftffa Team FFA with sabers only and no pickups. Friendly fire stays at the baseline’s half damage, and team heal and team energize are disabled.
gungame FFA gun game (g_gunGame 2) with no pickups, no self damage and no falling damage. Force limited to jumping and saber skills.
instagib FFA with only the disruptor, at ten times weapon damage, and a faster run speed. Force limited to jumping and saber skills.
instagibrabbit Sniper rabbit: the flag carrier gets a disruptor, everyone else fights with sabers at ten times saber damage. No health or armor pickups; frag limit 50.
jk2 FFA with JK2 1.02-style saber combat and force, single saber only. Weapons stay on the map.
jk2104 FFA with the JK2 saber damage system and rescaled stances: yellow at half damage, red at 0.7.
lugorff FFA with single-player-style saber damage and jaPRO’s saber and force tweaks turned off.
merc FFA with every weapon except the concussion rifle, no health or armor pickups, double saber damage and force at rank 1, limited to jumping, protect and saber skills. It sets a capture limit of 7 for playing it as CTF.
midair tribesctf, with projectiles also carrying the shooter’s sideways movement (g_fullInheritance).
predator Team FFA with sabers only, no pickups and single-player-style saber damage. Force limited to jumping and saber skills.
predator2 predator with multiplayer saber damage doubled, backslashes at a hundred times damage, the JK2 lunge and no friendly fire.
prize FFA with sabers only: saber damage cut to a tenth, but backslashes at two hundred times damage. Race mode is off.
saberctf CTF with sabers, thermal detonators and trip mines, JK2-style saber combat and no pickups. Force limited to saber skills; capture limit 5.
saberonly Team FFA with sabers only, no pickups and single-player-style saber damage. Force limited to jumping and saber skills.
saberrabbit Rabbit where holding the flag scores points, with sabers at double damage, backslashes at a hundred times, the JK2 lunge and red DFA. Force limited to saber skills; 30-minute time limit and frag limit 200.
theone Rabbit with Q3 movement at a slow run speed and only the bowcaster, whose shots travel at a fifth of their normal speed. Frag limit 50.
tribes Tribes movement, classes and weapons in FFA.
tribesctf Tribes in CTF.
tribes1flag Tribes in one-flag CTF: carry the neutral flag into the other team’s capture zone (g_neutralFlag 5).
wswrabbit Rabbit with Warsow movement and sabers only, at double saber damage and four times backslash damage. Frag limit 50.

The rabbit modes need a map with a neutral flag, and the one-flag modes also need capture zones; the stock maps have neither. The g_neutralFlag entry describes each variant and what a map must provide.

The three Tribes modes share their settings through tribesbase.cfg (tribes.cfg), so each reloads the map only once. Players need the client-side setup as well; see Tribes.

Pickup add-ons

pickups, nopickups and noboons switch groups of pickups on or off on top of whatever is running:

Config Does
nopickups Turns off health, armor, bacta, force boon, enlightenment and seeker pickups.
pickups Turns the same group back on.
noboons Turns off the force boon and both enlightenments only.

They set disable_<item> cvars, which the game reads only when it spawns items (g_items.c), so follow one with map_restart, or the restart vote. The baseline in default.cfg already leaves seekers, portable shields, light-side enlightenment and detpack pickups off.

Vote options

votes.cfg defines what players can vote for. Each option is a cvar holding console commands, and callvote vstr <option> runs them if the vote passes (votes.cfg). The baseline allows three kinds of vote: map, vstr and poll (default.cfg). fftffa, merc, saberctf and saberonly allow a few more, such as forcing a player to spectate.

Group Options
Modes Every mode above by name, plus default, teamgungame (gun game as team FFA without friendly fire), pickups, nopickups, noboons and restart.
Frag limit 0, 10, 21, 31, 41, 51 and 61, and the same as frag0 to frag41.
Capture limit cap0, cap3, cap5, cap7.
Team size 0v0 to 6v6, which set sv_maxTeamSize.
Gametype ffa, tffa, ctf, and 1flagctf (CTF with g_neutralFlag 6).
Movement style jka, qw, cpm, q3, pjk, wsw, sp, slick, ocpm.
Rabbit rabbit, bkrabbit (holding the flag scores points), norabbit.
Loadout noguns, guns, all, togglefullhp, togglejetpack.
On and off friendlyfire and nofriendlyfire, flagthrow and noflagthrow, fixflagsuicide and nofixflagsuicide, damagenumbers and nodamagenumbers, splat and nosplat.
Other fastregen (faster force regeneration), race (lets players enter race mode again), kickbots.

togglefullhp and togglejetpack each flip one starting item with the startingItems command and keep the rest of the mode’s items, so a second vote flips it back. The gametype options switch without reloading the map (g_svcmds.c), while options that change weapons or pickups on the map take effect after a restart vote.

To add an option, put a set line in votes.cfg, for example set mymode "exec mymode".

How voting works, including which votes the server allows and why a vstr vote can name any server cvar, is covered in jaPRO server setup.

Bans

bans.cfg holds two settings:

Bans you add with addip or amBan are saved in g_banIPs and survive a restart; see bans for the commands and address ranges.

To keep the list in the file instead, uncomment the g_banIPs line. It then replaces the saved list at every start, so copy any addip bans into it first. Separate the addresses with spaces and end the list with a space: the game ignores a last address with nothing after it (g_svcmds.c).

seta g_banIPs "1.2.3 203.0.113.7 "

Change a file

Override any of these files the same way as server.cfg: copy it from the image into homepath/taystjk/, where it takes priority over the image’s copy and survives image updates. For example, to edit the vote options:

docker compose cp \
  taystjk:/opt/taystjk/basepath/taystjk/votes.cfg \
  ./homepath/taystjk/votes.cfg

A mode’s file is read again every time the mode loads, so an edited mode takes effect the next time it runs. Run rcon exec votes to reload edited vote options, and restart the server after changing server.cfg. On a native server, edit the copies in your taystjk/ directory.

Last changed History Edit this page on GitHub