[Babylon 5]

Nathan Mates' Videogames Pages

Tips for Battlezone 2 Multiplayer

This document was written by Nathan Mates, email nathan.j.mates@gmail.com. As this document may be updated over time, please do not copy out its contents to other websites. A link to http://www.matesfamily.org//bz2/nettips.html is acceptable. Note: this information is NOT provided as an official source; please refer to the game manual for that. Please do not call or email Activision Tech Support for help with anything contained below.

Last updated April 14, 2009

Table of contents

  1. Important links for patches, discussion boards, etc.
  2. Ports required to be open to play games
  3. The role of Gamespy, and pings
  4. Chat, pregame and ingame
  5. Pregame options
  6. Ingame multiplay-specific items
  7. Commandline options
  8. Miscellaneous

1. Important links for patches, discussion boards, etc.

Battlezone II first shipped in December, 1999 in North America. The European versions released some months later used the 1.1 patch. A 1.2 patch was completed by Pandemic Studios, and was translated by Activision into French and German, but was not given the title of being 'official' by them.

A newer patch, 1.3, has been in development since 2001 in the spare time of some of the original programmers, Nathan Mates & Ken Miller. You can check out this link for the latest release of the 1.3 public beta patches. The latest 1.3 patches have many useful features like DirectX 9 graphics, Windows Vista/7/8 compatibility, switch to RakNet for matchmaking, reduced warp/lag online, many crash fixes, and exploits removed, additional maps. 1.3 is the most commonly played

For Battlezone 2 discussion boards (aka forums), please use the main sets of boards, located at http://bzforum.matesfamily.org/ . Go there for all sorts of technical questions, etc.

2. Ports you must forward to play games

Here's the skinny -- you shouldn't need to forward ports to be a client. To host/create a game, have your router forward ports 17770-17772, TCP & UDP to your computer, and ensure there's no firewall blocking packets. If you need more handholding, read on...

2a) Joining other networked games of Battlezone II

If you want to join another game, then most of the time, you don't have to make any changes. Virtually all routers should allow BZ2 to be a client w/o any changes. The only possible problems usually come when you have a firewall that's too-suspicious and doesn't allow Battlezone II to communicate over the network. The 1.3 patch installer has an option to train the Windows firewall (part of XP Service pack 2 or later Microsoft OSs) to allow Battlezone II (bzone.exe) to send and receive packets. If you're using that Windows firewall, and told it to allow bzone.exe, you're set.

If you're using another firewall, e.g. something like ZoneAlarm, Norton, Kaspersky, or something else, you'll need to tell it to allow BZ2 packets. The best way to do that is to run BZ2 windowed. At the login screen, hit Alt-Enter (i.e. hold down the 'alt' key, press and release the 'enter' key, then finally release the 'alt' key). Then, if you go into the Multiplayer area, your software firewall will usually pop up a dialog asking you if you want to bzone.exe to have permission to talk to the network. You'll want to do allow bzone.exe. Once you do that, you should be good.

2b) Creating/hosting networked games of Battlezone II

It is first recommended that you successfully join a game before you try to host a game. This is so that you can ensure that you have no firewall(s) blocking sending and receiving packets.

If you have some form of broadband internet (e.g. Cable Modem, DSL, satellite, wireless, or the like), you usually (over 98% of the time) have a router that can mess with packets sent thru it. This router usually sits between your computer(s) and where your broadband internet arrives -- sometimes, it's part of where your broadband internet arrives. By default, routers, firewalls, and the like take a maximally secure policy, and drop unsolicited packets sent to your computer. This is great for security, but will prevent hosting a game until you train them to allow packets through to Battlezone II.

There are thousands of routers available, and they all have different instructions on how to train them to allow packets through. Fortunately, there's a website dedicated to collecting instructions. Please visit http://www.portforward.com/ for a fairly comprehensive list of them, and how to change things. [Note: that is a 3rd party site; no guarantees if it'll still be functional or useful when you read this.] On that website, (1) follow their instructions for setting up a static IP for your computer (i.e. not a static IP for your broadband connection, just one on the computer you're running BZ2 on), and (2) follow their instructions for your particular router for how to forward ports. If their database of programs does not list Battlezone 2, then follow their generic instructions for forwarding ports 17770, UDP, to be forwarded to the machine you are playing BZ2 on. You don't need to forward the ports for RakNet online. Just the ports mentioned above-- 17770, UDP.

3. The role of RakNet, and pings

RakNet is used by Battlezone 2 as a matchmaking service-- in short, it is used to give prospective clients a list of servers, and then RakNet gets out of the way. Contrary to some misconceptions I've seen floating around, BZ2 game packets do NOT get sent to/from RakNet servers.

A BZ2 server will keep an open connection to RakNet matchmaking servers so that it lets those servers know that the game is still running. When a BZ2 client wants to play a game, it asks the RakNet matchmaking servers for a list of BZ2 servers, then disconnects from RakNet. The BZ2 client then pings each of the BZ2 servers in turn, and retrieves the game info from each BZ2 server. Thus, the pings shown in the list of sessions are from that machine directly to each individual server.

This means that a machine's ping to the RakNet matchmaking servers will have little to no effect on the actual gameplay-- the session list may show up a little later, but that's no huge loss. If two machines in say Outer Mongolia want to play, each with a ping of say 1200 to the RakNet matchmaking server, but only a ping of 50 to each other directly, then the pregame and ingame ping should be close to 50, as that is the way packets are sent.

3.1 What is the difference between LAN Only and RakNet?

Those are two ways of registering/searching for sessions. When LAN Only is set for a server, it does not register that session with the RakNet matchmaking servers. Clients wishing to join a LAN Only server must be on the same LAN (i.e. where a broadcast packet can reach), and the prospective clients must also have LAN Only set.

A server set to RakNet will register itself with the RakNet master servers, as long as it can get reliable 2-way traffic to those servers. [See the section above about opening ports.] Prospective clients for such a server must use RakNet if they are not on the same LAN as that server. If they are on the same LAN, then either setting should allow them to find the server.

4. Chat, pregame and ingame

4.1 Pregame Chat

1.3 adds in an extra option from the session list screen to chat before joining a session. This will replace the top half of the screen (where server info would normally go) with a connection to an irc channel. BZ2 will automatically try to connect to an irc server and channel when you click this. To change the server and/or channel, then you can edit the file addon/config/GamePrefs.ini located under the folder BZ2 was installed to. It is possible to join this channel with other programs that provide irc services, like ircII, mIRC, etc. Please consult http://www.google.com for more information about irc in general or for help in finding an irc client that fits you if you don't want to use BZ2's irc.

If the login name you used in BZ2 is already in use on the irc server, then BZ2 will automatically rename you with some numbers at the end of your name to ensure uniqueness. You may want to pick a more unique name if you run into this often.

Within BZ2 irc, text can be entered, which is sent to everyone in the current channel by default. Entered text starting with a '/' (forward slash, no quotes) is treated as a command. Valid commands are:

  • /join #Channel
    Attempts to join the channel named, which must start with #. If the channel is not accepting new people or is passworded, the join will fail. If you try and join a channel which doesn't exist, it will be created and you'll be on it. BZ2 irc supports being in at most one channel at once.
  • /leave
    Leaves the current channel, if on one.
  • /msg Nickname Some comment
    Sends the comment to the specified nickname as a private message. Note that '@' is not part of a person's nickname, that's a flag that they're a channel operator with channel management abilities.
  • /me Some comment
    Sends a comment with the first word as your nickname. Most irc programs will display this differently, as an action.
  • /whoami
    Prints out your current irc nickname
  • /nick NewNick
    Attempts to change your nickname to the new one specified. If it is not unique, it will add digits to the end of it, as above.
  • /names
    Displays the names of people in the current channel.
  • /clear
    Clears the displayed box of irc text.

4.2 Ingame chat

Before the game launches, there is a chat window in the bottom left that allows you to communicate with other players in the game. There is no way to access the irc once a session has been joined.

Once the game launches, there are two options to chat. First is to hit escape, and use the large chat window there. However, it's faster and easier to simply hit the Enter key, type what you want to say, and hit Enter again.

While there's a lot of commands that you can execute with the GUI, at any of the 3 chatlines (shell, in-game Escape screen, in-game activated by 'Enter') have a number of commands that can be executed. Type "/help" (no "s) on a line by itself to see the mini-help, or use this list of commands.

For commands that have a required parameter, it is marked below in []s; an optional parameter is in {}s.

  • /help
    Shows mini-help for most chat commands
  • /list
    >Shows a list of players. It will look something like this:
    Players in game:
    C: (0) GSH [Local] [Server]
    The 'C:' up front identifies them as a team commander (if applicable). Next is a number in parentheses before the playername; it can be used as a shortcut to that player's name if you'd rather not type it out, e.g. "/info 0" or "/info GSH" will do the same thing. Finally, the local player (you) is identified, as well as the server by optional tags.
  • /info [Name/ID#]
    Shows info on a particular player. You must follow this command with either the player name, or the player number identifier. This command will have output like this:
    Info on (0) Name: GSH [Local] [Server]
      Ping: 0 Deaths: 0 Kills: 0
      Commander of TeamGroup 1
    The info presented above should be self-explanatory.
  • /pinglist
    Shows ping times to all players. The pingtime is the average round-trip time in milliseconds for packets to get to the server and back. Thus, a ping of 500 is 1/2 of a second.
  • /leave {Explanation}
    Leaves the game. If an explanation message is also on that command line, it will be sent to all first.
  • /msg [Name/ID#] [Text]
    Sends a private message to the specified player. This is always sent to just that player, no matter what the Chat with All|Team|One is set to. Private messages appear on the sender's chat window as follows:
    -> GSH: This is a private message sent to GSH

    and on the receiving end as:
    GSH ->: This is a private message sent from GSH

  • /kick [Name/ID#] {Explanation}
    A server-only command; it removes that player from the game immediately. An explanation may be given on the line, but it's not required.
  • /ban [Name/ID#] {Explanation}
    A server-only command; it removes that player from the game immediately, and prevents them from rejoining the session. An explanation may be given on the line, but it's not required. This command requires 1.3
  • /nick [NewName]
    Changes your in-game name to the new name specified. Spaces are not allowed in names, and the server may correct your name for legality and/or uniqueness.
  • /lockdown
    A server-only command; it prevents anyone from joining. Same functionality as the 'Joins: Deny' button in the shell and escape screen.
  • /openjoin
    A server-only command; it reverses the /lockdown and allows anyone to join. [Subject to passwords, player limits, etc]. Same functionality as the 'Joins: Deny' button in the shell and escape screen.
  • /chatall
    Sets further chat messages to be sent to all players in the game. Same functionality as the 'Chat with All' interface buttons.
  • /chatteam
    Sets further chat messages to be sent to all teammates. If teamplay is off, this setting acts like 'Chat with All'. Same functionality as the 'Chat with Team' interface buttons.
  • /chatone [Name/ID#]
    Sets further chat messages to be sent to the specified player, without having to use the /msg command above. Same functionality as the 'Chat with One' interface buttons.
  • /chattype
    Reports what the current chat type is-- chat with All, Team, or a single player.
  • /commandlist
    Shows all commands recognized by the chat system.
  • /vehiclelist
    Shows what each player has chosen for a vehicle. If DM vehicle randomizing is on (see below), this option will not show the current vehicle, but only what they chose in the shell.
  • /ip [Name/ID#]
    Shows the IP address for a given player other than the local player. Note: clients can only see the IP address of the server; they have no ability to see any other clients' info. Servers can see the IP address of anyone.
  • /iplist
    Shows the IP addresses of all players in game; once again clients can only see the IP address of the server; they have no ability to see any other clients' info. Servers can see the IP address of anyone.
  • /gsoff
    Server-only option; stops responding to all RakNet queries received. This will effectively prevent anyone from seeing (and therefore joining) the game. This option may be most useful for modem-servers who don't want the possibility of extra bandwidth being used by mid-game RakNet queries.
  • /gson
    Server-only option, and the default. Allows BZ2 to respond to all RakNet queries received. If /gsoff had previously been done, this'll allow the game to be visible once again.
  • /version
    Shows the game version and RakNet version being used. This command requires 1.2 patch or higher
  • /newserver [Name/ID#]
    Switches the hosting of the current session to the specified player, under the following conditions: (1) You must be the existing server to change the server, (2) You can not switch server to self (duh), and (3) All players must be playing the game (i.e. not in shell). This command requires 1.2 patch or higher
  • /takecmd
    Attempts to become commander when teamplay is on. Does nothing if teamplay is not on, or there is already a commander.
  • /givecmd
    Gives up the commander role when teamplay is on. Does nothing if teamplay is not on, or you're not currently the commander.

5. Pregame options

Before a game, the options vary depending on whether you're a host or a client-- hosts have access to almost all options, while clients typically can only pick their team and vehicle. The host may restrict those choices so that there's not much to pick from, but as a client you can view all the choices to see if you wish to play under the host's setup.

As a host, the first thing to do is to pick a map. Those are listed in the top-left of the screen, and the first part of the map's name should identify what type of map it is:

  • CTF
    Capture the flag (Deathmatch variant). Two teams (no more, no less) compete to pick up the flag from the enemy's spawn area, and return it to their flag. Points are awarded for capturing the enemy's flag and returning it to your base with your flag uncaptured.
  • DM
    Deathmatch. Combat without any basebuilding, etc. This may be a free-for-all, or two teams may be set up. In 1.3, it is possible to add in up to 32 AI 'bots' (computer-controlled players), see below for the 'Extra Options' items. Points are awarded for killing enemy craft; points are deducted for killing allied craft. In 1.3, it is also possible (via Extra Options) to turn on 'rabbit' mode where one player is 'it', and everyone is after that player. Whomever kills the rabbit gets points, and then becomes the new rabbit.
  • KOTH
    King-of-the-Hill, a Deathmatch variant. Like Deathmatch, but extra points are awarded for staying in the bonus region (usually the highest point on the map). To rack up points, get into that region, and keep everyone else away.
  • Loot
    Loot, a Deathmatch variant. Like Deathmatch, but extra points are awarded for picking up the moneybags scattered throughout the level-- a more dangerous position to be in.
  • MPI
    Multiplayer Instant Action -- one team of human players in a strategy game against a computer-controlled team. Both sides will be acquiring resources, building bases, and fighting it out. 1.3's Extra Options pages (see below) allow a large number of customizations to how the game is played, from additional starting vehicles on the human side to make it easier, to different starting recyclers which determine what can be built, to other difficulty tuning settings. MPI games are won when both the recycler and factory of a given side are destroyed.
  • Race
    Racing, a deathmatch variant. Go through a set of checkpoints to progress; if you die, you are respawned back at the most recent checkpoint you got through. First player to complete the specified number of laps wins.
  • ST
    Strategy -- human vs human games with acquiring resources, building bases, and fighting it out. Strategy games are won when both the recycler and factory of all sides but 1 are destroyed. Most Strategy maps require a team of 1-4 players versus another team, but 1.3 allows 'Free For All' maps with up to 6 commanders to play on a map, with optional alliances between some of the teams (see Extra Options below).

After picking a map, the usual next choice is to pick a vehicle to play in. The server has a checklist where they can pick which vehicles are allowed on that map if they do not like the defaults. Clients and servers can then pick their vehicles out of the allowed list, with some caveats. In Free For All (non-team) games, everyone can pick what they want. In Team games, the commander, who has a '(C)' next to their name in the playerlist, can pick whatever they want, but all other players on that team must pick something of the same 'race' (first character of the ship ODF). If the commander switches races, then all teammates will be forced to switch races also.

In teamplay games, players can also join either of the two teams by using the 'Join Team 1' and 'Join Team 2' buttons above the playerlist in the bottom right. Teams should have at most 4 players on them, but a 5th is allowed to give people space to switch around. If there are 5 players on a team, then it is not possible to also trade commanding/thug roles.

5.1 Server options for all maps

Player Limit: Sets how many players can join a session. This should be from 1 (nobody else can join) to 8. In MPI/Strategy games, the number of possible players restricts the number of available F# keys for unit groups. Setting the number of players higher requires more space to be reserved for potential allies, even if they're not currently playing.

Teamplay: On|Off. This setting is visible only when the map notes that it supports this, otherwise it is fixed. If teamplay is off, Free-For-All is on.

Joins: On|Off, default 'on'. When this is on, then people are allowed to join the current session. If off, people cannot join.

Change Team Names button, which is only visible in teamplay games. Allows you to enter team names for the sides if you don't like the defaults.

Sync Join: On|Off. When on, then when the game launches for the first time, it will wait for all clients to load the map, and everyone starts playing at the same time. If it is off, or the initial join has been passed, then when a client joins, the game will allow them to join when they've loaded the map. For Strategy, sync join is on by default as it is the fairest setting-- everyone starts playing at the same time. If a client (taking a nap or something) doesn't hit the 'Enter Game' button within 120 seconds, they'll be kicked out. After the Sync Join is completed, by default, other players may join, as if Sync Join was off. Use the 'Joins: On|Off' option to prevent further joins after a sync join.

Max Ping. This allows the server to set the max ping (response time) for clients. Clients exceeding this value will be automatically kicked from the session.

Pause Joins: On|Off. When on, this makes BZ2 wait even longer when a client joins, in the hopes that this wait will allow them more time to resynchronize with the server. It defaults to off, however.

Multiworld Frequency. This is a tuning value to adjust how fast BZ2 resynchronizes the visual appearance of units onscreen to the most accurate predicted positions. Smaller values tend to increase accuracy (reducing "popping"), but also increase the computational load on your CPU, which can cause lag if your computer is slow. Deathmatch and deathmatch variants default this value to 4, MPI/Strategy default to 10, as there are usually far more items in MPI/Strat maps. In 1.2, this setting was on a per-machine basis, but in 1.3, everyone must use the same value.

5.2 Pregame Extra Options

With 1.3, there is another button, 'Extra Options' (located in the center-right of the screen) for all of the stock maps. Not all MODs may support this, so this may not be accessible for some fan-made maps. It is possible for each map to have its own Extra Options pages, but 1.3 breaks things down to the various map types, as above. Clients should be able to look at the Extra Options settings, but not change items.

Hopefully, most of the options should be self-explanatory. Some deathmatch (and variants) settings include a kill/time limit; use 0 for unlimited. There is also the option of randomizing vehicles. The shell option looks like this: 'Vehicle respawn: [Fixed|Race|Random]'. If the selection is 'Fixed', a new craft for a player will always be identical to their vehicle selection within the shell.If the selection is set to 'Race', then a random allowed vehicle of the same race as that player's shell selection is chosen. If the selection is set to 'Random', a random vehicle of any race allowed by the server is chosen.

Deathmatch Extra Options also allow setting the number of computer-controlled bots in multiplayer, and their skill level. It also allows you to turn on 1-shot-1-kill mode (if anyone gets shot by anything, they explode), or to tune all weapons up or down in damage. Rabbit mode is where one player is 'it', and everyone is after that player. Whomever kills the rabbit gets points, and then becomes the new rabbit.

Strategy/MPI Extra Options allow you to pick a starting recycler, which is a mini-MOD that determines what vehicles/weapons/etc are available and how they behave. A number of starting recyclers are provided by default; see Extras\Help\Manual\Recycler_Descriptions.htm installed to your 1.3 BZ2 directory for info as to what the variants do.

Strategy Extra Options vary depending on the teamplay setting. Free For All maps allow alliances between various teams to be set up-- the first 4 players can have any pair of teams allied. There is a 'crunch teams' button to ensure there are no gaps between players; this is useful if teamplay was on, which tends to introduce gaps.

MPI has the most extra options out of the box-- in addition to all of the above, it allows the human player to start with up to nearly two dozen free vehicles at the start of the game, should the game be too difficult. It also allows you to tweak the AI skill levels of human and computer units, change scrap cheats, etc. There is also the ability to change between AIP sets-- scheduling of what the computer team builds, in what order, how it attacks, etc. Only one AIP set is shipped in 1.3, but modders may extend this in the future.

6. Ingame multiplay-specific items

In-game score info

Control+Enter while playing BZ2 Multiplayer (though not with the Escape screen up) toggles the in-game score info on/off.

Changing groups, sending units

In strategy, you can combine like units into one group. If you have a tank on the F1 group, and another tank on F3, you can unify them into the F1 group by pressing F3, releasing that key, then Control-F1. To split a group, say the F1 group, hit Control-F1 to open it up and you can access the individual units within.

What's this mean for networking? In team strategy, you can send units back and forth between the commander and the wingmen the same way. Notice how there's icons for your allies, such as F10..F8? Select a group of units, then Control-F10 will send it to that ally. Not all units may be transferred-- recycler (vehicles) and constructors can not. But, you can give scavs to the wingmen in the early game so they can be escorted out to the scrap pools.

Where's my tank!

When you are ejected from a destroyed tank in BZ2 Deathmatch, you may be wondering where your next ride will be. As long as you're in the air, a new ship will not be created for you. This would be a good time to find a safe spot to land. After you land, or are killed as a pilot, a new craft will be spawned in somewhere near you. It may be behind you, so use your radar to find it. If it appears on top of water, and you feel you can't get to it, remember that you have a jetpack that can be set off underwater-- and once you enter the tank, it'll refill the jetpack.

Objectives window obscures chat

If you hit 'o' during multiplayer, an empty transparent gray box will appear on the right side of the screen. [CTF may put an actual objective in it.] This objectives window will hide the chat window which appears in the same place. Hit 'o' again to turn it off. 1.3 adds in a message reminding you to that effect.

Chat messages timeout

By default, the in-game chat/messages window (not the escape screen) erases messages after 5 seconds. However, this is settable from the game console. While playing, hit Control-` (that's 2-keys, control and the key with ` and ~ marked on it) to pull up the console. [Chat messages are printed there as well, so some may just want to see that for a few seconds.] At the console, type 'network.session.messagesappearforseconds 99' to set it to 99 seconds (what I prefer). The number can be anywhere from 1 to 9999 seconds; outside that range and it'll be reset to the default of 5 seconds. Hit Control-` to hide the console again.

The console does have tab-completion (if you don't know what that is, you should use unix more) of commands. So, you can hit 'net'[tab]'.ses'[tab]'.mes'[tab] to type that line a little faster.

6.1 Resyncs

If you get a 'Checking Gamestate' message (especially as the server), that means that someone (or multiple someones) are out of sync from the server. This can be caused by either a bug, or someone trying to use a cheat program (commonly called a 'trainer'). The cheat codes for BZ2 Singleplayer won't work in MP, and they'd only desynchronize the game for everyone. So, if you are thinking of cheating, go away.

6.2 Lag vs connection speed

As measured in BZ2, lag is the difference between where your machine is, and what it has received from the slowest machine in the game. It is not necessarily related to network connection speed-- a slow computer playing on a LAN can lag even though the LAN is physically capable of moving the data quickly enough. Much data is computed locally on every machine, and things must be drawn as well to keep up; you may not be able to speed up the gamestate calculations, but by lowering the graphic options, you may reduce lag. If the AI is bogged down handling commands from players, that will introduce "Lag", even on a LAN, as your CPU struggles to update things to where they should be.

Lag is also affected by packet loss. A fast (Cable, DSL, T1, etc) line that loses every other packet is a worse candidate for playing the game on than a slower connection that actually delivers data reliably. While playing the game, hit escape to view the no-pause screen, and look in the ping column. Version 1.2 shows what percentage of move packets have had to be retransmitted, as a percentage. Thus, if that box says "152 (-3.4%)", the ping is 152ms, and 3.4% of recent (over about 30-40 seconds) movepackets have had to be retransmitted. If that loss percentage goes over about 15%, the connection is lousy and you should consider joining something with a more reliable connection.

[/pinglist (see above) at the chatline also shows packet loss percentages; that % is always 0 for players in the shell as there are no movepackets transmitted to/from them to lose.]

7. Commandline Options

BZ2 supports several commandline options that Gamespy uses. To enter them, you'll either have to create a shortcut to bzone.exe, and edit that shortcut's properties, or add in the options via Start -> Run under Windows pointed at bzone.exe.

For more information on more commandline items, see the Readme13.rtf file (sometimes shown as 'readme13' if you have the Windows default of hiding known file extensions) installed with BZ2 1.3.

  • -name "Player Name"
    Sets the initial Multiplayer player name to the value specified. If there is a space or other character in the name, it must be enclosed in "s, as above. However, BZ2 will still ensure the name conforms to limits.
  • -host [PortNum]
    Starts up BZ2 as a host (i.e. server) of a game, and places you in the Multiplayer Game Options shell screen. Valid port numbers to host on are 1024 through 65534; if the portnum specified is outside that range, the default of 17770 is used. BZ2 always uses 2 ports that are adjacently numbered; the number specified is the first.
  • -connect [aaa.bbb.ccc.ddd:PortNum]
    Starts up BZ2 as a client to the game specified by IP address and port number; the port number should be the second BZ2 port number, usually 17770. For example, "+connect" tries to join the game at
  • -password "TopSecretPassword"
    For either a client or a server (see above), this commandline parameter sets the password used when creating or joining that game.

/poweruser commandline switch

This option (not tweakable in the game; it must be added to the shortcut) was in previous versions, but really is most useful in version 1.2. This was my commandline switch to make the game work the way I want it to-- especially the first two options which put more text onscreen. Most of the things it does are individually editable in 1.3 with the new file addon\config\Gameprefs.ini . GamePrefs is probably a bit better to use that instead.

For a short list of what /poweruser does:

  • Chat messages timeout is 99 seconds, not 5. Still editable with console command as above, or in 1.3's GamePrefs.ini
  • In-game score screen is on by default. Use Control-Enter to turn it on/off, as usual.
  • Server list shows much more information, such as:
    • All games reported back by RakNet are shown; a "(V)" is in the password column if the RakNet version differs from your local one. Also, the 'Game Stats' box up top shows the actual GS version for a session.
    • Player list shows name, and 4 numbers; they are (in order) Deaths, Kills, Team number, Ping (host always has ping of -1)
  • Player disconnect/leave reasons are printed to the messages boxes, such as the Winsock reason, or movelag. (Movelag is when moves are not received 23-28 seconds after they're due). Note: this is most useful for a server to do; clients are not told disconnect/leave reasons unless it's their own. Note: messages like this are also sent to the console, so if you're at the game over screen, you can hit control-~ to turn on the console and see the reasons printed, then control-~ to turn it off again.
  • With /poweruser on, you can host a game with 14 players, not 8. This is most useful for some sort of lobby-style game which isn't launched. 14 players in an actual game would probably flood out modem users, but you can try it over a LAN.
  • No warnings printed on changing the playerlimit or unit limit above normal.
  • Probably some other tweaks as well.

8. Miscellaneous

Bandwidth considerations

Since BZ2 is a client-server networking model, this optimizes each client's bandwidth, while pushes it towards the server. For a 4-player game with server 'S' and clients 'A', 'B', and 'C', the server must receive A's moves, and send them out to B and C. The server must send moves SBC to client A, SAC to client B, and SAB to client C. Thus, the server must send out N-1 moves per frame, where N is the number of players in the game. On the other hand, the clients only need to send their own moves towards the server.

If at all possible, host a BZ2 game on the fastest network connections possible.

Version 1.3 multiplayer enhancements

1.3 adds in support for many more items over 1.2. Extra Options, alliances in Free-For-All strat maps, DM bots, even more tuning values for MPI, security, and race-independence in MPI/Strat DLLs. For the full list of what 1.3 supports, read the 'Changelog.txt' file installed with 1.3.

For the full set of what the ivars/svars do in MP, please read the 'vars.txt' file included in the 1.2/1.3 DLL source code release.

Version 1.2+ Deathmatch Updates

BZ2 1.2's Deathmatch01.dll supports a new game type, 'Race'. One map, racepluto.bzn is included as an example of this. There are 16 checkpoints on a map you must reach to complete a lap, and the number of laps needed to win can be set in the shell. Besides the normal death/kills points system, one point is awarded for the first person to reach a checkpoint on a lap, and another point for completing a lap first. If killed as a pilot, you respawn back at the last checkpoint you completed.

Tip: not all craft have many rear-firing weapons, so being the leader may mean you're getting shot up a lot. Also, on racepluto, if you take the longer routes around the outside, there's health powerups... it's all tradeoffs.

How to make a race map: you must place 16 spawnpoints (odf name 'pspwn_1' on the map, and give them team numbers from 0 thru 15. Everyone starts at the spawnpoint w/ team 0, proceeds to 1, and so on. For the .inf file for the map, you can either clone the racepluto.inf file (under addon); ivar7 is set to 5 for a normal race, and set to 6 for vehicle-respawn race (don't eject as a pilot, you simply respawn in a new vehicle when you die).

Version 1.2+ Multiplayer Strategy Updates

No real gameplay enhancements were made, though some features have been added for thugs and mapmakers.

If the config variable 'network.seesion.ivar14' is set to 1 (the default), human players will get +1 point for killing an enemy AI unit. [And -1 for killing a friendly AI unit] Also, the config variable 'network.seesion.ivar15', when 1, will give +1 kill for killing an enemy AI unit. These settings can be overridden by the map's .inf file.

For mapmakers, in BZ2 1.2 strategy, you can force a team (by number) to start in a specified place (no randomizing) by placing a spawnpoint (odf 'pspwn_1') down on the map with the specified team #. In teamplay games, teamgroup 1 is on team #1, and teamgroup 2 is on on team #6.

Also, mapmakers can place some (optional) lines in the .inf to lock races:

LockTeam1Race = "i"
LockTeam2Race = "f"

The first character of the lock is used to restrict their vehicle selection to vehicle odfs starting with that character. If there is no lock line specified, the commander of that team can pick any allowable vehicle.

Also, for those making really big expansion packs, the strategy dll should allow about 26 possible races-- it uses the first character of the team commander's vehicle odf, and tacks on 'vrecy_m' for the recycler ODF. So, if the commander's odf is "kvscout", it'll spawn in a "kvrecy_m" for them to command. [This feature has been in BZ2 since 1.0, but not documented until now.]

Version 1.2+ Multiplayer Instant Action (MPI) Mode

BZ2 1.2 adds in a new multiplayer mode, with 1-4 humans on one team versus a computer-controlled team. These maps have 'MPI' by their name in the maps list, by default. When playing these maps, the playerlimit should remain at 4 (maybe 5, if you never want to switch commanders). The AI does get slightly tougher (more free scrap) as more humans play.

Like a normal strategy game, the commander of the human teamgroup (always #1, the left group) picks their side's race. The teamgroup 2 box is hidden (only CPU), but a button is in its place to select the CPU's race: ISDF or Scion. Thus, you can set up any the 4 combos of ISDF and Scion games.

For mapmakers, it should be fairly easy to convert your Instant Action maps to MPI ones. First, place just one spawnpoint (odf 'pspwn_1') on the map, where you want the humans to start. Secondly, change the DLL referenced to 'mpinstant.dll'. Finally, set up the .inf file like any other MP map; copy an existing one for reference if you want.

MPI mapmakers have some new things they can use to tweak things. Beyond the normal pathpoints used by an IA map, by using a naming convention, you can place down race-specific items based on the CPU or human race. These pathpoints are of the form 'mpic_fvscav_ivscav' (spawns a Scavenger on the CPU team, appropriate to the CPU race) and 'mpih_fvtank_ivtank' (spawns a tank on the human team, appropriate to human race). The 'mpic' and 'mpih' parts are case sensitive, and you can place a number after those to make them unique, such as 'mpic1_fvscav_ivscav' and 'mpic2_fvscav_ivscav'.

1.3 adds in some new syntax to the mpic/mpih commands. With mpic/mpih, it can take just one odf listed if desired. For the ODF(s) listed on that line, the first character is checked against the first character of the CPU/human's recycler odf, and builds it only if they agree. For example:

mpic1_fvscav_ivscav   - builds a scav if the CPU is ISDF or human
mpic2_ivscav_fvscav   - builds a scav if the CPU is ISDF or human (order doesn't matter!)
mpic3_ivscav          - builds an ISDF scav only if the CPU team is ISDF

In the above items, the number means nothing; it was created to make the pathpoints unique (as they must be). 1.3 also adds in two new forms, 'mpiC' and 'mpiH' which allows a the built vehicle to be built in whatever race the CPU or human is. For example:

mpiC1_Xvscav          - builds a '_vscav' in the CPU's race
mpiH2_Xvturr          - builds a '_vturr' in the human's race

In the above items, the 'X' is used as a filler character; it could be any alphabetical character. It'll be read in, then replaced by the true race of the CPU/human team.

Also, MPI mapmakers can completely override the default AIPs to get a different set of AI behaviors. I quote from the vars.txt file in the DLL source, where this is commented on:

// Custom AIP name base. The MPInstant.dll will look for several files
// based on this base, with 3 characters tacked on. Those 3 are as
// follows: (1) CPU race (f=Scion, i=isdf), (2) Human race, (3) AIP
// Type (0=Start, 1-3 = begin game types, 'a' == anti-assault, 's' ==
// siege, 'l' = lategame).
// If an AIP file is not found, results may be unpredictable. [The AI
// will probably go to sleep, but haven't tested that.]
// For example, if svar3 == "foo", at the start of the game, the AIP
// used will be one of these 4 files:
// fooii0.aip  -- CPU ISDF, Human ISDF
// fooif0.aip  -- CPU ISDF, Human Scion
// foofi0.aip  -- CPU Scion, Human ISDF
// fooff0.aip  -- CPU Scion, Human Scion
// svar3 = "MyAIPs"  // Line commented out like this means default AIPs

Version 1.2+ Changing the host

As noted in the chatline commands above, v1.2 adds in the ability to change the server in the game, though this does not work with dedicated servers. This can happen under the following conditions: (1) You must be the existing server to change the server, (2) You can not switch server to self (duh), and (3) All players must be playing the game (i.e. not in shell).

To switch servers, you can do one of the following things: (1) use the chatline command, as above. (2) Hit escape while playing, select a new player, and then click the "Switch Server" button, (3) Hit Alt-X to exit BZ2 completely, and it'll pop up a dialog box saying "Exit game or migrate server first" if it's possible to migrate the server. [And if migration is not judged possible, it'll only have Ok/Cancel buttons.] If you click on the "migrate" button, it'll pick a new server based on the best ping time, and do the migration before exiting.

You can download the latest Battlezone II 1.3 patch from my website as well.