Tips for Battlezone 2 Multiplayer

  This document was written by Nathan Mates, email [email protected]. As
  this document may be updated over time, please do not copy out its
  contents to other websites. A link to
  http://www.visi.com/~nathan/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 Tech Support for
  help with anything contained below.

  For the official BZ2 discussion boards, please see
  http://www.pandemicstudios.com/bzii/, or Activision's website at
  http://www.activision.com/.

  Version 1.11 . Last Updated: January 8, 2000. [What's new? Scroll down
  to the bottom.]
    _________________________________________________________________

 Ports, Firewalls, IPMasq/NAT/Internet Connection Sharing

  Battlezone2's network traffic runs under TCP/IP only. By default, it
  uses UDP ports 17770 and 17771. If you have a firewall in place
  between your computer and the network, you will have to allow traffic
  to freely travel in both directions along those ports. Consult the
  documentation for the firewall to allow that to happen.

  If you are using some sort of address-translation setup
  (IPMasq/NAT/Internet Connection Sharing), and are having troubles
  connecting to games, first check firewall settings. Additionally, you
  may want to manually forward traffic on the BZ2 ports to the computers
  in question. Once again, consult the documentation for your setup.
    _________________________________________________________________

 In-game chat

  While you can chat in Battlezone 2 from the non-pausing escape-screen,
  it's faster and easier to simply hit the Enter key, type what you want
  to say, and hit Enter again.
    _________________________________________________________________

 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.
    _________________________________________________________________

 Chat commands

  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 optinal 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
         asap. An explanation may be given on the line, but it's not
         necessary.

  * /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 Gamespy 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 Gamespy queries.

  * /gson
         Server-only option, and the default. Allows BZ2 to respond to
         all Gamespy queries received. If /gsoff had previously been
         done, this'll allow the game to be visible once again.
    _________________________________________________________________

 Sync Join

  Noted as 'Sync (Off) (On)' in the server's shell interface, this
  option allows the server to have all players start playing at the same
  time. In deathmatch, such an option is not normally chosen, but for
  strategy games, it may be desirable to do this. (Note: selecting
  another map will reset this option (and others) to what the map's
  defaults are.)

  If Sync Join is on, when the server launches, it'll wait for all other
  clients to launch as well. When all clients have reported in, the
  server will send the gamestate to them, and gameplay will begin.
  However, 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: Allow/Forbid' option to
  prevent further joins after a sync join.
    _________________________________________________________________

 Vehicle Randomizer

  In Deathmatch (and similar, such as CTF and Loot) games, the server
  has the option of randomizing vehicles. The shell option looks like
  this: 'Vehicle [Fixed|Race|Random]'. (Note: selecting another map will
  reset this option (and others) to what the map's defaults are.) 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 vehicle of the same
  race as that player's shell selection is chosen. (Of course, that
  randomizing is within the list of allowed vehicles by the server.) If
  the selection is set to 'Random', a random vehicle of any race allowed
  by the server is chosen.
    _________________________________________________________________

 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.
    _________________________________________________________________

 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.
    _________________________________________________________________

 Non-pausing servers

  By default, a BZ2 game will pause when a new client joins. This is
  designed to give modem servers a chance to have more bandwidth
  available to send the gamestate to new clients without being
  overloaded. However, if the game is hosted from a faster (i.e. ISDN,
  Cable Modem, DSL, T1, T3, OC-48) network connection, you may want to
  turn this off.

  Note: this information is provided to you without any guarantees of
  support or stability. It is an officially unsupported option, and
  should be used at your own risk. [In other words: don't gripe if it
  doesn't work for you. You're on your own.] To set this up, as a
  server, when you're in the MP shell (i.e. choosing a map/vehicle), go
  to the console (see above), and type the following
  'network.session.ivar10 1'. [The default setting is 0, i.e. pausing]
  That preference will be used until you quit and start another game.
    _________________________________________________________________

 Playing on a LAN Only

  BZ2 supports non-gamespy games among machines connected on a single
  subnet. To do this, all machines must have the same first 3 sections
  of their IP address (e.g. 192.168.1.*), and a valid subnet mask
  (usually 255.255.255.0 for such a class-C network). Next, from the
  game servers list window, there's a button in the top-right of that
  window marked 'Gamespy'. Press that button and it'll change to 'LAN
  Only'. [See command line options below for how to set this by default]
  This button must be set the same on all machines you want to play a
  game with.

  With a server set to LAN Only, it will not broadcast game information
  to Gamespy, and thus cannot be seen by a machine outside of your
  subnet. That is why a client must also be set to the LAN Only.
    _________________________________________________________________

 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.

  * +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.

  * /lanonly
         Sets the initial setting of the Gamespy/LAN Only button to be
         LAN Only; omitting this option uses the default of Gamespy. You
         may still change this setting in-game, though.

  * +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 [i.p.add.ress: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 17771. For example, "+connect
         192.168.1.4:17771" tries to join the game at 192.168.1.4.

  * +password "TopSecretPassword"
         For either a client or a server (see above), this commandline
         parameter sets the password used when creating or joining that
         game.
    _________________________________________________________________

 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.
    _________________________________________________________________

 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.
    _________________________________________________________________

 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.
    _________________________________________________________________

 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 jeypack.

--- snip

--
<*> Nathan Mates http://www.visi.com/~nathan/      <*>
# What are the facts? Again and again and again-- what are the _facts_?
# Shun wishful thinking, avoid opinion, care not what the neighbors
# think-- what are the facts, and to how many decimal places? -R.A. Heinlein