BZFS(6)
π BZFS(6) π β BZFlag game server, but make it bestie-coded
okay so this is the manual page for bzfs, and weβre gonna go through it together. no cap. β¨
β¨ NAME β¨
bzfs β the BZFlag game server. iconic. π
πΈ SYNOPSIS πΈ
the whole launch incantation is literally:
bzfs [-a linear angular] [-adminlagannounce milliseconds] [-admsg
message] [-advertise groupname[,groupname]...] [-autoTeam] [-b]
[-badwords badwordfile] [-ban ip[,ip]...] [-banfile filename] [-c]
[-cache worldCacheURL] [-cacheout filename] [-conf configfile] [-cr]
[-d] [-density num] [-disableBots] [+f {good | bad | team | |
flag-id}[{count}]] [-f {good | bad | flag-id}] [-fb] [-filterCallsigns]
[-filterChat] [-filterSimple] [-g] [-gndtex texture-name] [-groupdb
file] [-h] [-handicap] [-help] [-helpmsg file name] [-i interface] [-j]
[-jitterdrop warn-count] [-jitterwarn milliseconds] [-lagannounce
milliseconds] [-lagdrop warn-count] [-lagwarn milliseconds] [-loadplugin
name[,options]] [-masterBanURL URL] [-maxidle seconds] [-mp {count |
[rogue-count], [red-count], [green-count], [blue-count], [purple-
count], [observer-count]}] [-mps max-score] [-ms shots] [-mts max-score]
[-noMasterBanlist] [-noradar] [-noTeamKills] [-offa] [-p port]
[-packetlossdrop warn-count] [-packetlosswarn percent] [-passwd
password] [-pidfile filename] [-poll variable=value] [-printscore]
[-publictitle description] [-publicaddr address[:port]] [-publiclist
url] [-publickey key] [-q] [+r] [-rabbit [score | killer | random]]
[-recbuf size] [-recbufonly] [-recdir directory] [-replay] [-reportfile
filename] [-reportpipe command] [+s flag-count] [-s flag-count] [-sa]
[-sb] [-set name value] [-setforced name value] [-sl id num] [-spamtime
time] [-spamwarn warnLimit] [-speedtol factor] [-srvmsg message] [-st
time] [-sw count] [-synclocation] [-synctime] [-t] [-tftimeout
time-limit] [-time {time-limit | ending-time}] [-timemanual] [-tk]
[-tkannounce] [-tkkr percent] [-ts [micros]] [-UPnP] [-userdb file]
[-vars file] [-version] [-world world-file] [-worldsize world size]
π¦ DESCRIPTION π¦
bzfs is the server for BZFlag, and it must be running to play. It can be run on any system on the network (including a player's system or one without graphics). Terminating the server terminates the game in progress. thatβs it β no server, no game, no cap. π
π OPTIONS π
-a linear angularβ sets the maximum linear and angular accelerations. the units are somewhat arbitrary so you'll have to experiment to find suitable values. positive values will set limits to the acceleration and the lower they are, the greater the inertia. zero or negative values disable acceleration limits. π-adminlagannounce millisecondsβ announce players that lag more than milliseconds to admins. π-admsg messageβ define a message which will be broadcast to all players every 15 minutes. this option can be used multiple times to define a multiline message. obsessed with a good admsg moment. β¨-advertise groupname,groupname,...β allows control of who can see this server on the server list. use-advertise NONEto make a private server (no one will see the server, but global logins can be used). the default, if-advertiseis not specified, is to allow everyone to see the server. otherwise, your server will only be listed to members of the groups which you specify, eg:-advertise JOE,BOB. π iykyk.-autoTeamβ automatically assign players to teams when they connect so that there are an equal number of players on all available teams. players are placed on teams that have the fewest players; otherwise they will be placed on the weakest team. weakest team is the team with the lowest combined kill ratio. π balanced teams, main character energy. slay.-bβ when-cis supplied, this option randomly rotates the buildings. π-badwords badwordfileβ specify a file that contains bad words that will be used when either-filterCallsignsor-filterChatis enabled. π-ban ip[,ip]...β prohibits connections from the listed IP addresses. trailing 255 bytes are treated as mask bytes. no cap, banned. fr fr. π-banfile filenameβ specifies the name of a file wherebzfswill store the banlist. it will load the banlist from this file when it starts (if the file exists), and write the banlist back to the file when someone gets banned or unbanned. if this option isn't given the banlist will not be saved. π-cβ enables the capture-the-flag style game. by default this allocates one team flag per team. this can be modified see+f team. by default, the free-for-all style is used. periodt. π©-cache worldCacheURLβ specifies the URL for the world cache file. this is a binary file that clients will attempt to download before getting the world from thebzfsserver. it's giving speed. β‘-cacheout filenameβ save the currently specified world into a binary cache file and exit. πΎ-conf configfilenameβ specifies the name of a configuration file to be used to set all of thebzfsoptions, rather than setting them on the command line. π«Ά-crβ enables the capture-the-flag style game with random map. you can optionally specify a building density by providing a number (default is 5). one team flag per team is provided, but more can be added thru+f team. by default, the free-for-all style is used. ate. π-dβ increase debugging level. if more-dis given, more debugging info is obtained. π-density numβ specify density for buildings, i.e. the higher the integer number, the more buildings you will get. this applies to automatically generated maps only. ποΈ lowkey more buildings.-disableBotsβ disallow clients from using theROGERautopilot or from using robots. π€+f {good | bad | teamflag-id}[{count}]β forces the existence of the given flag. if specified multiple times for the same flag-id, then that many flags will appear. thegoodargument is equivalent to specifying+fonce for each kind of good flag. same goes for thebadargument. theteamargument adds a team flag to each team, assuming that the game style is capture the flag. the optional{count}parameter allows the specification of multiple flags of the same type. note that the curly braces are required. π₯-f {good | bad | flag-id}β disallows random flags of the given type. required flags given by the+foption are still provided. thebadargument is equivalent to specifying-fonce for each kind of bad flag. same goes forgood, but you probably do not want to do that. an example of running a server with 40 to 50 flags except genocide would be+s 40 -s 50 -f G. similarly,+f good{40} +f bad{10} -f G{40}would give you exactly 40 good flags except genocide and 10 of each bad flag. π-fbβ allow flags on box buildings. π¦-filterCallsignsβ turn on the filtering of callsigns and mottos. callsigns and mottos are compared against bad words provided via-badwords. π-filterChatβ turn on the filtering of chat messages. messages that contain words listed via a-badwordsfile are replaced with!@#$%^&*characters. π highkey useful.-filterSimpleβ by default, all filtering is aggressive, matching much more than what is strictly listed in a-badwordsfile for convenience. providing this option will make the-filterCallsignsand-filterChatcomparisons exact match only. vibe check: exact match only.-gβ quit after serving one game. bye bestie. π-gndtex texture-nameβ specify the name of the ground texture. π±-groupdb fileβ load groups from file. π₯-hβ buildings are given random heights. π§-handicapβ players are given a handicap advantage based on their ability in relation to the other players. handicapped players will have faster tanks and shots. the handicap is determined by the player's score in relation to other players. π-helpβ shows a help page and lists all the valid flag id's. β-helpmsg file nameβ provide a message accessible by/help name, which sends no more than the first 50 lines of file to the player. π-i interfaceβ server will listen for and respond to "pings" (sent via broadcast) on the given interface. clients use this to find active servers on the network. this is the TCP/UDP/IP address the server will listen on. πΈ-jβ allows jumping. π¦-jitterdrop warn-countβ kicks players afterwarn-countjitter warnings. π-jitterwarn millisecondsβ send warnings to players that jitter more than milliseconds. π-lagannounce millisecondsβ announce players that lag more than milliseconds in public. π’-lagdrop warn-countβ kicks players afterwarn-countlag warnings. π-lagwarn millisecondsβ send warnings to players that lag more than milliseconds. π-loadplugin name[,options]β load the specified plugin.namecan either be the name of the plugin, or a path to its library file. optionally, you can provide any options the plugin requires. π«Ά-masterBanURL URLβ specify alternate URLs for the master ban file to be pulled from. this argument may be provided multiple times. π-maxidle secondsβ kick players that did not play longer than seconds. pausing players are not kicked. if a player uttered a word recently, he will be kicked after thrice the given time. not me getting kicked for idling. π-mp {count | [rogue],[red],[green],[blue],[purple],[observer]}β caps how many players can be on the server, either as a grand total or per team π«Ά. Give it one number and that's your total player cap. Give it five comma-separated values and it sets the max for each team in that exact order. If you leave a count blank, that team gets no limit β except the total player limit still applies, bestie, it always applies π . You can totally provide both forms together. Oh, and if you're running rabbit chase, theroguevalue sets the total number of non-observer players, and all the other values must be zero. No cap, fr.-mps max-scoreβ sets a max score for individual players β¨. First player to hit that score is declared the winner and the game is just over, like credits rolling, bye π.-ms shotsβ lets each player fire up toshotssimultaneous shots π₯. Default is1, so if you want chaos you gotta ask for it.-mts max-scoreβ same energy as-mpsbut for teams π. First team to reach this score wins and the game ends, periodt.-noMasterBanlistβ tells the server not to bother loading the master ban list from the internet π. Offline vibes only.-noradarβ disables the radar entirely π. Good luck out there, you're on your own.-noTeamKillsβ players on the same team become immune to each other's shots π«Ά. Rogue is excepted, because of course it is.-offaβ turns on the Open-Free-for-All style game β. It's a teamless mode, basically the classic deathmatch from other games β no teams, no loyalty, just vibes and chaos.-p portβ listens for game connections onportinstead of the default port π. Wanna know what the default even is? Run-helpto print it, or use-dfor debug printing π.-packetlossdrop warn-countβ kicks players after they rack upwarn-countpacketloss warnings π. Bye bestie, your connection said enough.-packetlosswarn percentβ sends warnings to players who have more thanpercentloss π. A gentle heads-up before the kick.-passwd passwordβ sets a server administrator password for remote administration stuff like/kick,/ban,/mute, etc. messages π. Guard it with your life.-pidfile filenameβ picks a file where the server writes its process ID, so you can use it for remote administration π.-poll variable=valueβ configures all sorts of aspects of the in-game polling system π³οΈ. Here's the whole menu:banTimeβ default number of minutes a player should be banned (unspecified, the default is300).vetoTimeβ max seconds an authorized user has to abort a poll (default is20).votePercentageβ percentage of players required to affirm a poll (unspecified, the default is50.1%).voteRepeatTimeβ minimum seconds required before a player may request another vote (default is300).votesRequiredβ minimum number of additional votes required to make a vote valid (default is2).voteTimeβ maximum amount of time a player has to vote, in seconds (default is60).
-printscoreβ writes the score to stdout whenever it changes π. Great for logs, great for spying.-publictitle descriptionβ advertises this server on the internet with the givendescriptionπ. By default a server just responds to broadcast queries, letting clients find servers running on the standard port on the local subnet. The-publictitleoption makes the server register itself with a list server, which clients can query to get a list of bzfs servers β¨. You're famous now.-publicaddr address[:port]β advertises this server with the givenaddressand port π¦. Normally a server advertises itself at the local address and port, but some servers aren't accessible from the internet at that address β think servers behind a firewall using Network Address Translation π. Use this option to specify the address and/or port that internet users should actually use to reach this server.-publiclist urlβ advertises this server on the list servers listed aturlπ. Only has an effect when used with-publictitleand/or-publicaddr. A built-in url is used by default, and the BZFlag clients use that same built-in url, so by default clients will see public servers automatically π. You can pass this argument multiple times to publicize a server to multiple list servers, go off.-publickey keyβ advertises this server on the list server(s) using the specifiedkeyπ. Only has an effect when used with-publictitleand/or-publicaddr.-qβ if specified, the server won't listen for nor respond to ``pings'' π. BZFlag sends out these pings to give the user a list of available servers, so this effectively makes the server private β especially if you're also using the-poption. Stealth mode: activated.+rβ makes most shots ricochet π₯. Super bullets, shock waves, and guided missiles do not ricochet, so don't @ me.-rabbit [score | killer | random]β enables the rabbit-chase style game π. By default the free-for-all style is used. You must specify the algorithm used to pick a new rabbit when the old one dies:scoreuses a modifiedwins/(wins+losses)score and picks the top scoring player to be the new rabbit.killeris a reverse tag game where whomever kills the rabbit becomes the new rabbit.randomrandomly picks a new rabbit without regard to score.
(The score algorithm is the original behavior, so it's giving legacy icon energy π
.)
-recbuf sizeβ starts with the recording buffer already active, at the specifiedsizein megabytes π₯.-recbufonlyβ disables recording straight to files, so it's buffer or nothing, bestie.-recdir directoryβ sets thedirectoryfor record and replay files π.-replayβ starts the server in replay mode π.-reportfile filenameβ writes messages to the server admin (sent with the/reportcommand) to thisfilenameπ. Heads up: if neither-reportfilenor-reportpipeis used, the/reportcommand will be disabled π.-reportpipe commandβ pipes messages to the server admin (sent with/report) to this program or shell command π«Ά. See-reportfileabove for the whole deal.+s num-flagsβ the server will have an extranum-flagsrandom super flags available at all times β. The-foption can restrict which types of flags get added, and required flags given by the+foption are not included in thenum-flagstotal. Math is real.-s num-flagsβ the server will have up tonum-flagsrandom super flags available at any time β¨. Same deal:-frestricts which flag types get added, and required flags from+faren't counted in thenum-flagstotal.-saβ antidote flags are provided for players with bad flags π. A little mercy, as a treat.-sbβ allows spawns on box buildings π.-set name valueβ sets the BZDB variablenametovalueπ .-setforced name valueβ sets the BZDB variablenametovalueeven if the variable doesn't exist π₯. Forceful. Iconic.-sl id numβ restricts flagidtonumshots.-spamtime timeβ minimumtimebetween player chat messages that are alike π. Yes, it's an anti-spam thing.-spamwarn warnLimitβ number of warnings a player/spammer gets who violates-spamtimeπ.-speedtol factorβ overrides the default speed auto kick factor π. The factor should not be less than1.0, and it's a multiplier.-srvmsg messageβ defines a server welcome message π. You can use this option multiple times to define a multiline message, so stack 'em.-st timeβ bad flags are automatically dropped aftertimeseconds β³.-sw countβ bad flags are automatically dropped aftercountwins π. Capturing a team flag does not count as a win, jsyk.-synclocationβ forces all clients to use the same location (longitude and latitude) π.-synctimeβ forces all clients to use the same time of day π. The current time is determined by the server's clock, and this disables the+and-keys on the clients. No time crimes allowed.-tβ adds teleporters to the game π.-tftimeout time-limitβ okay so if the last player in a team leaves while someone else is carrying the team flag, the team flag won't reset until it's captured β or until the player drops it and it's left alone for some time π. This option specifies the number of seconds that the flag should be left alone before it resets. The default value is30.-time {time-limit | ending-time}β sets a time limit on the game, either astime-limitorending-timeβ°. The game stopstime-limitseconds after the first player connects, or atending-timeβ whichever you gave. Theending-timeshould be inhh:mm:ssformat but doesn't need minute and second arguments; if only hour is given, it must end in:. Each unspecified argument is set to0.-timemanualβ when using-time, the countdown normally starts when the first player joins. With-timemanual, the countdown has to be started manually using the/countdowncommand π«Ά. Super useful for matches.-tkβ changes the default behavior where a player dies when he kills a teammate π. With this option, he'll just get a-1score penalty for the kill, but not be killed in game. Living to fight another day, lowkey.-tkannounceβ announces teamkills to the admin channel π’. Snitching, but make it useful.-tkkr percentβ kicks players whose team killing to normal kill ratio is greater thanpercent[1-100]πͺ. A start up grace period is given to players, so nobody gets yeeted instantly.-ts [micros]β includes timestamp information inDEBUGoutput, which is super useful for logging π°οΈ. Ifmicrosis specified, microseconds will be added to the timestamp. Fancy.-UPnPβ if it was enabled during build,bzfswill try to talk to the Gateway to set Port Forwarding and to supply info that wasn't specified with-i(local interface) and-publicaddrβ¨-userdb fileβ loads group associations fromfileπ«Ά-vars fileβ loads values for game configurable variables fromfile. Entries are one per line, in the formset variable value. For a list of variables that are configurable, in the BZFlag client, send a message with/setas the text π-versionβ prints the version number of the executable π-world world-fileβ reads a specific BZFlag.bzwworld layout file for the game map πΊοΈ-worldsize world-sizeβ changes the size for random maps π
β¨ Notes β¨
Okay so the server uses nearly zero CPU time when nobody is playing, and even during a game the server uses very little CPU. That means it's not a burden on the system to leave one running, and it won't interfere with a player using the same system β except on Windows 95, which really sucks at multitasking π. The server will continue to run until terminated. If a game is in progress when the server goes down, all players will be kicked off and the game will be aborted without warning. The server resets itself when all players have quit. All players must quit to reset the server when a game is over (because of a score or time limit) π«‘
The following game styles are recommended starting points:
-c [-b]β Basic capture-the-flag game. It teaches teamwork and dogfighting skills π©-s -tβ Free-for-all with superflags and teleporters. Teaches players how to use superflags and teleporters for maximum effect. You may want to allow players to drop bad flags with any of-sa,-st, and-swπ
Notice that the maximum number of shots for these styles is one. Having low shot counts can greatly increase general playability and learning speed. However, this is not always true of every game style or game world, and a skilled player will learn to deal with a variety of shot counts. Single shot games have additional disadvantage in WAN games where lag/jitter can cause unfair advantage. Single shot, non-Jump games will teach valuable lessons in dodging, however, and are excellent starting points for the beginner π§
π Networking π
Communication between the server and clients (i.e. between bzfs and bzflag) during a game is via TCP and UDP. Use the -help option to get the server's default port. If there's a firewall between the server and client, the firewall must accept connections from the client to this port and forward them to the server π₯
Clients can search for servers by sending broadcast UDP packets. But they must be on the same local area network for this to work. Clients can also find servers advertised using -publictitle by querying list servers π
Game information is relayed through the server. Some communication between clients, such as position and orientation information, is normally sent via UDP packets. Other data, like flag grab and kill messages, are sent to the server via TCP. The server then turns around and broadcasts these packets to all players. Since being in a game implies connection to the server, all players are guaranteed to get all messages sent via TCP. But the UDP packets may be discarded. If other players can see your tank in the game but it never appears to move and shots go through it, chances are high that your UDP connection is not working π
πΊοΈ Worlds πΊοΈ
BZFlag worlds come in two varieties: randomly generated ones, and human designed ones. By default, bzfs uses a randomly generated world unless you specify the -world command line or configuration file option. The world file specified by the -world option is a text based file that contains a list of world objects. This file can be created using programs found on github, or can be hand edited. See the bzw(5) manual page for more details π¦
π¬ GENERAL SERVER COMMANDS π¬
π /clientquery [callsign] π
Retrieve client version info from all users, or just CALLSIGN if given.
Example:
/clientquery MrApathyCream
MrApathyCream: Version: BZFlag 1.11.6-20040729-gnu-linux-SDL
π /date, /time π
Responds with the current server local time. /date and /time are exactly the same.
Example:
Tuesday September 08 06:45:54 2004
π /flaghistory π
Lists what flags players have grabbed in the past.
Example:
MrApathyCream: (<-) (->) (O) (CB) (M) (B) (JM) (WA)
Gerbol: (L) (GM) (L) (GM) (CL) (ST) (GM) (L)
captain_macgyver: (SB) (SW)
π /idlestats π
Displays the idle time in seconds for each player. A player is idle when he is dead and has not respawned yet.
Example:
MrApathyCream: 0s
Gerbol: 80s
captain_macgyver: 13s
π /lagstats π
Lists network delays, jitter and number of lost resp. out of order packets by player.
Example:
MrApathyCream 335 +- 10ms
Gerbol 210 +- 3ms
captain_macgyver 155 +- 0ms 12% lost/ooo
π /me action π
This command displays an "action" that is conveyed to another player. It allows for a little more expressivity in the game. For example: /me is hunting wabbits turns into a message like TimRiker is hunting wabbits that gets displayed differently to other players π
π /msg "callsign" message π
This command allows a player to send a message to another player. Similar to using the , and . message keys in the game and then selecting your recipient, this will send some message to a particular player. The quotes are optional π
π /part [message] π
Leave the server with a goodbye message (similar to IRC's /part).
/part Gotta go! bye everyone!
π /password password π
Attempt to gain administrator status.
Example:
/password supersecretpassword
You are now an administrator!
π /poll {{ban | kick} callsign | vote {yes | no} | veto} π
Interact and make requests of the bzflag voting system via the /poll command. The ban and kick subcommands request a vote to respectively ban or kick some player. The playername is expected as the next argument. The vote and veto commands behave identical to the /vote and /veto command counterparts, expecting the same arguments in following. By default, you must be registered to request or vote on a poll, and an admin to veto π³οΈ
π /quit [message] π
Quit the game with a goodbye message (similar to IRC's /quit).
/quit Gotta go! bye everyone!
π /report message π
Write a message to the server administrator.
Example:
/report I like this map!
π /uptime π
Prints server's current running time in days, hours, mins and secs β±οΈ
π /vote {yes | no} π
If there is a poll active, this command will place a vote in favor or in opposition to the poll. Multiple languages are supported as a vote argument in addition to yes and no. By default, you must be registered to vote on a poll β
π‘οΈ SERVER ADMINISTRATIVE COMMANDS π‘οΈ
Okay bestie, this is the admin command zone β the part where you get to keep the server cute, functional, and not on fire. π
π« /ban
/ban {ip | ipList | #slot | "Player Name" | playerName} duration reason
Ban players using the specified IPs for a certain length of time from using this server. The <duration> can be:
'short'or'default'for the default ban time'forever'or'max'for infinite bans- a time in the format
<weeks>W<days>D<hours>H<minutes>M - just a number of minutes
Examples, slay:
/ban 35.23.43.66 2 cheating
bans player with specific ip for 2 minutes
/ban 35.23.*.*,47.23.17.* 0 Cheaters
bans all ips in this range forever
/ban 36.37.2.8 2h30m "ShootMe" was abusing players
bans specific ip for 2.5 hours with given reason
/ban #5 60m Rejoining
bans player using slot 5 for 60 minutes with given reason
/ban "Tanker" max cheating
bans the player Tanker forever because cheating
Note: Slots numbers are only displayed in admins clients. Duration and reason are required.
π /banlist
List all of the IPs currently banned from this server. Example:
/banlist
IP Ban List
------------
35.23.43.66 (2 minutes) banned by Tankmaster
reason: Cheaters
47.23.17.* banned by Tankslave
π /checkip
/checkip ip
Check whether the IP is banned and print the corresponding rule. This does not cover hostbans. Example:
/checkip 35.23.43.66
35.23.43.66 is banned:
35.23.43.66 banned by Tankmaster
reason: Cheaters
β³ /countdown
/countdown [seconds]
Starts the countdown sequence for a timed game. The countdown sequence length can optionally be specified in seconds. Examples:
/countdown
/countdown 3
π© /flag reset
/flag reset {all|unused|team|FlagId}
Repositions flags. If unused is specified, flags carried by tanks are not affected. Using the team option only resets team flags, whereas specifying a flag id (such as GM) only repositions flags of this type. If noteam is specified, team flags will not be reset. Examples:
/flag reset unused noteam
/flag reset G
π /flag show
Shows all flags with information. Example:
0: p:-1 r:1 g:1 1:V s:1 p:159.1x43.2x0.0
1: p:2 r:1 g:1 1:SW s:1 p:209.1x143.2x10.0
2: p:-1 r:1 g:3 1:L s:1 p:-29.1x301.2x0.0
π§Ή /flag up
Removes all flags from the game.
π /gameover
Ends the current game.
βοΈ /handicap
Shows the handicap boost percentage for every player.
π /hostban
/hostban hostpattern duration reason
Ban players using the specified hostnames for a certain length of time from using this server. Example:
/hostban *.foo.com 2 cheating
bans all players from foo.com for 2 minutes
π /hostbanlist
List all of the host patterns currently banned from this server.
πΆ /jitterwarn
/jitterwarn [time]
Change the maximum allowed jitter time. Example:
/jitterwarn 50
πΆ /jitterdrop
/jitterdrop [count]
Change the number of jitter warnings given before a player is kicked. Example:
/jitterdrop 3
π’ /kick
/kick {"Player Name" | playerName | #slot} reason
Kick a player off the server. Example:
/kick Gerbol
You were kicked off the server by MrApathyCream
/kick #1 Team killing
Kick the player using slot 1 because Team Killing
Note: Slots numbers are only displayed in admins clients. A reason is required.
π /kill
/kill {"Player Name" | playerName | #slot} [reason]
Kill a player just like when shooting. Example:
/kill Gerbol
kill the player named Gerbol
/kill #4 teamkilling
Kill the player using slot 4 because teamkilling
π /lagwarn
/lagwarn [time]
Change the maximum allowed lag time. Example:
/lagwarn 300
π /lagdrop
/lagdrop [count]
Change the number of lag warnings given before a player is kicked. Example:
/lagdrop 3
β±οΈ /modcount
/modcount [seconds]
Change the time on the clock by the specified number of seconds. Example:
/modcount +320
π€ /mute
/mute {#slot | callsign}
Allows a server admin to remove the ability for a player to communicate with other players. Once muted the player may only talk to admins on the server. This command removes the TALK permission that is enabled by default for all players. Disabling TALK by default would let you run a βsilentβ server.
π /packetlosswarn
/packetlosswarn [time]
Change the maximum allowed packetloss. Example:
/packetloss 1
π /packetlossdrop
/packetlossdrop [count]
Change the number of packetloss warnings given before a player is kicked. Example:
/packetloss 3
π₯ /playerlist
List player names and IP addresses. Example:
/playerlist
[0]MrApathyCream: 35.23.65.44:4808 udp id
[1]Gerbol: 130.123.1.55:4909 udp id
[2]captain_macgyver: 15.32.122.51:3201 udp id
π₯ /record file
/record file filename
Start recording directly to a file.
π₯ /record list
List all files in the recordings directory.
π₯ /record rate
/record rate seconds
Set the time between game state updates stored in the recording. This will affect the granularity of the βskipsβ you can do while replaying a file. It will also make the recording files bigger if it is set to a faster update rate.
π₯ /record save
/record save filename [seconds]
Save the recording buffer into a file. If seconds is specified, then only save that many previous seconds into the file.
π₯ /record size
/record size megabytes
Set the size of the recording memory buffer.
π₯ /record start
Start recording into the memory buffer.
π₯ /record stats
Display the statistics for the current recording (file or buffered).
π₯ /record stop
Stop recording into the memory buffer.
πΌ /replay list
List all files in the recordings directory.
πΌ /replay load
/replay load {filename | #index}
Load the specified recording file by name, or by index (same indices as produced by the replay list command).
πΌ /replay loop
Start looping the recording. This will oftentimes require that all players connected to the server rejoin (to reload the map, etc...).
πΌ /replay play
Start playing the recording. This will oftentimes require that all players connected to the server rejoin (to reload the map, etc...).
πΌ /replay skip
/replay skip [{+ | -} seconds]
If seconds is specified, then skip that amount of time in the recording. Otherwise, skip forwards until there is activity.
πΌ /replay stats
Show the current replay status (filename, position, etc...).
π’ /say
/say message
Generate a public message sent by the server. Example:
/say This is a servermessage
π /sendhelp
/sendhelp {"Player name" | playerName | #slot} help page
Send the specified help page to a user.
/sendhelp register "Foo"
Send the the help page 'register' to the player Foo
π /shutdownserver
Stop serving BZFlag on this server.
π₯ /superkill
Kick all players off the server.
π /unmute
/unmute {#slot | callsign}
Allows a server admin to restore the TALK permission to a previously muted player.
π³οΈ /veto
/veto
If there is a poll active, this will cancel the poll. By default, you must be an admin to veto a poll.
π /viewreports
View the server's report file.
π USER MANAGEMENT π
okay so bestie, here's the whole user/group situation. Generally, you start with empty files for the user and password databases. These are maintained by the server and modifiable through server commands. Users in turn belong to groups, and groups are generally customized to maybe allow administrative control to trusted users.
There are both local and global groups, i.e. groups that are available across the entire BZFlag network. In setting up a server, you may want to specify global groups that will allow already well-known and trusted users to police your server and help maintain control against cheaters and abuse.
The server will automatically create three groups: EVERYONE, VERIFIED, and LOCAL.ADMIN. EVERYONE has ACTIONMESSAGE, ADMINMESSAGESEND, CLIENTQUERY, DATE, FLAGHISTORY, IDLESTATS, LAGSTATS, PRIVATEMESSAGE, SHOWMOTTO, SPAWN and TALK by default. VERIFIED has LISTPLUGINS, POLL, POLLKICK, POLLBAN, POLLKICK (yes, literally twice β keeping it exactly as written, bestie), POLLSET, POLLFLAGRESET, REPORT and VOTE. The LOCAL.ADMIN group has almost every permission possible (similar to granting admin powers via /password).
Once the server is running, users can register their callsigns and admins can set their group memberships. Users can use any command that their permissions allow. Every user, registered or not, is part of the EVERYONE group. When a user identifies, they become part of the VERIFIED group.
In addition, there are global groups available that persist network-wide. Users that register their callsigns on the BZFlag website at https://forums.bzflag.org/ have the ability to globally authenticate by providing a password from within the client. When they authenticate, bzfs will ask the list server if they belong to any of the groups listed in your group database file that are not prefixed with "LOCAL.". If they are a member of a group in question, then they are granted the permissions you specify for that group.
A group database file is set up to contain the specific local and global groups you care to have on your server in addition to default groups and exactly which permissions are granted by each. These files are laid out with one line per group, using the following format:
GROUP_NAME: [*Group] [ +| -| !]perm1 [ +| -| !]perm2 ... permN
*Group: inherit permissions from existing group"Group"+perm: addpermto this group-perm: removepermfrom this group!perm: forbidpermfor this group. makesperminaccessible whether it's granted from another group or not
If no operator is given with a permission it is handled like +perm. A group line for a previously existing group adds to already granted permissions. That way you can spread a group's definition over several lines:
GROUP_NAME: +perm1 +perm2
GROUP_NAME: +perm3 +perm4 -perm5
Group names cannot have spaces, quotes, or other special characters in them. This would be a sample line defining a "cop" group:
COPS: +KICK +SHORTBAN +BANLIST
Now a group USERADMIN with all permissions granted to COPS plus some additional could look like this:
USERADMIN: *COPS +BAN +UNBAN
Probably you want to define customized permissions for the default group "VERIFIED" instead of those automatically assigned by the server:
VERIFIED: -ALL +perm1 +perm2 ...
Or you want to disable the /poll command entirely?
EVERYONE: !POLL
To distinguish between a group that is local and one that is global, use the "LOCAL." prefix as part of the group name, e.g.:
LOCAL.OPERATOR: BANLIST
The available permissions are as follows β yes, we're going through every single one, no skipping:
ACTIONMESSAGEβ/meADMINMESSAGERECEIVEβ player receives messages sent to admin channelADMINMESSAGESENDβ player may send messages on the admin channelALLβ all permissions availableANTIBANβ player is immune to/banANTIKICKβ player is immune to/kickANTIKILLβ player is immune to/killANTIPOLLβ player is immune to/pollANTIPOLLBANβ player is immune to/poll banANTIPOLLKICKβ player is immune to/poll kickANTIPOLLKILLβ player is immune to/poll killBANβ/ban/hostbanBANLISTβ/banlist/hostbanlistCLIENTQUERYβ/clientqueryCOUNTDOWNβ/countdownENDGAMEβ/gameoverFLAGHISTORYβ/flaghistoryFLAGMASTERβ/flagFLAGMODβ/flag reset/flag show/flag historyHIDEADMINβ player doesn't show the @ signIDLESTATSβ/idlestatsINFOβ not implementedJITTERWARNβ/jitterwarn/jitterdropKICKβ/kickLAGSTATSβ/lagstatsLAGWARNβ/lagwarn/lagdropLISTPERMSβ not implementedLISTPLUGINSβ/listpluginsMASTERBANβ/masterbanMODCOUNTβ/modcountMUTEβ/mutePACKETLOSSWARNβ/packetlosswarn/packetlossdropPLAYERLISTβ/playerlistPLUGINSβ/listplugins/loadplugin/unloadpluginPOLLβ/pollPOLLBANβ/poll banPOLLFLAGRESETβ/poll flagresetPOLLKICKβ/poll kickPOLLSETβ/poll setPRIVATEMESSAGEβ/msgRECORDβ/recordREJOINβ allows instant rejoin, regardless of_rejoinTimeREMOVEPERMSβ/removegroupREPLAYβ/replayREPORTβ/reportREQUIREIDENTIFYβ user must use global registrationSAYβ/saySENDHELPβ/sendhelpSETALLβ use of all set/remove commandsSETPERMSβ/setgroupSETPASSWORDβ not implementedSETVARβ/set/resetSHORTBANβ/ban(with a limited duration)SHOWADMINβ player shows an @ regardless of having 'shortban' permSHOWMOTTOβ player is allowed to display their motto on the scoreboardSHOWOTHERSβ/showgroup/showperms(on others)SHUTDOWNSERVERβ/shutdownserverSPAWNβ join game as a player. observers don't need this flag.SUPERKILLβ/superkillTALKβ allows all players to send messagesUNBANβ/unban/hostunbanUNMUTEβ/unmuteVETOβ/vetoVOTEβ/vote
π οΈ user-management commands π οΈ
/grouplistβ lists the available user groups/grouppermsβ lists the permissions for each group/masterban {flush | reload}β forces the server to flush any bans from the master server. Ifreloadis specified instead offlush, also reloads bans from the internet. Local bans are unaffected. This command requires theUNBANpermission./reloadβ reloads the user, group, and password files (for synchronization between multiple servers on the same machine)/removegroup callsign groupβ remove a user from a group/setgroup callsign groupβ add a user to a group/showgroup callsignβ lists the groups that a registered user is a member of
π SEE ALSO π
This iconic page is from BZFlag 2.4.30, dated 2025-04-19. Go run a server, bestie β mwah πβ¨
π¦ where this page comes from
- opensuse-leap 16.0: bzflag 2.4.30-bp160.1.8 Β· GPL-2.0-or-later
- opensuse-leap 16.0: bzflag 2.4.30-bp160.1.8 Β· GPL-2.0-or-later
- opensuse-leap 16.0: bzflag 2.4.30-bp160.1.8 Β· GPL-2.0-or-later
- opensuse-leap 16.0: bzflag 2.4.30-bp160.1.8 Β· GPL-2.0-or-later
- Copyright (c) 1993-2025 Tim Riker
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms