BZFlag Ideas for Game Changes

This page is a collection of ideas on how to improve BZFlag. They are intended for the most part to be small incremental changes, not significant modifications to the architecture or style of play. The ideas are based on my experiences designing and testing maps, and playing on a variety of map styles. Some I've posted before on the my.bzflag.org/bb/ bulletin board (under 'enhancements'), some I've discussed in personal emails with people, and some I've never mentioned before - I wanted this page to be a central place where I could put it all down.

At least one I'd like to code myself; while I've taken some initial steps, I haven't had the time to do it yet. I do appreciate that each item in these lists may be viewed as a request of the active developers, and I tried not to put in frivolous options (though some are definitely speculative). They may have some value because they've arisen from a few years experience with the game.

The ideas are divided into several areas: Map Making, Play, and Administration. Some are probably hard, some might be bad ideas; others might be trivial and would help a lot. Each subsection ends with the more difficult or unlikely ideas - don't let this color your thinking on the next section.

I may well add to this in the future, so check back - new items will appear at the bottom(s) of the section, likely in a different color for fast identification.

Map Making

  1. Bug fix: allow teleporters on meshblocks. Right now if you do this, there is a problem at the base of the teleporter - if you try to arrive at the teleporter you get stuck. It means that to use the new mesh features in version 2, you have to place teleporters on version 1 blocks, and embed these into meshes. (This may be the same point as #4 below.)

  2. Extend Observer mode - Now that BZEdit is not longer adequate, a few additions to Observer mode to help map makers would go a long way. One would be a set of commands to show various pieces of map information that the client presumably already has; the client could:

    • highlight and display the parameters of nearest object (x, y, z, theta, width, height, etc.), and the name of any physics driver.

    This could be a separate 'team' just as Observer is, say called Mapmaker, but the additional commands are few enough that it seems more reasonable to extend the Observer mode. It also might be implemented as just additional constantly updated text on the screen. Either way, it would really improve the process of mapmaking and incremental editing.

  3. Speed up the map development cycle. Right now the only way to incrementally improve a map is to stop the client you're using to view the map, the (usually local) server that's serving the map, then edit the map file, restart the server, and then restart the client. I end up doing this literally hundreds of times in the course of making a map. It'd be great to be in the client and just issue a command such as "/reload", which would cause the server to re-read the map file, and the client to refresh its local data. It'd be useful even if both had to shut down and restart as now, but that one could use just one command to do it.

  4. Allow small hill (incline) climbing, with no tank tilt- otherwise hills are just decoration, and annoying to play on. Gradual mesh ramps would be very nice to use in the game, as (if nothing else) one could play without jumping, which is distinctly non-tank-like behavior. I've sensed that there is a strong consensus that tanks shouldn't tilt, but this isn't necessary - just the ability to navigate over slightly uneven surfaces would allow a small-grade mesh to be used as a ramp. (People don't seem to mind non-tilted tanks coming down hills, so they should be fine with them going up hills.) This might also fix some of the current problems where moving from a version 2 surface to or from a version 1 surface at the same height fails, causing the tank to stop.

  5. Bot area defenders: this might be doable now. The idea is to have zones that always have a set number of bots with particular flags, so that one may set up regions that are barriers for all teams. For example, I might have 4 major mountain passes between team bases on a CTF map, and in each of those passes (but only there, not moving elsewhere in the map) I specify some number of bots with particular flags. These regions then take more work to cross for both teams.

  6. Tank objects - something that the game can already do is display tanks, so I'd like to be able to put 'dead' tank objects into a map. Real tanks with ST would then be able to hide among them, or they might be used to indicate intended front lines or critical positions. Mapmakers could co-locate smoke, fire, or other indicators of damage. On maps with no radar, they'd be great decoys.

  7. Statistics display. If I've run a map for a while, it'd be nice to use logged information to show the density of kills over the map, and the location of killers. This would help identify areas that might need more obstacles or cover, or camping sites. Ideally a log would be written with something like

    Kill Of (X:60, Y:120, Z:0, FLAG:BU) By (X:23, Y:130, Z:6, FLAG:GM)

    This sort of log could be used to figure out ways to improve the map. There are several ways one might parse such a log, or even write code to visualize the data on the map itself.

  8. Allow dynamic outside data into maps. Imagery or text from outside the game to appear on surfaces. This could be as simple as having textures which have dynamic value, so that they may show pictures or text from elsewhere in the web (at a very low refresh rate), or even from other locations inside the game. Some uses:
    • The mountains and/or other imagery outside of the map play region could be real webcam imagery from somewhere else in the world;
    • News, BZFlag stats or server loads, or critical messages could appear as scrolling text on the sides of surfaces;
    • One could implement something like 'security cameras' in the game, showing other parts of the map.

  9. Capability regions - people are doing this now, say by turning off radar on a map so that it's as if everyone has ST (but can still pick up other flags), using fog so that it's almost as if everyone has a kind of cloaking, or phydrvs so that people zip along as if they have High Velocity.

    Why not make it more general, and allow for zones to grant capabilities to players? Then everyone in a certain part of the map might have ST (not show up on radar), or Jamming (due to local interference), etc. Let the mapmakers work out what flags/capabilities are worthwhile to grant by region - I think there are probably some undiscovered neat opportunities for different play styles. I wouldn't let these zones overlap, though again maybe leave that to the mapmakers - if it makes play too nuts people won't use it. I don't know how this would work out, and it might be a bad idea, but clearly mapmakers are trying to get this effect using current mechanisms, and such empirical support for the idea suggests that it might be worth cleaning up and making more general.

  10. Context-sensitive objects - it would be great if a sound file would play (maybe with instructions) when a tank was in a certain spot, or a world weapon would be triggered somewhere by a tank's presence in a region. This would just make the map seem more interactive, as it would respond to players' actions by itself. Taking this to an extreme, perhaps there'd be an alias to a command that would be triggered by a tank's position - this could do a flag reset, for instance, or invoke arbitrary admin commands.

Play

  1. Bug fix: Laser on "keep vertical velocity" maps. On some maps a parameter may be set that causes shots to keep the vertical velocity of the tank that fired them; in general this is neat. But there is a significant bug - Laser shots angle up and down depending on tank motion, which they shouldn't.

    Think of it this way: if the laser velocity were infinite, the entire laser shot would stay at one level - the tank would fire, and the laser would immediately be everywhere at that horizontal level. If the laser velocity is the speed of light, it's not infinite, but in practical terms it is: the vertical distance the tank travels during the propagation of the laser is very close to zero. (I think the game docs somewhere declare the laser to be instantaneous anyway). So there is no reason at all for the laser light to angle up or down - that it does is a bug, either a conceptual one or an implementation one. (If it is intended to stay this way, the turret of the firing tank should take on the angle that the laser beam does - a kind of 'bobble-head' motion would be consistent with the laser shot behavior.)

  2. "Rabbit team" addition - sometimes I like to play on Rabbit Hunt maps, but it can get a little boring. It'd be significantly more interesting for everyone I think if one could join the "Rabbit's team" - and help defend the rabbit against the hunters.

  3. Tank logos - it'd be fun if there were an optionally-customizable fixed size image on the sides of one's turret, so that identifying marks/icons could be placed there. Especially in fast team play it'd be good to be able to recognize people quickly. This might have other uses: perhaps an admin could cause a mark to appear on a suspected cheater's tank, one that only other admins could see, so that watching his behavior is easier all around. (Maybe an 'admin only' form of this could cause the icon to be tied to ip address, and hold across all servers. Then we could literally tar and feather cheaters.)

  4. Richer acoustic environment. This is something that I still hope to work on myself - I'd like to make the acoustics better, so that for example tanks produce engine noise who's frequency and intensity are velocity or maneuver-dependent (I've gone so far as to grab the sounds used in the original Battlezone, though they might not be the best ones to use). Also, one should hear the passage of shots nearby. It would also improve the immersive nature of the game if sounds could be located within the map - factory sounds, for instance, to be placed inside a structure that looks like a factory. I expect that the sound specification would be similar to that for world weapons, so that sounds could be steady-state (e.g. fan noise), or occur at fixed or random intervals (screams, the passage of subway cars, etc.)

  5. "Wingman" bot - Bots are often just annoying, but it would improve play if one could create a bot to act as a sort of "wingman", paralleling your moves and offering some protection or other tactical opportunities. If you had ST, the wingman bot could act as a kind of decoy, allowing you to pounce on the unsuspecting hunter.

  6. More "Tank-like" play for some bots. Watching some of the games now, "tank" seems like a poor descriptor of the actors. It'd kind of be nice to optionally play with more of a tank focus. For instance, two teams might have 3 players each, but could start by distributing slow-moving bots on various fronts, bots which would engage in something like fairly normal tank fighting on a well-defined front. The players could then try to assist these in defense or offense, and try to achieve a breakthrough. There have to be other options, but the goal would be to be more like an actual military operation than a game of tag. I like tag, but all the time it can get dull.

  7. Integrated Babelfish. Sometimes I think that what I really enjoy about the game is the chatting with other players. If we all declared a language, messages could be run through automated translators (they should show up in original form with the translation in addition, not replacing the original message). This might keep a group from around the world interested enough to hang on playing; sometimes it seems that people exit if their particular community isn't present, or starts to leave the game.

Administration

  1. Pseudonyms - I'd like to be able to play on my servers without people knowing I'm there. I don't want to subvert the registration/password system, but I want to use an alias. Maybe I could specify my call sign (normally "The Purple Panzer") as "The Purple Panzer/newbie", with my normal password - everything would work as normal, but my displayed call sign in the game would be "newbie". I could keep an eye on other admins, and in general watch play and people's behavior without them being aware that the server owner is present. If this is easy, as it might be, it might be useful in keeping servers running as intended.

  2. Observer split screen/"closer look" - when one player complains about another, I'd like to be able to watch both at the same time for a little while. Maybe with a split screen, maybe with an easily-created second client window that I could pop up.