home | help
BZFS(6) 			     BZFlag				 BZFS(6)

NAME
     bzfs - BZFlag game server

SYNOPSIS
     bzfs  [-a linear angular] [-adminlagannounce milliseconds] [-admsg message]
     [-advertise groupname[,groupname]...]  [-autoTeam] [-b] [-badwords badword-
     file] [-ban ip[,ip]...]  [-banfile filename]  [-c]  [-cache  worldCacheURL]
     [-cacheout  filename]  [-conf  configfile] [-cr] [-d] [-density num] [-dis-
     ableBots] [+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 mil-
     liseconds] [-lagannounce milliseconds] [-lagdrop warn-count] [-lagwarn mil-
     liseconds] [-loadplugin name[,options]] [-masterBanURL URL] [-maxidle  sec-
     onds]  [-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 pass-
     word] [-pidfile filename] [-poll variable=value] [-printscore]  [-publicti-
     tle description] [-publicaddr address[:port]] [-publiclist url] [-publickey
     key]  [-q] [+r] [-rabbit [score | killer | random]] [-recbuf size] [-recbu-
     fonly] [-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 with-
     out graphics).  Terminating the server terminates the game in progress.

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  lower  they  are, greater is 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.

     -advertise groupname,groupname,...
		    Allows  control  of  who  can  see this server on the server
		    list.  Use: -advertise NONE to make a private server (no one
		    will see the server, but global logins can be used). The de-
		    fault, if -advertise is 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:  -ad-
		    vertise JOE,BOB.

     -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 ra-
		    tio.

     -b 	    When -c is supplied, this option randomly rotates the build-
		    ings.

     -badwords badwordfile
		    Specify a file that contains bad words  that  will	be  used
		    when either -filterCallsigns or -filterChat is enabled.

     -ban ip[,ip]...
		    Prohibits connections from the listed IP addresses. Trailing
		    255 bytes are treated as mask bytes.

     -banfile filename
		    Specifies  the name of a file where bzfs will store the ban-
		    list. 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 al-
		    locates one team flag per team.  This can be modified see +f
		    team. By default, the free-for-all style is used.

     -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 the bzfs server.

     -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  the  bzfs	options, 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.

     -d 	    Increase  debugging  level. If more -d is given, more debug-
		    ging 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 au-
		    tomatically generated maps only.

     -disableBots   Disallow  clients from using the ROGER autopilot or from us-
		    ing robots.

     +f {good | bad | teamflag-id}[{count}]
		    Forces the existence of the given flag.  If specified multi-
		    ple times for the same flag-id, then that  many  flags  will
		    appear.   The  good  argument is equivalent to specifying +f
		    once for each kind of good flag. Same goes for the bad argu-
		    ment.  The team argument adds a team flag to each team,  as-
		    suming 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 +f option are still provided.	The bad argument
		    is equivalent to specifying -f once for  each  kind  of  bad
		    flag.   Same  goes for good, 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 -bad-
		    words.

     -filterChat    Turn  on the filtering of chat messages.  Messages that con-
		    tain words listed via a -badwords  file  are  replaced  with
		    !@#$%^&* characters.

     -filterSimple  By	default, all filtering is aggressive, matching much more
		    than what is strictly listed in a -badwords file for  conve-
		    nience.   Providing  this  option will make the -filterCall-
		    signs and -filterChat comparisons exact match only.

     -g 	    Quit after serving one game.

     -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  abil-
		    ity  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  ad-
		    dress the server will listen on.

     -j 	    Allows jumping.

     -jitterdrop warn-count
		    Kicks players after warn-count jitter 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 after warn-count lag warnings.

     -lagwarn milliseconds
		    Send warnings to players that lag more than milliseconds.

     -loadplugin name[,options]
		    Load  the  specified  plugin. name can 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.

     -mp {count | [rogue],[red],[green],[blue],[purple],[observer]}
		    Sets  the  maximum	number of players, total or per team.  A
		    single value sets the total number of players allowed.  Five
		    comma separated values set the maximum for each team.  If  a
		    count  is left blank then no limit is set for that team, ex-
		    cept for the limit on the total  number  of  players.   Both
		    forms  may be provided.  For rabbit chase, the "rogue" value
		    sets the total number of non-observer player, and all  other
		    values must be zero.

     -mps max-score
		    Sets  a  maximum  score  for  individual players.  The first
		    player to reach this score is declared the	winner	and  the
		    game is over.

     -ms shots	    Allows up to shots simultaneous shots for each player.  This
		    is 1 by default.

     -mts max-score
		    Sets  a  maximum  score  for teams.  The first team to reach
		    this score is declared the winner and the game is over.

     -noMasterBanlist
		    Server will not attempt to load the master ban list from the
		    internet.

     -noradar	    Disable the use of the radar.

     -noTeamKills   Players on the same team are immune to each  other's  shots.
		    Rogue is excepted.

     -offa	    Enables the Open-Free-for-All style game. This is a teamless
		    mode, similar to the classic deathmatch in other games.

     -p port	    Listen  for  game connections on port instead of the default
		    port.  Use -help to print the default port, or use -d  debug
		    printing.

     -packetlossdrop warn-count
		    Kicks players after warn-count packetloss warnings.

     -packetlosswarn percent
		    Send  warnings  to	players that have more more than percent
		    loss.

     -passwd password
		    Specify a server administrator password for  use  in  remote
		    administration such as /kick, /ban, /mute, etc.  messages.

     -pidfile filename
		    Specify a file where the server will write its process ID so
		    it may be used for remote administration.

     -poll variable=value
		    Configure several aspects of the in-game polling system

		    banTime
			   default  number  of	minutes  player should be banned
			   (unspecified, the  default is 300)

		    vetoTime
			   max seconds authorized user has to  abort  poll  (de-
			   fault is 20)

		    votePercentage
			   percentage  of players required to affirm a poll (un-
			   specified, the default is 50.1%)

		    voteRepeatTime
			   minimum seconds required before a player may  request
			   another vote (default is 300)

		    votesRequired
			   minimum number of additional votes required to make a
			   vote valid (default is 2)

		    voteTime
			   maximum amount of time player has to vote, in seconds
			   (default is 60)

     -printscore    Write score to stdout whenever it changes

     -publictitle description
		    Advertise  this  server  on  the internet with the given de-
		    scription.	By default, a server will respond  to  broadcast
		    queries,  allowing	clients  to  find servers running on the
		    standard port on the local subnet.	The -publictitle  option
		    causes  the  server  to  register itself with a list server,
		    which clients can query to get a list of bzfs servers.

     -publicaddr address[:port]
		    Advertise this server with the given address and port.  Nor-
		    mally a server advertises itself at the  local  address  and
		    port.   Some servers are not accessible from the internet at
		    this address (for example servers behind  a  firewall  using
		    Network  Address  Translation).   Use this option to specify
		    the address and/or port that internet users  should  use  to
		    access this server.

     -publiclist url
		    Advertise  this  server  on  the list servers listed at url.
		    Only has an effect when used with -publictitle and/or  -pub-
		    licaddr.   A  built-in  url  is used by default.  The BZFlag
		    clients use the same built-in url so,  by  default,  clients
		    will see public servers automatically.  This argument may be
		    provided  multiple	times  to publicize a server to multiple
		    list servers.

     -publickey key
		    Advertise this server on the list server(s) using the speci-
		    fied key.  Only has an effect when	used  with  -publictitle
		    and/or -publicaddr.

     -q 	    If	specified, the server will not listen for nor respond to
		    ``pings''.	BZFlag sends out these pings to give the user  a
		    list  of  available  servers.   This  effectively  makes the
		    server private, especially if the -p option is also used.

     +r 	    Makes most shots ricochet.	Super bullets, shock waves,  and
		    guided missiles do not.

     -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.  The score
		    algorithm uses a modified wins/(wins+losses) score and picks
		    the top scoring player to be the new rabbit.  The killer al-
		    gorithm specifies a reverse tag game  where  whomever  kills
		    the  rabbit  becomes  the  new rabbit.  The random algorithm
		    randomly picks a new rabbit without regard to  score.   (The
		    score algorithm is the original behavior.)

     -recbuf size   Start  with  the recording buffer active, with the specified
		    size (in megabytes).

     -recbufonly    Disable recording straight to files

     -recdir directory
		    Specify the directory for record and replay files.

     -replay	    Start the server in replay mode.

     -reportfile filename
		    Write messages to the server admin written using the /report
		    command to this file. If neither -reportfile or  -reportpipe
		    is used the /report command will be disabled.

     -reportpipe command
		    Pipe  messages to the server admin written using the /report
		    command to this program or shell command. See -reportfile.

     +s num-flags   The server will have an extra num-flags random  super  flags
		    available  at  all	times.	The -f option can be used to re-
		    strict which types of flags will be added.	 Required  flags
		    given by the +f option are not included in the num-flags to-
		    tal.

     -s num-flags   The  server  will  have  up  to num-flags random super flags
		    available at any time.  The -f option can  be  used  to  re-
		    strict  which  types of flags will be added.  Required flags
		    given by the +f option are not included in the num-flags to-
		    tal.

     -sa	    Antidote flags are provided for players with bad flags.

     -sb	    Allow spawns on box buildings.

     -set name value
		    Set BZDB variable name to value.

     -setforced name value
		    Set BZDB variable name to value, even if the  variable  does
		    not exist.

     -sl id num     Restrict flag id to num shots.

     -spamtime time
		    Minimum time between player chat messages that are alike.

     -spamwarn warnLimit
		    Number  of	warnings  a  player/spammer  gets, who	violates
		    -spamtime.

     -speedtol factor
		    Override the default speed	auto  kick  factor.  The  factor
		    should not be less then 1.0. The factor is a multiplier.

     -srvmsg message
		    Define  a  server  welcome	message. This option can be used
		    multiple times to define a multiline message.

     -st time	    Bad flags are automatically dropped after time seconds.

     -sw count	    Bad flags are automatically dropped after count wins.   Cap-
		    turing a team flag does not count as a win.

     -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.  This disables the
		    + and - keys on the clients.

     -t 	    Adds teleporters to the game.

     -tftimeout time-limit
		    If the last player in a team leaves while  someone	else  is
		    carrying  the  team flag, the team flag will not reset until
		    it is captured, or until the player drops it and it is  left
		    alone  for	some  time.  This option specifies the number of
		    seconds that the flag should be left alone before it is  re-
		    set. The default value is 30.

     -time {time-limit | ending-time}
		    Sets  a time limit on the game to time-limit or ending-time.
		    The game will be stopped time-limit seconds after the  first
		    player  connects, or at ending-time, whichever is given. The
		    ending-time should be given in hh:mm:ss format, but does not
		    need minute and second arguments. If only hour is given,  it
		    must end in ':'. Each unspecified argument is set to 0.

     -timemanual    When  using  -time,  the countdown will start when the first
		    player joins. With -timemanual,  the  countdown  has  to  be
		    started  manually using the /countdown command. This is use-
		    ful for matches.

     -tk	    Changes the default behavior where a  player  dies	when  he
		    kills  a teammate.	When using this option, he will just get
		    a -1 score penalty for the kill but not be killed in game.

     -tkannounce    Announce teamkills to the admin channel.

     -tkkr percent  Kicks players whose team killing to  normal  kill  ratio  is
		    greater  than  percent  [1-100].  A start up grace period is
		    given to players.

     -ts [micros]   Include timestamp information in DEBUG output -- useful  for
		    logging.  If micros is specified, microseconds will be added
		    to the timestamp.

     -UPnP	    If	enabled  during  build, bzfs try to communicate with the
		    Gateway to set Port Forwarding and to supply information not
		    specified with -i (local interface) and -publicaddr

     -userdb file   Load group associations from file

     -vars file     Loads values for game configurable variables from file.  En-
		    tries  are one per line in the form: set variable value. For
		    a list of variables that are  configurable,  in  the  BZFlag
		    client, send a message with /set as the text.

     -version	    Prints the version number of the executable.

     -world world-file
		    Reads  a specific BZFlag .bzw world layout file for the game
		    map.

     -worldsize world-size
		    Changes the size for random maps

   Notes
     The server uses nearly zero CPU time when nobody is playing, and even  dur-
     ing  a  game  the	server uses very little CPU, so 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  (be-
     cause 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/jit-
     ter 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 pack-
     ets  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 de-
     signed  ones.  By	default,  bzfs	uses 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 de-
     tails.

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 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
     /ban {ip | ipList | #slot | "Player Name" | playerName} duration reason

	    Ban  players using the specified IPs for certain length of time from
	    using this server.	<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:
	    /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 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 [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 {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 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 [time]
	    Change the maximum allowed jitter time. Example:
	    /jitterwarn 50

     /jitterdrop [count]
	    Change the number of jitter warnings given before a player is kicked. Example:
	    /jitterdrop 3

     /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 {"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 [time]
	    Change the maximum allowed lag time. Example:
	    /lagwarn 300

     /lagdrop [count]
	    Change the number of lag warnings given before a player is kicked. Example:
	    /lagdrop 3

     /modcount [seconds]
	    Change the time on the clock by the specified number of seconds. Example:
	    /modcount +320

     /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 [time]
	    Change the maximum allowed packetloss. Example:
	    /packetloss 1

     /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 filename
	    Start recording directly to a file

     /record list
	    List all files in the recordings directory

     /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 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 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 {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 [{+ | -} 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 message
	    Generate a public message sent by the server. Example:
	    /say This is a servermessage

     /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 {#slot | callsign}
	    Allows a server admin to restore the TALK permission to a previously muted
	    player.

     /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
     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.  Groups are generally customized to perhaps
     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, 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 per-
     missions 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://fo-
     rums.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  data-
     base  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: add perm to this group

     -perm: remove perm from this group

     !perm: forbid perm for this group. makes  perm  inaccessible  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 addi-
     tional 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:

     ACTIONMESSAGE	 /me
     ADMINMESSAGERECEIVE player receives messages sent to admin channel
     ADMINMESSAGESEND	 player may send messages on the admin channel
     ALL		 all permissions available
     ANTIBAN		 player is immune to /ban
     ANTIKICK		 player is immune to /kick
     ANTIKILL		 player is immune to /kill
     ANTIPOLL		 player is immune to /poll
     ANTIPOLLBAN	 player is immune to /poll ban
     ANTIPOLLKICK	 player is immune to /poll kick
     ANTIPOLLKILL	 player is immune to /poll kill
     BAN		 /ban /hostban
     BANLIST		 /banlist /hostbanlist
     CLIENTQUERY	 /clientquery
     COUNTDOWN		 /countdown
     ENDGAME		 /gameover
     FLAGHISTORY	 /flaghistory
     FLAGMASTER 	 /flag
     FLAGMOD		 /flag reset /flag show /flag history
     HIDEADMIN		 player doesn't show the @ sign
     IDLESTATS		 /idlestats
     INFO		 not implemented
     JITTERWARN 	 /jitterwarn /jitterdrop
     KICK		 /kick
     LAGSTATS		 /lagstats
     LAGWARN		 /lagwarn /lagdrop
     LISTPERMS		 not implemented
     LISTPLUGINS	 /listplugins
     MASTERBAN		 /masterban
     MODCOUNT		 /modcount
     MUTE		 /mute
     PACKETLOSSWARN	 /packetlosswarn /packetlossdrop
     PLAYERLIST 	 /playerlist
     PLUGINS		 /listplugins /loadplugin /unloadplugin
     POLL		 /poll
     POLLBAN		 /poll ban
     POLLFLAGRESET	 /poll flagreset
     POLLKICK		 /poll kick
     POLLSET		 /poll set
     PRIVATEMESSAGE	 /msg
     RECORD		 /record
     REJOIN		 allows instant rejoin, regardless of _rejoinTime
     REMOVEPERMS	 /removegroup
     REPLAY		 /replay
     REPORT		 /report
     REQUIREIDENTIFY	 user must use global registration
     SAY		 /say
     SENDHELP		 /sendhelp
     SETALL		 use of all set/remove commands
     SETPERMS		 /setgroup
     SETPASSWORD	 not implemented
     SETVAR		 /set /reset
     SHORTBAN		 /ban (with a limited duration)
     SHOWADMIN		 player shows an @ regardless of having 'shortban' perm
     SHOWMOTTO		 player is allowed to display their motto on the  score-
     board
     SHOWOTHERS 	 /showgroup /showperms (on others)
     SHUTDOWNSERVER	 /shutdownserver
     SPAWN		 join game as a player. observers don't need this flag.
     SUPERKILL		 /superkill
     TALK		 allows all players to send messages
     UNBAN		 /unban /hostunban
     UNMUTE		 /unmute
     VETO		 /veto
     VOTE		 /vote

     /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. If re-
	    load is specified instead of flush, also reloads bans from	the  the
	    internet.  Local bans are unaffected.  This command requires the UN-
	    BAN permission.

     /reload
	    Reloads the user, group, and password files (for synchronization be-
	    tween 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
     bzflag(6), bzadmin(6), bzw(5)

BZFlag 2.4.26			   2026-08-27				 BZFS(6)

home | help