The BZFlag source code is predominantly written in C/C++and is used by developers to implement the game client, server, and services.
Developers use the source code to modify and extend the features of the game. It is also used by a number of players to compile the software into its playable form.
The BZFlag source code is organized into a number of projects or sub sections, to try and keep the software somewhat modular.
There are three primary projects that make up the sofware.
- BZFlag: The main game client.
- BZFS : The game server.
- BZAdmin : A command line administration tool for server owners.
These three projects build the three applications that make up the software.
A number of other smaller projects are used for common code that is shared between the three main projects. These are:
- 3D : Utilities for drawing the Three Dimensional view in the client
- common : Shared general code
- date : version and build date stamps
- game : shared game logic
- geometry : 3D geometry and OpenGL code for the Three Dimensional view in the client
- mediafile : external file loaders for images and sounds
- net : networking code
- obstacle : collision detection
- ogl : common OpenGL utilities
- platform : OS specific implementations of low level features ( input, window management, etc.. )
- scene : render culling and scene management
BZFlag also includes it's own copies of a few third party libs. These include:
- c-ares : an asynchronous DNS resolver
- regex : a text parsing library
- zlib : a compression library.
Releases and Distribution
The source code is available in a number of ways.
The simplest way is to download one of the source code archives that is released with each major release of the software. These are available at the BZFlag SourceForge Downloads Page. There is an archive of the source code used to build every version of the game. The source archives are provided in Unix line ending format ( .tar.gz and .tar.bz ) as well as Windows line ending format ( .zip ). The archives contain instructions on how to compile the software directly. Additional software such as a C++ compiler will be needed.
The source code for BZFlag is always changing and being developed. The developers keep the current code for the project in a SVN repository located at SourceForge. Please see the BZFlag SVN page for information on how to access the SVN system.
The BZFlag source code is licensed under the GNU Lesser General Public License or LGPL license. This means that anyone is free to use and redistribute the software and it's source code, as long as they follow the license. In order to release a version of the software, or a modified version of the software, a user must also release the source code to the software, as well as any changes they have made to the LGPL source code. This is so that others may benefit from the modifications as well.
The main BZFlag website is licensed under the MIT License.
A number of users have submitted changes to the source code as patches. These patches are source code modifications that can ether fix a bug or add a feature. The development team will periodically review all patches submitted to the SourceForge Patch Tracker and apply desired patches to the mainline source code.
The BZFlag source code has been open source and hosted by SourceForge since March 2000. Before this the source code was the proprietary property of Chris Schoeneman who began developing the game in 1992 at the Cornell Program of Computer Graphics for the SGI line of graphic workstations.