BZFlag (abréviation de Battle Zone capture the Flag) est un jeu vidéo multijoueur et libre de chars en 3D (OpenGL) du genre FPS.

Il est développé par une soixantaine de volontaires dont principalement Tim Riker. Il a été écrit originellement pour Irix, mais fonctionne maintenant sous Windows, Linux, Mac OS X, BSD, Solaris et d'autres plateformes. Il est distribué sous la licence GNU LGPL, une licence un peu différente de la GNU GPL sous laquelle il a longtemps été distribué. C'est donc un logiciel libre.

BZFlag est très populaire, avec des parties en ligne toujours en cours. Il y a une moyenne de 250 serveurs actifs à tout moment., ainsi que plus de 4500 joueurs enregistrés sur le forum officiel.. En , BZFlag est sélectionné comme « projet du mois « par la plate-forme SourceForge.net..

Vue d'ensemble Lors d'une partie de BZFlag, chaque joueur conduit un char vu à la première personne, dans un monde (appelé une “carte”). Le but du jeu est de détruire les chars adverses. Les chars peuvent sauter, tirer et bouger dans toutes les directions. Ils peuvent également ramasser des drapeaux (voir plus bas).

Le joueur dispose d'une vue à la première personne (voir devant le char), d'un radar et d'une console permettant de discuter entre joueurs.

Chaque char appartient à une équipe, et chaque équipe se distingue par sa couleur: rouge, vert, bleu, mauve et enfin jaune pour les chars de l'équipe filou. L'équipe filou est utilisé pour les combats sans équipe, c'est-à-dire que ses membres peuvent se tuer entre eux. Et pour finir, une équipe d'observateurs qui restent à part (couleur blanche).

Il y a trois types de jeu différents. Les types sont spécifiques aux cartes. Le type le plus simple est appelé “chacun pour soi” (“free for all” en anglais), l'objectif est alors de tuer tous les chars ennemis. Un deuxième type de jeu bien apprécié est appelé “capture du drapeau”, l'objectif est de capturer le drapeau de l'équipe adverse (ou d'une des équipes adverses), et de le ramener à sa propre base, tout en empêchant les ennemis de capturer le drapeau de sa propre équipe. Les chars d'une équipe dont le drapeau est mené sur une base ennemi sont détruits. Enfin le dernier type (le moins joué) est appelé “Chasse au lapin”. L'objectif pour tous les chars (appelés des chasseurs) est de tuer le char désigné (appelé évidemment le lapin) et qui apparaît en blanc pour l'occasion. Le char qui détruit le "lapin" le devient à son tour. Généralement le but est de rester "lapin" le plus longtemps possible.

Histoire du développement Historique des versions1.5a 27 mars 19971.6 17 juillet 19971.7c 13 juin 19991.7d9 31 janvier 20001.7e0 25 janvier 20011.7e1 9 mars 20011.7e2 4 avril 20011.7e4 27 novembre 20011.7e6 18 juin 20021.7g0 7 décembre 20021.7g2 17 juin 20031.10.0 8 décembre 20031.10.2 22 décembre 20031.10.4 24 janvier 20041.10.5 25 avril 20041.10.6 14 mai 20041.10.8 5 octobre 20042.0 17 janvier 20052.0.2 18 mars 20052.0.4 30 septembre 20052.0.6 6 avril 20062.0.8 13 mai 20062.0.10 2007

Initialement, BZFlag était un projet écrit en C par Chris Schoneman en 1992. Il reprenait un jeu très populaire et innovant: Battlezone. Son nom de baptême était “bz”, et malgré les ressemblances avec le jeu du même nom de Chris Fouts, les deux jeux étaient complètement indépendants l'un de l'autre.

Au début, BZFlag était simplement un Shoot them up sans autre spécificité. C'est après que Schoneman et ses amis (qui l'ont aidé à développer BZFlag depuis le début) ne commencent à s'ennuyer de ce concept, qu'ils inventèrent le mode de capture du drapeau. Celui-ci demandait plus de stratégie et d'habileté et donc redonna de l'intérêt au jeu.

C'est en 1993 que BZFlag a été rendu public pour la première fois. Cela fut un tournant dans l'histoire de ce jeu, car un tricheur édita le code source de son client afin de se donner des nouveaux pouvoirs que la version officielle ne permettait pas. Cela a inspiré Schoneman et ses amis. Ils ont rajouté des supers drapeaux qui modifiaient les performances du char. Les quatre premiers drapeaux étaient la Vélocité, la Rotation rapide, le Tir accéléré et l'Accélérateur d'Oscillations qui permet aux chars de traverser les objets. Il n'y avait alors qu'un seul drapeau de chaque type sur la carte, et tous les drapeaux portaient une marque distinctive pour qu'on puisse les reconnaître. Les mauvais et d'autres bons drapeaux ont ensuite été rajoutés, et les marques distinctives ont été supprimées. Cette idée des drapeaux reste aujourd'hui une part principale du jeu.

En 1997, la version 1.7d apporta une nouvelle fonctionnalité révolutionnaire : une liste des serveurs publics intégrée au jeu. Car jusque-là, les joueurs devaient soit utiliser leurs propres serveurs, soit connaître l'adresse d'autres serveurs, soit lire une liste publiée et maintenue par des tiers. Mais dorénavant cette nouvelle liste (hébergée sur le site officiel de BZFlag) permettait à n'importe qui de jouer sur les serveurs qui décidaient de devenir publics. Beaucoup disent que sans cette fonctionnalité BZFlag ne serait jamais devenu aussi populaire qu'aujourd'hui.

Finalement Schoneman a réécrit BZFlag en C++ pour la troisième compétition IndiZone des SGI, et gagna dans la catégorie des Moteurs 3D. Ensuite le projet fut donné à Tim Riker qui actuellement le maintient et le fait évoluer depuis la version 1.7e.

Les divisions Il existe beaucoup de divisions dans BZFlag. Les divisions sont lancées et gérées par un ou plusieurs administrateurs qui sont eux-mêmes des joueurs. Les matchs de division durent 30 minutes et ne sont que d'un seul type de partie - avec une exception. Par exemple, la première division fut la division Ducati. Dans cette division, les joueurs s'affrontaient sur des cartes générées aléatoirement, rouges contre verts, avec deux munitions, des ricochets mais pas de saut. Ceci avait pour but tester les véritables compétences des joueurs. Voici une autre division du même genre : la division Pillbox. Cette division diffère de la Ducati dans quelques règles : pas de ricochet et trois munitions au lieu de deux, de plus la carte est fixe. L'exception est la récente division Open où les équipes choisissent une carte pour chaque match et la durée de la partie.

Les cartes Un serveur BZFlag peut utiliser une carte créée au hasard par le système, ou une carte personnalisée créée par l'utilisateur en utilisant un langage proche du langage de script. Bien que l'écriture des cartes soit assez simple dans ce langage, la plupart des utilisateurs se servent de l'éditeur officiel, BZEdit, qui permet d'automatiser le processus. BZEdit est distribué avec le jeu et est disponible sur le site BZFlag de SourceForge.net.

Pour simplifier, il existe trois objets basiques : Pavé Pyramide Téléporteur

Les deux premiers sont configurables. Les téléporteurs sont rectangulaires et bordés de jaune. Tous les téléporteurs ne téléportent pas : suivant le bon vouloir du cartographe.

Avant la version 2.0, les cartes étaient basiques et n'incluaient que ces trois objets. La version 2.0 a introduit bon nombre de nouveaux éléments complexes par exemple l'eau. Un petit programme a été créé pour BZFlag afin de convertir les fichiers 3D Studio Max en cartes BZFlag.

La syntaxe pour la description de chaque élément commence par le nom de l'élément, puis suivent ses spécifications, et elle termine par le mot "end". L'exemple suivant place un cube de dimension unités (un char mesure environ une unité) aux coordonnées 50x 50y, il n'est pas tourné vers le Nord :

box #start (name the element) position -50 -50 0 #the position size 10 10 10 #the size of it, in units (x, y, z) rotation 0 #degrees of rotation end #all elements end with this keyword

Voici la liste des objets : Objet Description world Définit des variables d'environnement options Détermine les options de ligne de commande pour BZFS waterLevel Définit le niveau de l'eau dynamicColor Définit certaines modifications de couleurs textureMatrix Personnalise la texture du monde physics Personnalise define Crée une liste d'objets modifiables par groupe group Modifies un objet de groupe mesh Crée un objet 3D meshbox Crée un cube arc Crée un arc cone Crée un cône sphere Crée une sphère tetra Crée un tétraèdre box Crée un pavé pyramid Crée une pyramide link Ajoute un lien à un téléporteur base Crée une base (pour les parties de type capture du drapeau) weapon Crée une arme "naturelle" (le monde tire à un certain moment) zone Définie une "zone" dans laquelle une partition du monde à ses propres variables teleporter Crée un téléporteur

Les commentaires commencent par "#". Les multiples espaces sont ignorées.

Les drapeaux BZFlag possède deux types de drapeau : les drapeaux d'équipe et les super drapeaux. Un drapeau d'équipe est placé dans un monde uniquement pour les parties "capture du drapeau" ; il représente l'équipe dont il a la couleur. Les super drapeaux peuvent être placés dans un monde pour les parties "match à mort/ chacun pour soi", "capture du drapeau", ou "chasse au lapin" ; mais ils sont contrôlés par l'administrateur du serveur. La quantité, le type, et la position de super drapeaux peuvent être contrôlés par l'administrateur. Les super drapeaux se déclinent en deux catégories : les bons et les mauvais, ils affectent les chars positivement ou négativement suivant cette catégorie. Un mauvais drapeau peut baisser un attribut du char : son viseur, sa vitesse ; tandis qu'un bon drapeau effectue l'opposé et aide le char. Un bon super drapeau est généralement porté jusqu'à l'explosion du char, ou jusqu'à ce que le joueur choisisse de s'en séparer. Un mauvais super drapeau est généralement automatiquement jeté après un certain temps (souvent quelques secondes), ou grâce à l'utilisation d'un drapeau "remède", ou après un certain nombre de "victoires" (explosion de chars adverses), ou encore jusqu'à ce que le char explose lui-même. Ces règles sont gérées par l'administrateur. Tous les super drapeaux ont un code d'une ou deux lettres qui est affiché à côté du nom du joueur sur le tableau des scores. Ci-dessous la liste des super drapeaux avec leur code et description.

Les bons drapeaux Agility (A) - Agilité : accélération rapide, et rotation plus rapide, Mais pas autant qu'avec les drapeaux spécifiques à ces deux effets. Burrow (BU) - Enterré : le char est à moitié enterré, il se déplace lentement, il peut tirer et ne peut pas être touché par des attaques normales, mais il peut être écrasé. C'est une cible facile pour les joueurs disposant de SW ou GM Cloaking (CL) - Invisibilité: rend le char invisible pour les autres joueurs et invincible face au laser Genocide (G) - Génocide : l'explosion d'un char détruit toute son équipe Guided Missile (GM) - Missile guidé : les munitions tirées sont des missiles guidés qui poursuivent l'adversaire sur lequel ils sont verrouillés ; un missile guidé ne peut pas être verrouillé sur un char portant un drapeau Furtif. Il est possible de verrouiller/changer de cible après avoir tiré. Identify (ID) - Identification : identifie ce qu'est le plus proche drapeau Invisible Bullet (IB) - Obus invisible: les obus tirés sont invisibles sur les radars des autres chars Jumping (J) - Saut : le char peut sauter (si le serveur ne l'interdit pas explicitement) Laser (L) - Laser : tire un rayon laser (le laser ne peut pas tuer un char portant le drapeau Invisibilité). Le temps de rechargement est long, la portée et la vitesse infinie. Machine Gun (MG) - Mitrailleuse : tire les munitions avec un court temps de recharge, mais la portée est réduite Masquerade (MQ) - Imposture : le char est déguisé en char de la même équipe, mais ses tirs sont vus normalement par l'autre équipe. Narrow (N) - Plat : Le char est plat, et donc très dur à toucher de face, mais d'une taille normale dans l'autre sens.