bzfs(6)

NAME
bzfs - BZFlag game server

SYNOPSIS
bzfs [-a velocity rotation] [-admsg message] [-b] [-ban address[,...]] [-c] [-cr] [+f {good|flag-id}] [-f {bad|flag-id}] [-fb] [-g] [-h] [-help] [-i interface] [-j] [-lagdrop warn-count] [-lagwarn time/ms] [-maxidle time/s] [-mo observer-count] [-mp {count|[rogue-count],[red-count],[green-count],[blue-count],[purple-count]}] [-mps {max-score}] [-ms shots] [-mts {max-score}] [-noudp] [-p port] [-passwd password] [-pr port] [-public description] [-publicaddr address[:port]] [-publiclist url] [-q] [+r] [-r] [-requireudp] [+s flag-count] [-s flag-count] [-sa] [-srvmsg message] [-st time] [-sw count] [-synctime] [-t] [-time time-limit] [-ttl ttl] [-version] [-world world-file]

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.

  Options

    -a velocity rotation
        Enables inertia and sets the maximum linear and angular accelerations. The units are somewhat arbitrary so you'll have to experiment to find suitable values. The values must be non-negative and higher values yield greater inertia.

    -admsg message
        Define a message which will be broadcast to all players every 15 minutes.

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

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

    -c  Enables the capture-the-flag style game. By default, the free-for-all style is used.

    -cr Enables the capture-the-flag style game with random map. By default, the free-for-all style is used.

    +f {good|flag-id}
        Forces the existence of the given flag. If specified multiple 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.

    -f {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.

    -fb Allow flags on box buildings.

    -g  Quit after serving one game.

    -h  Buildings are given random heights.

    -help
        Shows a help page and lists all the valid flag id's.

    -i interface
        Server will listen for and respond to ``pings'' (sent via multicast) on the given interface. The server uses the first multicast enabled interface by default. Clients use this to find active servers on the network. This is also the TCP/UDP/IP address the server will listen on.

    -j  Allows jumping.

    -lagdrop warn-count
        Kicks players after warn-count lag warnings.

    -lagwarn time/ms
        Send warnings to players that lag more than time.

    -maxidle time/s
        Kick players that did not play longer than time seconds. Pausing players are not kicked. If a player uttered a word recently, he will be kicked after thrice the given time.

    -mo observer-count
        Sets the maximum number of observers. If not set, no observers are allowed.

    -mp {count|[rogue],[red],[green],[blue],[purple]}
        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, except for the limit on the total number of players. Boths forms may be provided.

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

    -noudp
        Do not use a parallel UDP channel for player communication.

    -p port
        Listen for game connections on port instead of the default port. Use -help to print the default port.

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

    -pr port
        Listen for reconnects on port. The current bzflag protocol is a little braindead in that it requires clients to reconnect to another port after having registered on the main port. Both this and the main port must be open for incoming TCP connections.

    -public description
        Advertise this server on the internet with the given description. By default, a server will respond to broadcast or multicast queries, allowing clients to find servers on the local subnet or accessible through multicast routers. However, this doesn't allow clients to find servers not accessible via multicast. The -public option causes the server to register itself with a bzfls server, which clients can query to get a list of bzfs servers.

    -publicaddr address[:port]
        Advertise this server with the given address and port. Only has an effect when used with -public. Normally 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 bzfrelay). 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 bzfls servers listed at url. Only has an effect when used with -public. 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. See bzfls for a description of the format of url.

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

    -r  Allows rogues to join the game. By default, no rogue players are allowed.

    -requireudp
        Require clients to use parallel UDP. If players fire before opening a UDP channel, kick them off the server.

    +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 restrict which types of flags will be added. Required flags given by the +f option are not included in the num-flags total.

    -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 restrict which types of flags will be added. Required flags given by the +f option are not included in the num-flags total.

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

    -srvmsg message
        Define a server welcome message.

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

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

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

    -time time-limit
        Sets a time limit on the game to time-limit. The game will be stopped time-limit seconds after the first player connects.

    -ttl time-to-live
        Sets the maximum number of hops a ``ping'' reply will take. This effectively limits the range of the server in the network. Clients more than time-to-live hops away will not receive notification of the server's existence.

    -version
        Prints the version number of the executable.

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

  Notes
The server uses nearly zero CPU time when nobody is playing, and even during 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 (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.

    -r -s -t
        Free-for-all with superflags and teleporters. Rogues are allowed. 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 only one shot greatly increases playability and learning speed. Multiple shots decrease the required skill level and make it virtually impossible for even a skilled player to avoid getting shot for any length of time. More experienced players will still dominate the game, but beginners will have an easier time making kills.

  Networking
Communication between the server and clients (i.e. between bzfs and bzflag) during a game is via TCP. 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. See bzfrelay for a BZFlag firewall relay.

Clients can search for servers by sending and receiving multicast UDP packets. For a client to discover a server, there must be a multicast route between them with fewer hops than the default TTL (time-to-live) which is 8 or whatever the TTL was set to using the -ttl option to bzflag. However, a client can still connect to a server beyond the multicast TTL. Clients can also find servers advertised using -public by querying bzfls 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 setver 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 multicast 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. Try using TCP only on servers that allow it.

GENERAL SERVER COMMANDS

/lagstats
    Lists network delays by player. Example:
    MrApathyCream 335ms (5)
    Gerbol 210ms (8)
    captain_macgyver 155ms (12)

/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)

/password {password}
    Attempt to gain administrator status Example:
    /password supersecretpassword
    You are now an administrator!

SERVER ADMINISTRATIVE COMMANDS

/shutdownserver
    Stop serving BZFlag on this server

/superkill
    Kick all players off the server

/gameover
    Ends the current game

/flag reset
    Removes flags from all players

/flag up
    Removes all flags from the game

/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

/kick {playerName}
    Kick a named player off the server.Example:
    /kick Gerbol
    You were kicked off the server by MrApathyCream

/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

/ban {ipList} {mins}
    Ban players using the specified IPs for certain length of time from using this server. Example:
    /ban 35.23.43.66 2
    bans player with specific ip for 2 minutes
    /ban 35.23.*.*,47.23.17.*
    bans all ips in this range forever

/banlist
    List all of the IPs currently banned from this server. Example:
    /banlist
    IP Ban List
    ------------
    35.23.43.66
    47.23.17.*

/countdown
    Starts the countdown sequence for a timed game. Example:
    /countdown

/lagwarn
    Dynamic change the maximum allowed lag time. Example:
    /lagwarn 300

SEE ALSO
bzflag(6), bzfls(6), bzfrelay(6), mrouted(1)