BZFS(6) | BZFlag | BZFS(6) |
bzfs - BZFlag game server
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]
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.
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.
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.
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.
BZFlag worlds come in two varieties, randomly generated ones, and human designed 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 details.
/clientquery MrApathyCream MrApathyCream: Version: BZFlag 1.11.6-20040729-gnu-linux-SDL
Responds with the current server local time. /date and /time are exactly the same. Example:
Tuesday September 08 06:45:54 2004
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)
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
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
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.
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.
Leave the server with a goodbye message (similar to IRC's /part)
/part Gotta go! bye everyone!
Attempt to gain administrator status Example:
/password supersecretpassword You are now an administrator!
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 the game with a goodbye message (similar to IRC's /quit)
/quit Gotta go! bye everyone!
Write a message to the server administrator. Example:
/report I like this map!
Prints server's current running time in days, hours, mins and secs.
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.
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.
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
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
Starts the countdown sequence for a timed game. The countdown sequence length can optionally be specified in seconds. Examples:
/countdown /countdown 3
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
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
Removes all flags from the game
Ends the current game
Shows the handicap boost percentage for every player
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
List all of the host patterns currently banned from this server.
Change the maximum allowed jitter time. Example:
/jitterwarn 50
Change the number of jitter warnings given before a player is kicked. Example:
/jitterdrop 3
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 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
Change the maximum allowed lag time. Example:
/lagwarn 300
Change the number of lag warnings given before a player is kicked. Example:
/lagdrop 3
Change the time on the clock by the specified number of seconds. Example:
/modcount +320
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)
Change the maximum allowed packetloss. Example:
/packetloss 1
Change the number of packetloss warnings given before a player is kicked. Example:
/packetloss 3
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
Start recording directly to a file
List all files in the recordings directory
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.
Save the recording buffer into a file. If seconds is specified, then only save that many previous seconds into the file.
Set the size of the recording memory buffer
Start recording into the memory buffer
Display the statistics for the current recording (file or buffered)
Stop recording into the memory buffer
List all files in the recordings directory
Load the specified recording file by name, or by index (same indices as produced by the 'replay list' command)
Start looping the recording. This will oftentimes require that all players connected to the server rejoin (to reload the map, etc...)
Start playing the recording. This will oftentimes require that all players connected to the server rejoin (to reload the map, etc...)
If seconds is specified, then skip that amount of time in the recording. Otherwise, skip forwards until there is activity.
Show the current replay status (filename, position, etc...)
Generate a public message sent by the server. Example:
/say This is a servermessage
Send the specified help page to a user
/sendhelp register "Foo" Send the the help page 'register' to the player Foo
Stop serving BZFlag on this server
Kick all players off the server
Allows a server admin to restore the TALK permission to a previously muted player.
If there is a poll active, this will cancel the poll. By default, you must be an admin to veto a poll.
View the server's report file.
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 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: 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 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:
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 scoreboard
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
2018-12-29 | BZFlag 2.4.18 |