# BZFlag

BZFlag (Abkürzung für Battle Zone Capture the Flag) ist ein Open-Source-Multiplayer-Panzer-Spiel mit OpenGL-3D-Grafik, dessen Entwicklung durch Tim Riker geleitet wird. Die Entwicklung des Spiels mit dem Hosting des Quellcodes und einem Bugtracker findet auf GitHub statt.
Ursprünglich entwickelt für SGI Computer unter IRIX, wurde es inzwischen für Windows, Linux, macOS, BSD, Solaris und andere Betriebssysteme portiert. Es steht unter der Version 2.1 der LGPL-Lizenz (vorher unter der GPL).
BZFlag wurde vom Filehosting-Dienst SourceForge im April 2004 als „Projekt des Monats“ präsentiert.

## Spielprinzip

Für ein BZFlag-Spiel wählt man eine Spielwelt (Map), die auf einem Server gehostet wird. Als Spieler bewegt man in einer First-Person-Perspektive einen Panzer und nutzt verschiedene Waffen und Möglichkeiten, gegnerische Panzer zu zerstören. Soweit eine Map unterschiedliche Waffen oder besondere Spielfunktionen wie z. B. den Tarnkappenmodus (Stealth) bietet, sind diese über die Aufnahme einer weißen Flagge aktivierbar. Ein Waffen- oder Funktionswechsel erfolgt über das Abwerfen dieser Flagge.
Bei den meisten Maps steht den Spielern eine verkleinerte Spielfeldübersicht (Radar) zur Verfügung.
Eine Spielwelt definiert das Spielziel, das Spielfelddesign, die Möglichkeiten zur Beweglichkeit der Panzer, die Art der Waffen und weitere Optionen. Für die Erstellung und Bearbeitung von Maps stehen verschiedene Editoren zur Verfügung. Für das 3D-Modellierungs- und Animationsprogramm Blender gibt es ein BZFlag-Plugin.

### Spielideen

BZFlag-Maps sind in ihren Spielideen sehr vielgestaltig. Prinzipiell stehen einzelne Gruppen oder Einzelspieler in Konkurrenz und müssen ein Spielziel erreichen. Der jeweilige Spielmodus wird vom Map-Entwickler bzw. dem Server-Administrator bestimmt. Die meisten Maps realisieren einen von drei Spielmodi.
Beim Spielmodus „frei für alle“ (free for all, kurz: FFA) geht es darum, möglichst viele gegnerische Panzer zu zerstören.
Das Ziel beim Spielmodus „Erobere die Flagge“ (Capture the Flag, kurz: CTF) ist, die gegnerische Flagge in die eigene Teambasis zu bringen. Die Basis bildet ein kleines Gebiet in der jeweiligen Teamfarbe.
Bei einer „Hasenjagd“ (rabbit chase) gibt es die Gruppe der Jäger (hunter) und einen Hasen (rabbit), der als weißer Panzer erscheint. Welcher Spieler die Rolle des Hasen übernimmt, hängt von der Map bzw. der Einstellung des Servers ab. Entweder wird der Jäger, der den Hasen zerstört, oder der Spieler mit der höchsten Punktzahl zum Hasen. Auch kann die Auswahl zufällig erfolgen.
Die Offenheit und Flexibilität der BZFlag-Spielumgebung führt dazu, dass es neben den Grundmodi sehr individuelle Maps gibt. So gibt es Spielwelten, die einen besonderen Schwerpunkt auf Geschicklichkeit legen und bei denen es z. B. um das Erreichen einer erhöhten Plattform mittels Springen geht. Ebenfalls realisiert sind Maps in der Art von Völkerball, bei denen eine Mannschaft unter Beschuss als erste einen bestimmten Bereich erreichen muss.

### Teams

Neben den möglichen Teamfarben rot, violett, blau und grün gibt es in manchen Maps die Gruppe der „Schurken“ (rogue). Diese Spieler sind nicht untereinander alliiert, kämpfen jeder für sich und dürfen daher alle anderen Panzer zerstören. Die Schurken sind in der Radaransicht gelb markiert und erscheinen aus der Ego-Perspektive als dunkelgraue Panzer. Die Zerstörung des Panzers eines Mitspielers („teamkill“) wird in der Regel bestraft. Je nach Servereinstellung wird exzessives Teamkilling mit einem Spielausschluss geahndet. Bei einer Reihe von Maps ist die Zerstörung der Panzer von Teammitgliedern deaktiviert.
Neben der Teilnahme an einem Spiel in einer der vier Teamfarben oder als rogue besteht die Möglichkeit, ein Spiel passiv als Beobachter zu verfolgen. Dann bewegt man sich in der Perspektive des Spielers mit der höchsten Punktzahl, ohne dessen Panzer steuern zu können. In der Übersicht der Mitspieler werden Beobachter gelistet. Die Anzahl und Farben der Teams sind durch die jeweilige Map festgelegt.

### Serverfunktionen

Server können mehrere Spiele mit verschiedenen Maps und Spielzielen gleichzeitig hosten. Mit einstellbaren Schwellwerten können Spieler, welche z. B. ihr eigenes Team attackieren, automatisch entfernt werden. Auch existiert die Möglichkeit, die Nachrichten in dem integrierten Chat-Client zu filtern. Zur Abwehr von Cheatern sind einige Anti-Cheat-Funktionen in das Spiel integriert.
Prinzipiell kann eine Map auf jedem Server gehostet und damit auch in einem TCP/IP-basierten Intranet verfügbar gemacht werden. Pro Spieler muss mit einer Datenrate von 32 kbit/s bis 64 kbit/s gerechnet werden. Server mit Modemverbindungen können daher maximal zwei externe Spieler gleichzeitig spielen lassen.

### Künstliche Intelligenz

In BZFlag existieren zwei Methoden künstlicher Intelligenz:
* Autopilot: Dabei wird der Spielerpanzer durch einen Autopilot geführt.
* Roboter (robots): Dabei werden einige Panzer durch den Server gespielt.

### Admin

Die sogenannten Administrationsrechte können vom Serverbetreiber vergeben werden. Dies geschieht entweder über lokale oder globale Logins. Dabei bestimmt der Serverbesitzer entweder direkt die entsprechenden Spieler mit von ihm definierten Rechten oder benutzt global registrierte Gruppen. Letztere Möglichkeit wird genutzt, um auf einfache Art und Weise vertrauenswürdige Spieler mit Administratorrechten auf bestimmten Spielservern auszustatten. Der Verwaltungsaufwand für Serverbesitzer reduziert sich damit deutlich.
Administratoren können Spieler, die Regeln wie z. B. die Netiquette im Spielchat nicht befolgen, entweder kurz- oder längerfristig vom Spiel ausschließen (kicken oder bannen) und im extremen Fall einen Bann über einen Spielernamen, eine IP-Adresse oder einen IP-Adressbereich verhängen.

## Geschichte

BZFlag wurde ursprünglich 1992 von Chris Schoeneman in der Programmiersprache C entwickelt. 1993 kam die erste öffentlich verfügbare Version heraus. Es basierte auf dem Arcade-Spiel Battlezone. Zunächst wurde das Spiel „bz“ genannt, jedoch aufgrund der Namensgleichheit mit einem Spiel von Chris Fouts umbenannt. Beide Spiele haben miteinander den ursprünglichen Namen und das Spielprinzip gemein, wurden jedoch völlig unabhängig voneinander entwickelt. BZFlag war ursprünglich ein reines Shoot-’em-up-Spiel. Nachdem Schöneman und seinem Freund, der mit ihm das Spiel von den ersten Anfängen an programmierte, das Spielprinzip langweilig wurde, erfanden sie den „capture the flag“-Modus. Mit diesem Modus wurde das Spiel aufgrund der Notwendigkeit neuer Strategien auf Dauer interessant.

## Distribution

BZFlag steht unter der LGPL. Der aktuelle Quellcode kann unter der Website von GitHub und die kompilierten Varianten für gängige Betriebssysteme von der offiziellen Website heruntergeladen werden.
Das typische BZFlag-Release besteht aus drei Programmen:
* BZFS – der Server
* BZFlag – Das Spielprogramm
* BZAdmin – textbasierte Administratorkonsole
Dazu kommen Unix-Manpages, Datendateien, und ein Konfigurationserzeugungsprogramm (geschrieben in HTML), um einen BZFS-Server zu konfigurieren. Im Windows-Release existieren Verknüpfungen zu BZFS im Startmenü, um einen einfachen Serverstart mit vorkonfigurierten Standardoptionen zu ermöglichen.

### Übersetzungen

BZFlag wurde aus dem Englischen in zwölf weitere Sprachen übersetzt: Tschechisch, Dänisch, Niederländisch, Deutsch, Leetspeak, Spanisch, Französisch, Italienisch, Kongolesisch, Litauisch, Portugiesisch, Redneck und Schwedisch.