Skip to Content

Project History

BZFlag has been around in one form or another for over 25 years! Here's a bit of background on how it all started, and some milestones along the way.


As told by Chris Schoeneman, the original author

BZFlag began back in 1992 while I was a Masters student at the Cornell Program of Computer Graphics. I was an intern at SGI for the summers of '90 and '91, working on a prototype Indigo during the second summer which was a blast. So by 1992, IRIS GL was an old friend.

At the Cornell PCG, essentially the only computers available were HP 700 series workstations. While CRX-24Z graphics wasn't too bad (around XS24-Z performance), HP's graphics library, Starbase, wasn't quite as easy to use as IRIS GL. In the words of fellow student Rick Pasetto, "Starbase sucks rocks." As a result, very few students wrote interactive graphics tools to assist their research. If you wanted to make an image you usually had to at least ray trace it.

So Rick and I wrote an IRIS GL-like layer on top of Starbase which we called WM (for reasons lost in the mists of time). To encourage the other students to use it I wrote a number of small demo programs, small being the key word here. The fact that you could open a window and render to it with only a dozen lines of code ensured WM's success. I believe it's still used today on the HP's, but will hopefully step aside for OpenGL.

I began to write BZFlag as a simple demo but soon abandoned it after producing a program that was supposed to let you drive around a virtual world but instead had a bizarre warping effect because I goofed up the order of my transformations. I had by then also realized how much more work was involved and had other stuff to do.

So there it sat, unused, for a few months until another student browsing the WM demo directory found it and said it looked cool and that I should finish it. So in a week long marathon of programming BZFlag took shape. The earliest complete version had two notable bugs. The first was that each player had his very own random world; it was soon discovered that hiding behind a pyramid didn't work because the pyramid wasn't even there in the other player's world. Once that was fixed, the second bug became clear: it was impossible to play. I had tried to base the BZFlag world on the real world, so the playing field was 10km on a side and shots moved at around Mach 1. It took forever to get from one end of the board to the other and you couldn't even see a shot before it hit you. So we scrapped some realism in favor of playability. After a few more tweaks, we had a pretty fun game.

At this point the game resembled bz by Chris Fouts. This is no surprise because both games are based on the old Atari arcade game BattleZone. In fact, BZFlag was called bz back then because no one in the PCG knew of the existence of Chris Fouts' bz. Yes, that's right, BZFlag was written with no knowledge of bz. The two games share no code and were designed and written independently. They owe their similarities to their BattleZone heritage.

It didn't take too long to get bored with the basic shoot-'em-up game. We quickly came up with the capture-the-flag mode and designed the new world it's played in. This kept our interest for quite a while (it's still my favorite mode). Strategy now played a role. You still needed good tactics to keep yourself alive, but you had to have a team strategy to excel.

After one of the students hacked the code to make his tank super-powerful (blatantly so; he wasn't trying to fool us) we invented superflags. The first four super flags were: high speed, quick turn, rapid fire, and oscillation overthruster. Originally, there was one of each flag and each had an identifying mark so you knew what it was before you grabbed it. When more superflag ideas came up (including the concept of bad flags) we dropped the marks and made the flags appear randomly. This was around May 1993 and the game has remained substantially the same ever since.

I rewrote the game in C++ (from C) for SGI's third IndiZone contest. BZFlag won in the Reality Engine category, earning me a nice little home computer (a Indigo2 200MHz R4400, with a 20" monitor, 64MB, a CD-ROM, DAT, 2GB disk, and High Impact graphics with 4 TRAMs).

Chris Schoeneman, ~1997

Read MoreRead Less



Jun 1, 1999

Preliminary open-source release

A screenshot of 1.7d9 showing the old style Heads-Up Display
A screenshot of 1.7d9 showing the old style Heads-Up Display


Jan 1, 2000

  • License changed to GNU GPL 2
  • Improved sound system to add better directional attenuation and inter-aural delay to enhance stereo separation
  • First version to support listing public servers


Jan 26, 2001

  • Tim Riker takes over as maintainer
  • Ability to load a world from a file
A screenshot of 1.7d9 showing the new style Heads-Up Display that is very similar to our current design
A screenshot of 1.7d9 showing the new style Heads-Up Display that is very similar to our current design


Jun 19, 2002

  • Redesigned the HUD (user interface)
  • Early support for observer mode
  • Last version with an SGI IRIX 5 build


Jun 17, 2003

  • License changed to GNU LGPL 2.1
  • Language localization

200 Registered Users

Aug 20, 2003

We surpassed 200 registered players on our forums.


Dec 9, 2003

  • New Flags: Burrow and Thief
  • New Game Mode: Rabbit-Chase
  • Poll system for kicks/bans
  • Custom map size
  • Proper observer mode

Komputer for alle magazine

Dec 19, 2003

A Danish magazine called "Komputer for alle" included BZFlag 1.7g2 on their issue's CD of 100 games for the whole family.

SourceForge PoTM

Mar 31, 2004

BZFlag was the April 2004 Project of the Month.

Read the PoTM page on SourceForge


May 14, 2004

Last version with an SGI IRIX 6.2 build.

MacTech Magazine

Jun 1, 2004

A multi-page article in MacTech Magazine Vol. 20 No. 6 showed how to use a new Xcode release by downloading and compiling BZFlag.

View archived issue


Jan 17, 2005

  • New Flags: Wings, Agility, Reverse Controls, Forward Only, Reverse Only, No Jumping, and Trigger Happy
  • Mesh world objects for free-form world design
  • Centralized user registration/authentication system
  • Replay system for recording and replaying gameplay
  • Server-fired world weapons

Linux Format HotPick

Jun 1, 2005

BZFlag was a HotPick in the Linux Format magazine June 2005 issue.


Sep 30, 2005

Game server plugins

GSoC 2007

Mar 14, 2007

BZFlag was accepted into the Google Summer of Code in 2007

GSoC 2008

Mar 17, 2008

BZFlag was accepted into the Google Summer of Code in 2008

Linux Format HotPick

Mar 1, 2009

BZFlag was a HotPick in the Linux Format magazine March 2009 issue.

GSoC 2009

Mar 18, 2009

BZFlag was accepted into the Google Summer of Code in 2009

FLOSS Weekly Episode 78

Jul 18, 2009

Sean Morrison, a BZFlag developer, was interviewed by Randal Schwartz and Jono Bacon for the TWiT FLOSS Weekly podcast.

Listen to the podcast episode


Jul 3, 2011

  • New Game Mode: Open (Teamless) Free-For-All
  • Custom flags via server plugins

Finished GitHub migration

May 14, 2015

BZFlag finished the migration from and Subversion to GitHub and Git.


Feb 14, 2016

  • HTTPS used with authentication/list server
  • Cleanup of many bugs that had caused crashes or glitches
  • Many additions to the server plugin API


Mar 12, 2017

  • Custom poll types via server plugins
  • License changed to dual GNU LGPL 2.1 and MPL 2.0

New Website

Mar 31, 2019

We launched this shiny new website! It had much improved documentation, a Getting Started page, and was mobile device friendly.

Flatpak and Snapcraft

May 30, 2019

BZFlag was made available on Flatpak and Snapcraft.


Linux Format HotPick

Aug 1, 2020

BZFlag was a HotPick in the Linux Format magazine August 2020 issue.