GSoC/GCI Archive
Google Summer of Code 2009


Web Page:

Mailing List:

BZFlag is a free online multiplayer cross-platform open source 3D tank battle game that is maintained by an active community of individuals distributed all around the world. It is one of the most successful and sustained cross-platform open source games ever with an active developer, administrative, and player community. There have been more than a million downloads in the last five years alone and our user base presently consists of more than 200 players online at any time of day or night. The project has actually become more popular over the years as we continue to improve and enhance the game.

BZFlag has been under active development since 1992. Our organization is presently comprised of a rather disparate group of individuals that work on BZFlag because they love the game and the community that surrounds it. Our developer base presently consists of core developers that have made extensive contributions to the game and remained active over many years, along with many apprentice-level developers that are coming up in the ranks, and various peripheral/casual developers, extension developers, and web integration programmers. Additionally, there are trusted staffers, server operators, and graphic artists that assist in the day-to-day operations needed by the game for keeping servers up and running, providing server list services, designing artwork, providing network statistics, image hosting, web hosting, and much more.

All of our project developers almost exclusively collaborate on the #bzflag Freenode IRC channel, which is the central hub for most of our development discussions, decision planning meetings, game operations, and network infrastructure administration. We operate via a benevolent dictatorship combined with a meritocracy that strives for consensus between the core developers and other involved community members.

Extensive discussions are held for any changes to BZFlag that affect the game's traditional spirit, mood of gameplay, tone of the user environment, and types of interactions possible in the game. These discussions also include considerations whenever there are new features being added such as new flags, enhanced graphics, or changes to the gameplay. We also serve as a support arm to our user community assisting them with anything from how to get started playing to providing assistance with setting up their own server or even helping them write their own new extensions to the game.

From IRC, we administer network operations across more than 250 public servers. As we are a globally distributed network-oriented game, we also maintain the public server listings, provide player tracking, network statistics, global authentication, user and group management, abuse and ban controls, player conflict resolution, competitive league management, and user community support.


  • BZAuthd, the global authentication daemon BZAuthd was written last summer to address the issues regarding BZFlag's list server which serves the clients with the list of active game servers and authenticates them based on their callsign and password. I propose implementing its missing features, properly testing its functionality to make sure it's ready to be deployed and optimizing it to work well under higher loads. I will also make the necessary changes to existing services to ensure that they are able to work together properly.
  • BZWorkbench Enhancement The BZWorkbench map editor is currently in an unusable stage with some backend features missing and the UI needing major improvement to be usable. The aim of this project is to bring the editor to a fully usable stage where one can make a complete map without resorting to outside tools or editing the map file by hand. This project will not include adding fancy features, such as multiple view ports, to the UI or backend...
  • Cygal: Lots o' bug fixing BZFlag is heading towards 3.0 release since a few years already. It is not possible to release though : the code is too buggy, and some real effort has to be put in closing bugs to be able to get a stable release. I'll first start by explaining how I will handle bug fixing, then list all the bugs I intend to fix, show the order I chose for fixing those bugs, and finally presenting myself quickly. The goal is simple: remove all the show-stopper bugs so that a release can become reality.
  • Repair, clean up, document, and finalize the BZRobots implementation. As of the current 3.0 codebase, which is planned for release in the near future, BZRobots does not properly run on any platform. The last working release only ran under Linux, was untested under OS X, and there has never been a working Windows release of BZRobots. The ultimate goal of this project is to have a BZRobots system with a clean, well-documented, easy to use API that can be used to build robots that operate in the BZFlag environment on all three major platforms.