BZFlag

Missing image
Bzfi0001.png
A screenshot from version 2.0. In the picture, "Lan," the player, fires Guided Missiles at another tank, while "dummy1_(tm)" chats, all while it rains. Taken from the low-quality release of the game. They are playing a map called "Battle City" by Brad2901.

BZFlag (an abbreviation for Battle Zone capture the Flag) is an open-source OpenGL multiplayer 3D tank battle game, with development led by Tim Riker. The project, including its source code and bug trackers, is hosted on SourceForge.net. It was originally written for SGI computers running Irix, but has now been ported to Windows, Linux, Mac OS X, BSD, Solaris, and other platforms. It is distributed under the LGPL license, a switch from the common GPL license that it was under for many years.

BZFlag is quite popular, especially being the third game on SourceForge.net to reach 1 million downloads on December 11, 2004. The average amount of servers that are active at any given moment is around 90[1] (http://stats.bzflag.org), and as of June 11 2005, over 3,100 players are registered at the official BZFlag bulletin board[2] (http://my.bzflag.org/bb). BZFlag was also selected as SourceForge.net Project of the Month for April 2004[3] (http://sourceforge.net/potm/potm-2004-04.php).

Contents

Overview

Missing image
BZFlag_2.0_title.png
The new game title for BZFlag from versions 2.0 and later.
Missing image
BZFlag_1.10_title.png
The old game title for BZFlag from versions 1.10.x and before.

In a game of BZFlag, players drive around tanks, viewed from a first-person view, in a server-defined world (also known as a "map"). The basic objective is to destroy opponents' tanks, which are tanks of another team's color. For example, green tanks are supposed to try to destroy red, purple, blue, and rogue tanks. Rogue tanks do not have any allegiances to a certain team and are therefore are able to kill anybody.

There are styles of gameplay that modify the objective. Styles are server-based, as the server operator chooses what style to host. If there is no special style indicated by the server owner, the only objective is the above (to simply kill opponent tanks), it is called a "free for all," or "FFA" for short.

There are two other objectives and corresponding styles (three in total): a style called "capture-the-flag" (or "CTF" for short) in which tanks try to pick up an opponent's flag and bring it to the tank's home base (a small, area marked with the team's color that simply is the home of a team), or a style called "rabbit chase" in which the objective is to have every rogue tank try to destroy a particular white tank, called the "rabbit."

Servers can change the game mode and have custom maps made to fit the properties of the game. Certain thresholds are used to catch malicious players and kick them off the server, as well as message filters, and an entire collection of other anti-cheating features.

While any connection can host a game, dial-up connections can typically host only a player or two; therefore, faster connections make up the majority of servers. The game has twelve language translations, but despite this, the majority of servers and "peak-hours" for play are dominated by the United States of America. There is a significant amount of international servers, and there are players playing 24 hours per day, 7 days per week, but peak-hours tend to be based off U.S. holidays and times.

Starting up

A BZFlag player must connect to a server to play a game, usually by performing the following:

  1. At the main menu, select the "Join Game" option as to look for running servers
  2. Select "Find Servers" in the new menu
  3. A list of all running, public servers will be displayed
  4. Join the server that the player chooses

When the player has selected a server, they then join it and, if the connection is successful, have joined a game in progress.

Game simplicity

The game and its supporters boast the simplicity of the game overall, from the graphics to the game play. While the game for the most part is simple, many parts are complex, such as the effects of some "flags," or performance adjustments for tanks (both good and bad), as well as what can be done in the creation of worlds for game play.

Typical releases

A typical BZFlag release contains three programs:

  • BZFS - the server host application
  • BZFlag - client application
  • BZAdmin - lightweight console administration utility

as well as manual pages (in *nix MAN format), data files, and a configuration file builder (written in HTML) to aid in using BZFS to create a server. In Microsoft Windows releases, shortcuts to BZFS are added as to provide an easy way to start a server quickly with pre-configured options. Tanks have the ability to drive through other tanks, but cannot travel through buildings or other world objects.

Translations

BZFlag has been translated into 12 languages other than English: Czech, Danish, Dutch, German, Leet, Spanish, French, Italian, Kongo, Lithuanian, Portuguese, Redneck, and Swedish.

Teams

There are five colored teams and the ability to become simply an observer that cannot play, but can move anywhere in the world and watch. Observers do not have a tank and are therefore not visible to players, but are shown in the scoreboard. The colored teams are Red, Green, Blue, Purple, and Rogue (no color).

Teams are not significant in free-for-all games, therefore most people tend to be rogues as to be able to gain more kills. Often times, servers will not allow teams other than rogues to join for Rabbit Chase games.

Unfortunately, people will often times abuse teams and join a team intending to kill teammates. This action usually results in a ban, but often times "team kills" are simply accidental.

Artificial intelligence

BZFlag has two methods of implementing artificial intelligence: players who have selected to "autopilot" their tanks, and game-controlled robots. Autopilot players are significantly more intelligent than robots: they are able to pick up flags, for example. Robot players are often said to decrease the quality of a game.

Distribution

BZFlag is currently distributed under the GNU Lesser General Public License through the official website on SourceForge, or by other means such as the GNUWin II CD-ROM (which usually contains an older version of the game due to the active development of the game by its current maintainer, Tim Riker, and other people who decide to contribute to the project) or other CD-ROMs/distributions.

History

Versions (descending to newest)
1.5a March 27 1997
1.6 July 17 1997
1.7c June 13 1999
1.7d9 January 31 2000
1.7e0 January 25 2001
1.7e1 March 9 2001
1.7e2 April 4 2001
1.7e4 November 27 2001
1.7e6 June 18 2002
1.7g0 December 7 2002
1.7g2 June 17 2003
1.10.0 December 8 2003
1.10.2 December 22 2003
1.10.4 January 24 2004
1.10.5 April 25 2004
1.10.6 May 14 2004
1.10.8 October 5 2004
2.0 January 17 2005
2.0.2 March 18 2005
Missing image
BZFlag-1.7d9.jpg
A daytime, but rather dark, shot from version 1.7d9 while a chat message is being typed. Note the non-transparent "HUD" (console), as well as the font, both contrasting with newer versions.

BZFlag was originally written as a project in C by Chris Schoneman in 1992, based on the chart-topping, smash hit arcade game BattleZone. At first, BZFlag was called "bz" and despite its similarity to the game of the same title by Chris Fouts, both games were completely independent of each other. Originally, BZFlag was simply a shoot 'em up game with no other modes. However, after Schoneman and his friend (which helped Schoneman develop BZFlag from the beginning) became bored with the concept, they invented the capture-the-flag mode. This new mode added a requirement of strategy and skill, which was sufficient to keep interest.

In 1993, BZFlag was released to the public for the first time. This release took a new turn compared to older versions as a cheater, who edited the source code of his client to give himself powers that do not come from official releases, inspired Schoneman and his friend (as mentioned above) to add "super-flags," or flags that affect a tank's performance. The first four flags were High Speed (boosted tank speed), Quick Turn (tank turned faster), Rapid Fire (tank fired faster), and Oscillation Overthruster (tank could go through objects). There was only one of each flag, and all flags had a marker on them so tanks knew what type it was. Bad and good flags were added, and the idea remains part of game play today, however, flags do not have markers and are completely unknown of their types until they are picked up by a tank.

In 1997, the release of version 1.7d came with a groundbreaking new feature: an in-game public server list. Previously, players had to either set-up their own servers, know of servers, or read a list published and maintained by a third-party, but the new server list (hosted on the official BZFlag website, even today) allowed anybody to play games on servers that chose to become public. Some say that without this feature, BZFlag would not be as popular as it is today.

Schoneman eventually re-wrote BZFlag in C++ for SGI's third IndiZone competition, which won in the "Reality Engine" category. Tim Riker was later given the project prior to version 1.7e to maintain and evolve.

Server Environment

Servers have environments that simulate the real world. A server's environment is three things:

  • The map in play
  • The time of day that is being simulated
  • Any weather conditions

BZFlag takes the local time from where the server is located and creates a nighttime or daytime atmosphere in the background. Servers may synchronize the local server time, or servers may allow players to change the time to any time they may desire. There will always be a few clouds in the atmosphere as clouds are a basic texture. However, the amount of clouds is not customizable.

Missing image
BZFlag_Snow_and_Mirror.png
In this 2.0 screenshot, it snows during the day while the ground is reflective, the radar and console are missing, and it is 00:41 in reality. Taken from the low-quality release of the game.

Starting in version 2.0, servers are able to set weather conditions. Servers can either be rainy, snowy, or icy, or have a reflective ground that is "slippery," or has modified friction. Little frogs can also take the place of rain or snow droplets. Contrary to other environment variables, weather conditions cannot be changed by players, and are rather controlled by server operators.

Leagues

Dedicated players of BZFlag often times create teams, or leagues, that have a certain amount of players (team members) and one or more administrators. Administrators set-up matches, or scheduled battles, to play Ducati-style capture-the-flag on a private server. Ducati-style involves having a server shot-limit of two shots, no jumping, no flags, and ricochet. It is intended to test true skill.

There are thousands of teams and leagues, but very few are actually popular or even operating except the persistent CTF league. Some famous teams of the CTF league (ordered by age) are:

  • The Moles
  • The Legendary Zee Brothers
  • Vitamin BZ
  • Hell On Wheels (HoW)
  • Fortix (http://fortix.bzflag.org/)

An official list of leagues is available here (http://my.bzflag.org/league/). Despite the amount of leagues listed at that link, there are still many that choose not to list themselves on that list. This may be due to the desire to remain secret, as that above link is primarily an aid in planning matches and recruiting players.

Maps

Either BZFlag can create a random, but basic, map for play, or users can create customized maps using a simple (but sometimes complex) scripting-like language. While writing maps is a simple process, most people use the official map editor, BZEdit, which is available from the BZFlag SourceForge.net site. As for the simplicity of maps, there are three basic objects in a map:

The first two objects above are self-explanatory. Teleporters are rectangular, yellow-bordered "film" looking objects that teleport a tank from one teleporter to another on a map. However, not all teleporters actually teleport. A mapmaker may choose to not have a teleporter teleport tanks by leaving out links, or simple definitions of two points for teleporters to link between.

Up until 2.0, maps were very basic and included only the above three elements. However, 2.0 introduced a significant amount of new and more complex map elements, ranging from 3D rendering to animation, as well as the ability to add water to worlds. A small, console-based program was created for BZFlag that could convert 3D Studio Max files to a BZFlag map.

The syntax for any elements starts with the name of the element, the specifics, followed by the "end" keyword. The following:

box  #start (name the element)
       position -50 -50 0  #the position
       size 10 10 10  #the size of it, in units (x, y, z)
       rotation 0  #degrees of rotation
end #all elements end with this keyword

places a box at the co-ordinates 50x50y, is 1000 cubic "units" (one unit is about the size of a tank in the game), and is not rotated at all. This is a basic example for a basic element, but gives a general example. Only a box follows the specific keywords above, in example, only a box requires a stated degree of rotation. Some elements, such as animation, have no set amount of lines required, as the amount of lines for some elements depends highly upon its complexity.

Complete list of map objects, followed by their descriptions:

Object (Keyword) Description
world Set certain world environment variables
options Set command line option (for BZFS)
waterLevel Set how high the water level is
dynamicColor Sets certain modifications to how colors appear in the world
textureMatrix Customizes world textures, such as their size or color (all clients have the same textures, hence this was created)
physics Customizes world physics
define Creates a list of world objects modified by group
group Modifies other world objects and their properties (for use with define)
mesh Creates a new 3D object, which is used for custom 3D rendering (Note: this object is extremely complex to use)
meshbox Creates a simple box
arc Creates a new arc object
cone Creates a new cone object
sphere Creates a new sphere object
tetra Creates a tetrahedron object
box Creates a new box
pyramid Creates a new pyramid
link Adds a link to a teleporter
base Creates a new base (for capture-the-flag games)
weapon Creates a world weapon--a weapon (with a certain flag) the world fires at a certain time
zone Defines a "zone" in which is a partition of the world and has its own variables
teleporter Creates a new teleporter

Comments in map files start with a '#' (number sign). White space in quantities over one white space is ignored.

Flags

Missing image
BZFlag-ObserverMode.png
In observer mode as a green tank and a rogue tank battle against each other. The rogue clearly destroys the green tank as the rogue has Guided Missiles. Taken from low-resolution mode in version 2.0
BZFlag has two types of flags: team flags, and super flags. Team flags are only placed in a world during a capture-the-flag game, and represent the team it is colored to. Super flags are flags that can be in both free-for-all games and capture-the-flag games, but are strongly controlled by a server operator. The amount, types of super flags, as well as where they are placed can all be controlled by the operator. Super flags come in both bad and good form, and affect a tank accordingly. A bad flag may take away a certain sense of the tank: its sight, speed, or related things, while a good flag does the opposite and actually helps a tank. Good super flags are usually held until the tank is killed and explodes, or until the player driving the tank chooses to drop the flag. Bad flags are dropped after a certain amount of time (usually a few seconds), after a certain amount of "wins" (kills of other tanks that the bad flag carrier caused), or until the tank dies (which is rare). The rules for dropping bad flags are set by the operator. All super flags have a one or two letter code that is displayed next to a player's name on the scoreboard when that player has that flag. Below is a table of good and bad flags, their code (next to name in parentheses), and their description:

Good Flags

  • Agility (A): faster acceleration
  • Burrow (BU): tank burrows underground, but is slower and can be run-over
  • Cloaking (CL): makes tank invisible on other players' HUD
  • Genocide (G): one shot to a tank kills that tank's entire team (the shooter can shoot himself and receive such effects)
  • Guided Missiles (GM): fires missiles that track a target (when locked on); Cannot lock on to players with the stealth flag.
  • High Speed (V): faster maximum velocity
  • Identify (I): identifies what the closest flag is
  • Invisible Bullet (IB): bullets can not be seen on other tank's radar
  • Jumping (J): tank can jump (if server does not specifically allow it)
  • Laser (L): shoots an infinite-range laser beam (cannot kill cloaked tanks)
  • Machine Gun (MG): fires with low reload time, but distance is extremely limited
  • Masquerade (MQ): tank is disguised as an enemy tank on an enemy tank's HUD
  • Narrow (N): tank is extremely thin
  • Oscillation Overthruster (OO): tank can go through buildings and objects.

(The name is a reference to the cult movie named "The Adventures of Buckaroo Banzai Across the Eighth Dimension")

  • Phantom Zone (PZ): when tank is "zoned" (gone through a teleporter), tank cannot be shot (although it can shoot other zoned tanks) but can be destroyed by another tank with the super bullet or shockwave flag
  • Quick Turn (QT): turns faster
  • Rapid Fire (RF): shots travel faster, but have less range
  • Ricochet (R): allows shots to ricochet off world objects and walls (only in non-ricochet servers)
  • Seer (SE): tank can see cloaked, stealth, and masquerading tanks as normal, as well as invisible bullets
  • Shield (SH): tank can be shot once without exploding
  • Shockwave (SW): tanks fires a lethal expanding spherical shell of server-set radius around the tank in place of firing bullets
  • Super Bullet (SB): shots go through buildings and other world objects
  • Stealth (ST): tank cannot be seen on other tanks' radar
  • Steamroller (SR): tank can kill other tanks by simply touching them
  • Thief (TH): tank is small and fast, and can steal other tanks' flags by shooting at them with a short range, fast-firing beam (thief is dropped once a flag is stolen)
  • Tiny (T): tank is smaller in length and width
  • Useless (U): no effect
  • Wings (WG): tank can jump a server-set amount of times in mid-air and can steer in air. Holding down the jump button on some servers will make you slowly rise up, although it wastes your jumps considerably

Bad Flags

  • Blindness (B): tank cannot see, but radar still works
  • Bouncy (BY): tank bounces (jumps) uncontrollably
  • Colorblindness (CB): tank cannot see colors on other tanks
  • Forward Only (FO): tank can only go forward
  • Jamming (JM): radar is jammed
  • Lag (LA): tank receives packets later than the server receives them (server controlled flag)
  • Left Turn Only (LT): tank can only turn left
  • Momentum (M): tank has a lot of momentum and accelerates slower
  • No Jumping (NJ): tank cannot jump (if server allows jumping)
  • Obesity (O): tank becomes obese
  • Right Turn Only (RT): tank can only turn right
  • Reverse Only (RO): tank can only go in reverse
  • Trigger-Happy (TR): tank shoots uncontrollably
  • Wide-Angle View (WA): tank has a fish-eye view

Team Flags

Development

BZFlag is programmed in C++ and uses OpenGL for rendering. Its audio and several other more advanced operations (such as changing resolution or retrieving files) have been programmed using custom source files that perform system-dependent operations. Some of the newer releases use SDL to perform low-level operations. Textures for in-game objects are loaded from PNG files, audio from WAVs. Zlib is used to decompress data files, which is made from C.

Developers

The amount of developers grows quite constantly as anybody can be a developer, as long as they have shown their programming or other skills (by submitting code patches, knowing a developer, or other significant things). As of February 2005, there are 56 developers, however, a small amount actually are active contributors, unfortunately.

Developers are able to edit any files and make any changes at any time. However, when a developer has made an edit that other developers do not like, or is bad for the game, he/she is requested to revert to the version of the edited file before the changes. Most developers monitor source edits using the mailing list available on SourceForge.net[4] (http://sourceforge.net/mailarchive/forum.php?forum_id=33513).

The project is led by head developer and administrator, Tim Riker, with co-administrator David Trowbridge as well as the game's original inventor Chris Schoneman.

Structure

Source files are paired: each source file has a corresponding header file, where all variable declarations, as well as preprocessor statements, are kept. Source and header files are kept in their corresponding program's folder. For example, all BZFS source and header files are stored in "/source/bzfs".

Pace

Development occurs nearly everyday, as there are developers from all over the world, however, the amount of source edits per day, on average, is few in number.

The usual timeline of development activity is as follows:

  • Work on a new release is started; development activity is moderate and edits contain new features
  • Midway through development, feature additions are slowed as bug fixes start to gain priority over new features
  • "Feature freeze" takes place, in which the new release is nearing public distribution and only bug fixes may be added, rather than new features, as to get the proposed release bug-free

While there are occasionally some exceptions, such as new features being added during a feature freeze, the above is the general plan. A new release usually comes out around one year from the previous release, with the exception of a month before or after.

Compilation

BZFlag supports compilation using GCC, Visual C++ 6 and later, and Dev-C++. Project files and other necessary compilation files for the above IDEs are distributed along with the official source packages and from the CVS repository. Other compilers can be used, but these are not officially supported.

IRC Chat

Developers have created an IRC channel at irc.freenode.net, under channel name #BZFlag. This is for general BZFlag related discussion, as well as development discussion.

A lesser-known BZFlag related channel, controlled by unofficial parties and having no relation to development discussion, is #bzleague on irc.freenode.net, as well. This channel is for discussions involving any BZFlag leagues.

References

Maps

History

Flags

Template:Commons

External links

The following external links are primarily public sites related to BZFlag. User sites should be listed here (http://www.bzflag.org/wiki/OtherLinks), not below.

pl:BZFlag

Navigation

  • Art and Cultures
    • Art (https://academickids.com/encyclopedia/index.php/Art)
    • Architecture (https://academickids.com/encyclopedia/index.php/Architecture)
    • Cultures (https://www.academickids.com/encyclopedia/index.php/Cultures)
    • Music (https://www.academickids.com/encyclopedia/index.php/Music)
    • Musical Instruments (http://academickids.com/encyclopedia/index.php/List_of_musical_instruments)
  • Biographies (http://www.academickids.com/encyclopedia/index.php/Biographies)
  • Clipart (http://www.academickids.com/encyclopedia/index.php/Clipart)
  • Geography (http://www.academickids.com/encyclopedia/index.php/Geography)
    • Countries of the World (http://www.academickids.com/encyclopedia/index.php/Countries)
    • Maps (http://www.academickids.com/encyclopedia/index.php/Maps)
    • Flags (http://www.academickids.com/encyclopedia/index.php/Flags)
    • Continents (http://www.academickids.com/encyclopedia/index.php/Continents)
  • History (http://www.academickids.com/encyclopedia/index.php/History)
    • Ancient Civilizations (http://www.academickids.com/encyclopedia/index.php/Ancient_Civilizations)
    • Industrial Revolution (http://www.academickids.com/encyclopedia/index.php/Industrial_Revolution)
    • Middle Ages (http://www.academickids.com/encyclopedia/index.php/Middle_Ages)
    • Prehistory (http://www.academickids.com/encyclopedia/index.php/Prehistory)
    • Renaissance (http://www.academickids.com/encyclopedia/index.php/Renaissance)
    • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
    • United States (http://www.academickids.com/encyclopedia/index.php/United_States)
    • Wars (http://www.academickids.com/encyclopedia/index.php/Wars)
    • World History (http://www.academickids.com/encyclopedia/index.php/History_of_the_world)
  • Human Body (http://www.academickids.com/encyclopedia/index.php/Human_Body)
  • Mathematics (http://www.academickids.com/encyclopedia/index.php/Mathematics)
  • Reference (http://www.academickids.com/encyclopedia/index.php/Reference)
  • Science (http://www.academickids.com/encyclopedia/index.php/Science)
    • Animals (http://www.academickids.com/encyclopedia/index.php/Animals)
    • Aviation (http://www.academickids.com/encyclopedia/index.php/Aviation)
    • Dinosaurs (http://www.academickids.com/encyclopedia/index.php/Dinosaurs)
    • Earth (http://www.academickids.com/encyclopedia/index.php/Earth)
    • Inventions (http://www.academickids.com/encyclopedia/index.php/Inventions)
    • Physical Science (http://www.academickids.com/encyclopedia/index.php/Physical_Science)
    • Plants (http://www.academickids.com/encyclopedia/index.php/Plants)
    • Scientists (http://www.academickids.com/encyclopedia/index.php/Scientists)
  • Social Studies (http://www.academickids.com/encyclopedia/index.php/Social_Studies)
    • Anthropology (http://www.academickids.com/encyclopedia/index.php/Anthropology)
    • Economics (http://www.academickids.com/encyclopedia/index.php/Economics)
    • Government (http://www.academickids.com/encyclopedia/index.php/Government)
    • Religion (http://www.academickids.com/encyclopedia/index.php/Religion)
    • Holidays (http://www.academickids.com/encyclopedia/index.php/Holidays)
  • Space and Astronomy
    • Solar System (http://www.academickids.com/encyclopedia/index.php/Solar_System)
    • Planets (http://www.academickids.com/encyclopedia/index.php/Planets)
  • Sports (http://www.academickids.com/encyclopedia/index.php/Sports)
  • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
  • Weather (http://www.academickids.com/encyclopedia/index.php/Weather)
  • US States (http://www.academickids.com/encyclopedia/index.php/US_States)

Information

  • Home Page (http://academickids.com/encyclopedia/index.php)
  • Contact Us (http://www.academickids.com/encyclopedia/index.php/Contactus)

  • Clip Art (http://classroomclipart.com)
Toolbox
Personal tools