When HaloBrowser starts, it reads a configuration file that tells it what other
files to use for various things, and where the Halo executable is located. It
then reads a list of servers (defined by a network / IP address and a port) and
queries each server in the list for its status:
Once
HaloBrowser has all the responses, it reads another file that tells it what
games you are not interested in, what games you particularly like and what other
players you are interested in knowing about. The resulting list of game servers
is displayed in a table with color highlighting any servers that have players
with names you're looking for:
You can select any server in the list to see detailed information on the server,
the game it is currently running and the players in that game. When a server is
selected, you can tell HaloBrowser to launch Halo and you will automatically
join that game (as long as there is still room in it after Halo starts).
When you tell HaloBrowser to perform a refresh it will re-read the server list and filters file, re-query the servers and filter the new results, displaying an updated list. HaloBrowser can also be set to automatically perform a refresh at intervals you set, for example every 5 minutes.
Once HaloBrowser has been unzipped into the directory (folder) you created for it, there is one file that needs editting and another you will probably want to edit.
First, open HaloBrowser.ini in a text editor (an editor such as
NotePad, which saves files in .TXT format, with only the text you type in and
no additional formatting).
HaloBrowser.ini will initially look something like this:
# Default properties for HaloBrowser
ServerListFile = ServerList.txt
FilterFile = Filters.txt
PathToHalo = "C:\\Program Files\\MicrosoftGames\\Halo"
QueryDoneSound = bleep.wav
NoServersSound = doh.wav
PlayersFoundSound = elim.wav
Once HaloBrowser is running, you can also open the configuration file for editing via Edit → Settings, though if Windows does not already have an application designated for .INI files it will ask you to pick one (Notepad is suggested).
The first line is a comment -- something that is there for you or others but is ignored by HaloBrowser. A comment is defined by having its very first character being a pound sign ('#'). Comments can be put anywhere in the file; for example they can be used to easily switch between two different filter files:
FilterFile = normal.txt
#FilterFile = boarding_action_phantoms.txt
With these lines in HaloBrowser.ini, the file
normal.txt is used to define the server filters and player names.
By commenting out the first line and un-commenting the second, a different set
of filters will be applied the next time the server list is refreshed.
ServerListFile is used to set the name of the file containing the
servers to query. ServerList.txt is the default file distributed
with HaloBrowser. This file and its format are described in more detail in
section C below.
FilterFile specifies the name of the file containing all of the filters
(these include what characteristic(s) a server must or must not have in order to
remain in the list, what characteristic(s) you prefer (but do not require) a
server to have, and what players you are interested in knowing about if they are
on-line. Filters.txt is the default file distributed with
HaloBrowser. This file and its format are described in more detail in
section D below.
PathToHalo tells HaloBrowser where you have installed Halo; it needs this information when you ask it to launch Halo and join a game.
The default path is
PathToHalo = "C:\\Program Files\\MicrosoftGames\\Halo"
The patch consists of a driver letter followed by a colon (':') and then the series of directories (folders) it must follow to your Halo installation. Each directory must be preceded by either a single forward slash ('/') or double backslashes ('\\').
Finally, if any of the directory names in the patch contain any blanks, then the entire path must be enclosed in quotation marks, as is done with the default value in the distribution.
QueryDoneSound identifies the sound file (.WAV, .AU or .AIFF) that Halo is to play as it displays an updated list of servers. See section E for more information about the sound files HaloBrowser can play.
QueryDoneSound identifies the sound file that Halo is to play when it finishes querying and filtering the servers and no servers remain (i.e. all have been filtered out). See section E for more information about the sound files HaloBrowser can play.
PlayersFoundSound identifies the sound file that Halo is to play when it displays an updated list of servers with one or more servers that contain player names matching those you are looking for. See section E for more information about the sound files HaloBrowser can play.
If you open this file either directly or via Edit → Server List in the menu its format will be obvious -- simply one server per line, each server specified by a network / IP address followed by a colon (':') and then the server's port number, e.g.
63.208.74.59:2600
66.158.14.230:2302
69.31.96.65:2302
64.37.104.75:2302
.
.
.
You are free to add more servers to the list, remove servers that are no longer running Halo, or make your own short list of servers you frequent.
The need to have this list is unfortunate, especially because there is no way to
automatically update it with new servers. But the only two "server
servers" I know of, GameSpy and QTracker, both require a client to
authenticate with their service before they will provide a list of game servers
and I do not have the means to learn that protocol. If you know of a solution
to this, please let me know at
Like the server list file, the filters file can be opened from your text editor or via Edit → Filters in the menu.
Here is an example set of filters illustrating the various commands that can be used in a filter file.
# a comment
REQUIRE Version 01.00.04.0607
FORBID NOT DedicatedServer
FORBID Password
FORBID Map Infinity
FORBID Map BoardingAction AND Game NOT Slayer
REQUIRE Game NOT Race
REQUIRE NumPlayers Min 3 AND Open 1 AND Allowed 12 AND Max 8
FAVOR Map NOT BloodGulch
FAVOR Map Damnation AND Game CTF
PLAYERS sarge
PLAYERS *117
# My clan
PLAYERS XYZ*
PLAYERS *noob*
Just like the server list discussed earlier, comment lines that HaloBrowser will ignore can be put in the filters file. A comment line is any line in the file that starts with a pound sign ('#').
Comment lines can be put anywhere in the file, not just at the beginning.
Filter lines are completely case insensitive -- you can use all capitals, all
lower case or any combination. So FORBID, ctf and
rAtRaCe are all valid.
If a string used in a filter contains a space (ex. "Blood Gulch" or "Gun Turrets"), then the entire value must be enclosed within single quotes (') like this:
FORBID Vehicles 'Gun Turrets'
There is no limit on the length of a line in the filter file (except for whatever constraints might be imposed by Windows and Java).
Note: This document does not explain what different Halo server and game settings mean! Please refer to Halo documentation, either the game's manual or the various on-line FAQs, for that information.
Lines that exclude servers from the results start with either
REQUIRE or FORBID That keyword is followed by a
filter description (described next), and then it may optionally be followed by
the keyword AND and another filter description. Any number of
filter descriptions may be ANDed together on a single line.
There are two general types of filter descriptions, plus a third type that is used only for filtering on the number of players or spots in a game.
Some server characteristics, such as whether a server is password protected, are either true or false. These filters include the following:
DedicatedServer
InfiniteGrenades
Invisibility
Password
Shields
TeamGame
The syntax for these filters, after REQUIRE, FORBID or
AND, is the optional keyword NOT and then the filter
name. Examples:
FORBID NOT Password
REQUIRE Shields
The first excludes password-protected servers and the second excludes all games in which there are no shields.
Most filters, however, need what I'll a "value" associated with them. For instance, when filtering by map the filter has to know what map name to look for. Filters in this category are:
The syntax for these filters, after REQUIRE, FORBID or
AND, is the filter type, an optional NOT and then the
filter name. Examples:
FORBID Map NOT BloodGulch
REQUIRE Game Slayer
The first excludes all Blood Gulch games and the second excludes all games other than slayer.
Legal values for FriendlyFire filters are
Off
On
'Explosives Only'
'Shields Only'
Legal values for Game filters are
CTF
King
Oddball
Slayer
Race
Legal values for Map filters are
'Battle Creek' (alternate: beavercreek)
'Blood Gulch' (alternate: bloodgulch)
'Boarding Action' (alternate: boardingaction)
Carousel
'Chill Out' (alternate: chillout)
'Chiron TL-34' (alternate: putput)
Damnation
'Danger Canyon' (alternate: dangercanyon)
'Death Island' (alternate: deathisland)
Derelict
Gephyrophobia
'Hang em High' (alternate: hangemhigh)
Icefields
Infinity
Longest
Prisoner
'Rat Race' (alternate: ratrace)
Sidewinder
Timberland
Wizard
Unlike the rest of the filters, some of the maps have two different values. This is because internally Halo uses different names for some maps. Both are supported so you can use whichever you are more familiar with.
Legal values for MaxHealth filters are 50, 100, 150, 200, 300 and
400.
Legal values for NumberOfLives filters are 0 (that's zero, which
denotes "infinite"), 1, 3 and 5.
Legal values for Radar filters are
All
None
Teammates
Legal values for Version filters are any string of four numbers
separated by periods ('.'). Leading zeroes are not required (i.e.
1.0.4.607 is the same as 01.00.04.0607) but I prefer
filtering a string that matches exactly what Halo reports in its Settings →
About menu.
Legal values for Vehicles filters are
Default
None
Warthogs
Ghosts
Scorpions
'Rocket Warthogs'
Banshees
'Gun Turrets'
Custom
In team games, Vehicles filters are applied against
both teams' vehicle settings (i.e. both teams' vehicle sets
must pass the filter in order for the server to pass).
Legal values for Weapons filters are
Normal
Pistols
Rifles
Plasma
'Sniper Rifle'
'No Sniping'
'Rocket Launchers'
Shotguns
'Short Range'
Human
Covenant
Classic
'Heavy Weapons'
One filter, NumPlayers, is different from the two types discussed
above. As usual, the filter type, NumPlayers, follows
REQUIRE or FORBID (and perhaps AND; see
below). However, after NumPlayers there may be any or all of 4
different constraints about how many players are or can be in a game.
An example of a NumPlayers filter using all four constraints is
REQUIRE NumPlayers Min 3 AND Open 1 AND Allowed 12 AND Max 8
The four constraints that may be part of a NumPlayers filter are
Min -- At least this many players must already be in the
game. Hence, empty servers can be filtered out with Min
1.
Open -- There must be at least this many open spots in the
game for players to join. Open 1 will filter out all of
the full servers.
Allowed -- The server may not allow more than this many
players in the game. This can be used to filter out the bigger games.
Max -- There may be no more than this many players in the
game.
Any or all of the four constraints may be specified, with AND in
between each if more than one is present. They may appear in any order.
The NOT keyword is not used in the
NumPlayers filter.
It will not always make sense to specify all four constraints in a
NumPlayers filter. However, each of the constraints on its own
does provide a different filtering capability and can be valuable in specific
situations; this is why all 4 are supported.
I believe NumPlayers can be combined with other filters using
AND but this has not been tested. If it does work at all it will
only be with with the NumPlayers filter being the last one on
the line.
FAVOR filters do not exclude servers; rather they mark them
"preferred". The more FAVOR filters a server matches,
the more preferred it is and the higher it will appear in the list.
AND and NOT can be used with FAVOR in the
same way as with REQUIRE and FORBID.
NOTE: AVOID is not yet implemented.
PLAYERS and AVOID lines in the filters file tell
HaloBrowser to identify any servers that have a player with a matching name.
You can specify whether the type of match has to be exact (the entire name),
"starts with", "ends in" or "contains".
PLAYERS indicate players you are looking to play with.
AVOID indicates, well, the obvious.
PLAYERS and AVOID are not filters -- they do not
exclude servers from the final list. They instead mark certain servers that you
may be particularly interested in joining, or not joining. These servers are
color-highlighted in the server list; this is described in
section F.
The syntax of a player matching line is PLAYERS or
AVOID followed by the string to match. An asterisk ('*') at the
beginning of the string means a player can (but does not have to) have
characters preceding those that match, and an asterisk at the end of the string
means a player can have characters after the matching string.
The name matching is case sensitive; this means PLAYERS RANGER will
not match a player named "Ranger" or "ranger".
If the string to match includes a space, then the string must be enclosed in single quotes, like this
PLAYERS 'silly name'
Example: A player named "SlayerBuffy" will be matched by these strings
SlayerBuffy
Slay*
*Buff*
*Buffy
*Slayer*
but not these
SLAYERBUFFY
Buffy
*Slay
*buff*
HaloBrowser supports .WAV, .AU and .AIFF sound files. Audio formats that should work (audio format is different from file format) are those that use PCM (A-law or u-law), with 1 or 2 channels and 8 or 16 bits per sample at sample rates up to 48 KHz. However, some of those currently have problems. Until these are solved 16 bit stereo .WAVs at 8 KHz and 12 KHz do work, as do some if not all .AUs. .AIFF files may work but have not been tested.
The Windows Sound Recorder application can be used to convert a .WAV file's audio format.
On starting, HaloBrowser will read the server list file, query all of the servers, filter the results and display the remaining servers.
Selecting any server in the list will display all of the information about that server, its current game and the players in that game.
Servers are usually displayed with black text on a white background. If a server passes your filters and has a player on whose name matches one that you are looking for, it will instead have a green background.
A server that has a player name match but does not pass your
filters (and hence would normally not appear in the list) will appear at the
end of the list and will have a yellow background. And once the
AVOID keyword is implemented, a server with a player name matching
your AVOID list will have a red background.
Clicking the "Refresh" button, pressing the F5 function key or selecting Action → Refresh in the menu will perform a complete update of the server information. This includes re-reading the server and filter files, so it is not necessary to restart HaloBrowser for changes to those files to take effect.
Automatic, periodic refreshes can be enabled by changing the "Refresh every <X> secs" setting (0 means "never refresh") to a non-zero value.
Once you find a server you want to join, launch Halo by double-clicking on that server, clicking the "Launch" button or selecting Action → Launch in the menu. Halo will start and automatically join that game.
Note: HaloBrowser creates a lot of network traffic when it querying servers, and it will bog down Halo if automatic refreshes are left on when you start Halo. This will not be a problem if you launch Halo from within HaloBrowser -- automatic refresh is automatically be disabled every time the "Launch" command is issued. However, if you start Halo separately, HaloBrowser will not know it and automatic refreshes will be left on if enabled.
Copyright (c) 2004 Thomas J. Ziomek. All rights reserved.