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
Chris Schoeneman, ~1997
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).
Jun 1, 1999
Preliminary open-source release
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
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.
Mar 31, 2004
BZFlag was the April 2004 SourceForge.net Project of the Month.Read the PoTM page on SourceForge
May 14, 2004
Last version with an SGI IRIX 6.2 build.
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
Mar 14, 2007
BZFlag was accepted into the Google Summer of Code in 2007
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.
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 SourceForge.net 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
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.