|
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.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 gamesHere'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 IIIf 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 IIIt 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 pingsRakNet 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 ingame4.1 Pregame Chat1.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:
4.2 Ingame chatBefore 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.
5. Pregame optionsBefore 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:
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 mapsPlayer 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 OptionsWith 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 itemsIn-game score infoControl+Enter while playing BZ2 Multiplayer (though not with the Escape screen up) toggles the in-game score info on/off. Changing groups, sending unitsIn 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 chatIf 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 timeoutBy 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 ResyncsIf 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 speedAs 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 OptionsBZ2 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.
/poweruser commandline switchThis 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:
8. MiscellaneousBandwidth considerationsSince 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 enhancements1.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 UpdatesBZ2 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 UpdatesNo 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) ModeBZ2 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 hostAs 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. |