XQF 0.9.8

December 15th, 2001
Written by:  Alex Burger <alex@fragit.net>

Documentation contributors:
Jordi Mallach <jordi@debian.org>
 
 

Table of Contents

Overview

System Requirements

Downloading

Installation / Configuration

RPM Binary package
DEB Binary package
TAR.GZ source code
CVS source code
Using XQF
Launching XQF
Menu bar
File
Edit
View
Server
Preferences
Toolbar
Window Panes
Bottom Status bar
Troubleshooting / FAQ

Launching games
 


Overview

XQF is a 3D action game (such as Quake, sequels and derivatives) server browser. It uses X and is written using the GIMP Tool Kit.

XQF is a front-end to QStat, a program by Steve Jankowsk which is used to retrieve server info.

With  XQF you can search for the following games:

Quake
Quake World
Quake2
Quake3
Return to Castle Wolfenstein
Hexen22
HexenWorld
Sin
Half-Life
Kingpin
Soldier of Fortune
Tribes 2
Heretic 2
Unreal Tournament
Rune
Descent 3

Other games that use the 'Gamespy' type master protocol such as
    No one Lives Forever
    Rally Masters
    Turok 2
    Shogo

Searching for games involves communicating with 'master servers' on the Internet which game servers advertise to on the Internet.  XQF can spawn your client into a selected server with customized options.  You can also apply filters while searching for servers, trimming full or empty servers, for example.

The program has been translated to the following languages: English, Spanish and German.

Highlight of features:
  - Supports (unauthenticated) Gamespy style master servers using QStat 2.4a
  - Displays server rules and player info
  - Players and servers sorting
  - Favorite servers list
  - Simple filtering for servers
  - Player Filter (Buddy Lists)
  - Player name, color, skin and model selection
  - QuakeWorld skin visualization with coloring
  - Custom configs
  - Decodes and displays extended bit-field server flags (dmfalgs,
      teamplay, etc...)
  - Remote server administration tool (rcon) for QuakeWorld, HexenWorld,
      Quake2, Quake3: Arena, Half-Life, Sin, Kingpin, Heretic2 servers
 

System Requirements

The minimum system requirements are:

A UNIX computer and C compiler (gcc)
QSTAT 2.4e (latest version recommended to ensure full functionality)
glibc 2.1+
Xfree86 3.3.3+
GTK+ 1.2.5+
gettext 0.10.36+ (ONLY required when building directly from CVS)
wget to retrieve html server listings from the Web

XQF has been tested as is known to run on Intel / AMD and PowerPC platforms.
 

Downloading
 

XQF can be downloaded as a pre-compiled binary for some distributions, or as source code. The source code can be downloaded as either a .tar.gz file, or via
CVS.  See the file section of http://www.linuxgames.com/xqf for downloading instructions.
 

Installation / Compiling
 

RPM Binary package:
Make sure QSTAT 2.4e or higher is already installed

As root, execute the command:

rpm -Uvh xqf-xxx-i386.rpm

DEB Binary package:
Make sure QSTAT 2.4e or higher is already installed

As root, execute the command:

dpkg -i xqf_xxx-v_arch.deb

TAR.GZ source code
Make sure QSTAT 2.4e or higher is already installed

Extract the source code:

tar xvfz xqf-xxx.tar.gz

cd into the directory:

cd xqf-*

Run configure script:

./configure

Compile source code:

make

Install compiled binary and man page (this step must be done as root):

make install
 

CVS source code
Make sure QSTAT 2.4e or higher is already installed

Create the 'configure' script:

./autogen.sh

Run configure script:

./configure

Compile source code:

make

Install compiled binary and man page (this step must be done as root):

make install

The default location for XQF /usr/local/bin.


Using XQF

Launching XQF:

 XQF doesn't accept any command line options at the moment, except for debug setting.
xqf -d N

Sets debug level to `N', where N is greater than 0. If N is greater than 5, XQF will output a lot of debug information.

XQF is normally installed into /usr/local/bin.  If /usr/local/bin is not in your path, launch xqf with:

/usr/local/bin/xqf -d N

You can also add the directory to your path, or simply make a symbolic link in /usr/bin.  For example, as root:

ln -s /usr/local/bin/xqf /usr/bin/xqf

XQF can be customized via GTK's rc files.  XQF parses files /etc/gtkrc, $HOME/.gtkrc and $HOME/.qf/gtkrc.
 

Menu bar:

File, Edit, View, Server, Preferences

File:

Statistics:
Servers tab:

Display server statistics for all games such as number of servers, # up, times on, # down, # info not available, # of players

O/S tab:

Quake2, Quake3, WolfenStein, Kingpin and Half-Life server statistics based on CPU/architecture and operating system


Exit:

Exit / quit XQF


Edit:
 

Add Server:
Add a new server to the Favorites list
Delete:
Delete server entry from Favorites list
Copy:
Copy basic server information to clip board:

ip:port

Example:

24.101.93.126:27912

Copy+:
Copy more detailed server information to clip board:

ping ip:port name map curplayers maxplayers

Example:

0 24.101.93.126:27912 Toronto_NH_BatCave q2dm2 0 of 5

Add Master:
Add a master server to the 'Source' pane.

Enter the name of the master server, the type of game, and the master server address. XQF supports the following types of master servers in the address field:

master://

Considered a standard master server. When XQF calls QSTAT, it will use use QSTAT's standard master support. For example, Quake2 would use the qstat option '-q2m'

Example:

master://q2master.planetquake.com

gmaster://
When XQF calls QSTAT, it will use the '-gps' option to query 'Gamespy' style master servers. This will not allow you to query master servers at gamespy.com, as they use an key to only allow Gamespy users to use their master servers.

Unreal Tournament uses this type of master server protocol, but does not require the key.

Example:

gmaster://unreal.epicgames.com

http://
Parses html pages for server listings. Common in Quake1, Quake2, Kingpin and Heretic II.

Example:

http://www.gameaholic.com/servers/qspy-heretic2
 

Note:  Not specifying a prefix will default to master://
Delete Master:
Removes a master from the Source list
Find Player:
Search for a player by name using an exact match string, sub string or regular expression.
Find Again:
Find the next player that matches the previously defined search string.
View:
Refresh:
Refresh (ping) all servers for the current game / source
Refresh selected:
Refresh (ping) all servers for the currently selected / highlighted servers
Update from Master:
Fetch the latest list of servers from the master server.
Show host names:
Attempt to convert IP addresses to host names
Show default port:
If off, XQF will not sure the port next to the IP address if it is considered the default port for the game.

For example:

When on, a Quake2 server on port 27910 would be displayed as:

quake2.somedomain.com:27910

When off, a Quake2 server on port 27910 would be displayed as:

quake2.somedomain.com

Server:
Server Filters:
Select one of 9 custom filters
Connect:
Connect to selected server.

The server is 'pinged / refreshed' before the connection is attempted.  If the server is found to be down, you will be warned before the game is launched.

If the server has a password set, a password prompt will appear

Observe:
Launches the game in observer / spectator mode. Only effective for some games
Record Demo:
Launches game with +record option. Only works in Quake1, Quake2 and Quake3
Add to Favorites:
Add the currently selected server(s) to the Favorites list
Delete:
Delete server entry from Favorites list
DNS Lookup:
Attempt to convert IP addresses to host names of selected servers
RCON:
Remote Console to Quake2 servers. Will be prompted for rcon password
Properties:
Displays server information such as name, ip, last refreshed date

Lists server, observer / spectate and rcon passwords if set

Preferences:
General:
On Startup
Refresh Favorites:

Refresh / ping servers in Favorites when XQF starts

On Exit
Save Server lists:

Save list of servers when you quit XQF. Recommended if you have a slow connection

Save server information:

Save server information such as map name, game type, flags etc when you quit XQF. Recommended if you have a slow connection

Save player information:

Save list of players and scores when you quit XQF

When Launching a Game
Terminate XQF:

Quit XQF when you launch a game. Not normally necessary unless you are
extremely low on RAM

Create Launchinfo.txt:

A Launchinfo.txt file will be created in the (home directory)/.qf directory. This can be used by external programs such as IRC scripts that notify other people in IRC that you are playing a game. Saves the same information as Copy+ does:

ping ip:port name map curplayers maxplayers

Iconify XQF window:

Iconify / minimize the XQF window when you launch a game

Execute prelaunch:

A file (if exists) PreLaunch will be launched / executed from the (home directory)/.qf directory before launching the game. This can be used by external programs such as IRC scripts that notify other people in IRC that you are playing a game.

Games
For each game supported by XQF there are one or more configuration tabs:

Invoking:

Command Line:
Command to execute the game

Example: /games/quake2/startq2

Working directory:
Directory to run the game from

Example: /games/quake2

(Some games:) Custom CFG: Custom config file to use

Common Options (does not work with all games):
Disable sound:
                         Disable sound if the game supports the option on the command line. For example, Quake2 would be called with the
                         +nosound switch
Disable CD audio:
                         Disable cd audio if the game supports the option on the command line. For example, Quake2 would be called with the
                         +nocd switch

Quake - Player Profile:

Player Profile
Enter your player name. Can also define your player's colour, skin or model
QuakeWorld - Weapons
The highest weapon that Quake should switch to
upon a weapon pickup:
Choose the highest weapon that Quake should switch to when you pick up a new weapon. Passed to Quakeworld as the 'setinfo w_switch x' switch
upon a backpack pickup:
Choose the highest weapon that Quake should switch to when you pick up a backpack. Passed to Quakeworld as the 'setinfo b_switch x' switch
Disable auto-aiming:
Disable automatic aiming

This is passed to Quakeworld as the 'noaim' switch.

QuakeWorld - Options:
Skins:
                    Use skins:

                         Allow skins to be used during the game.

                    Don't use skins:

                         Disable skins.  This is passed to Quakeworld as the 'noskins' switch.

                    Don't download new skins:

                         QuakeWorld and Quake2 can automatically download skins from servers you play on if you do
                         not already have the skins on your computer.  This options disables the downloading of skins.

Rate:
                    This controls network packets so that your connection bandwidth does not get saturated.  Lowering the
                    number reduces the number of packets sent / received.  Slower connections should use a lower rate setting.

                    Default is 2500.

                    This is passed to Quakeworld/Quake2 as the 'noaim' switch.

Pushlatency:
Do not set (use game default)
Use whatever the Quakeworld default is
Automatically calculate from server ping time
Use the following formula to determine pushlatency setting.

If ping is <= 0, set to 10 (minimum)

If ping is >= 2000, set to 1000 (maximum)

Otherwise, set to (((ping / 2) +9 ) / 10 ) * 10

This is passed to Quakeworld as the 'pushlatency' switch.

Fixed value
Enter a value to be passed to Quakeworld
Troubleshooting:

                    Disable delta-compression (cl_nodelta)

                         ??

                    Disable player/entity prediction (cl_predict_players)

                         ??

QuakeWorld - Player Profile:
Name
Enter your player name. Can also define your player's team, skin and colors.
Quake2 - Options:
Skins:
                    Use skins:

                         Allow skins to be used during the game.

                    Don't use skins:

                         Disable skins.  This is passed to Quakeworld as the 'noskins' switch.

                    Don't download new skins:

                         QuakeWorld and Quake2 can automatically download skins from servers you play on if you do
                         not already have the skins on your computer.  This options disables the downloading of skins.

Rate:
                    This controls network packets so that your connection bandwidth does not get saturated.  Lowering the
                    number reduces the number of packets sent / received.  Slower connections should use a lower rate setting.

                    Default is 2500.

                    This is passed to Quakeworld/Quake2 as the 'noaim' switch.

Troubleshooting:

                    Disable delta-compression (cl_nodelta)

                         ??

                    Disable player/entity prediction (cl_predict_players)

                         ??

Quake2 - Player Profile:
Namee
Enter your player name


Model / Skin

Define your player's model and skin
Quake3: Arena - Options:
Master server protocol version:
The Quake3 protocol version passed to QSTAT when finding servers.  Each patch for Quake3 changes this value.

This is passed to QSTAT as -q3s,## where ## is the protocol version.  Defaults to 66.

vm_cgame_fix:
Sets command line options to make Quake3 prefer QVM to shared objects (.so).  This should only be required if there are .so files from an older release floating around in baseq3/
Rocketarena fix:
Sets command line options to make Quake3 prefer shared objects (.so) to QVM.  Rocket Arena uses shared objects.
set fs_game on connect:
XQF will pass the mod a server is using on the command line to ensure the game launches and connects properly
Wolfenstein - Options:
Master server protocol version:
The Wolfenstein protocol version passed to QSTAT when finding servers.  Each patch for Wolfenstein changes this value.

This is passed to QSTAT as -q3s,## where ## is the protocol version.  Defaults to 57.

set fs_game on connect:
XQF will pass the mod a server is using on the command line to ensure the game launches and connects properly
Tribes 2 - Player Profile:
Login Name:
Login name to use to log into Tribes 2.  If present, it will be passed on the command line.  To prevent a password prompt, you must save your password inside of Tribes 2.
Appearance
Server List:
Show host names:
Attempt to convert IP addresses to host names
Show default port:
If off, XQF will not sure the port next to the IP address if it is considered the default port for the game.

For example:

When on, a Quake2 server on port 27910 would be displayed as:

quake2.somedomain.com:27910

When off, a Quake2 server on port 27910 would be displayed as:

quake2.somedomain.com

Sort servers real-time during refresh:
Sort servers names while refreshing the list
Refresh on Update:
Automatically refresh server list after updating list of servers
Toolbar:
Icons / Text / Both
Show top toolbar as icons, text or icons/text
Tooltips:
Enable or disable tooltips. Gives a description of a button when you hold the mouse pointer over it for a couple seconds
Qstat:
Qstat Options:
 
Number of simultaneous servers to query
How many servers QSTAT should query at once. This number is passed to QSTAT as the -maxsim switch
Number of retries
Number of times QSTAT should retry a server. This number is passed to QSTAT as the -retry switch
Server Filters:
Server filters can be used to reduce and or fine tune the servers listed.  Nine custom filters can be defined.

Server would pass filter if:

ping is less than:
The server's ping must be less than this number to be displayed
The number of retries is fewer than:
If XQF must retry more than this number to contact a server, remove it from the list
It is not full:
The server has room for another player
Is not empty:
Has someone playing on it.  BOTS on the server are considered as players
Cheats are not allowed:
Cheats is not enabled on the server
No password required:
Server is a public access server
Filter Name (For Menu):
Name of filter as listed in the Server - Server Filters menu
The game contains the string:
Enter text that must be in the game name.  For example: 'arena'
The Game Type contains:
Enter text that must be in the game name.  For example: 'ctf'
The version contains the string:
Only servers that have the text in the 'version' variable
Player Filters:
Player filters can be used to you find your friends on servers.  Each player defined has a colour assigned to it - red, green or blue.  The server list will display the coloured dot next to the server name if the player is found on that server.

Click 'New' and enter a player name using an exact match (string), a partial match (substing) or by using a regular expression.

Toolbar:
Update, Refresh, Refresh Selected, Stop, Connect, Observe, Record S Filter, P Filter, SF Cfg, PF Cfg

Update:

See 'View - Update from Master'
Refresh:
See 'View - Refresh'
Refresh Selected:
See 'View - Refresh Selected'
Stop:
Abort the current task
Connect:
See 'Server - Connect'
Observe:
See 'Server - Observer'
Record:
See 'Server - Record Demo'
S Filter:
Enable the currently selected Server filter
P Filter:
Enable the currently selected Player filter
SF Cfg:
See 'Preferences - Server Filter'
PF Cfg:
See 'Preferences - Player Filter'
Window Panes:
 
Left pane:  Source
Top pane:  Server list
Middle bottom pane:  Player list
Bottom right pane:  Server info

While in the Server pane:

Bottom status bar:
 
Left bar: Current XQF activity
Middle bar: Filter information
Right bar: Moving activity bar
Troubleshooting / FAQ
Please report problems to the XQF home page Forum at http://www.linuxgames.com/xqf or the user mail list at http://sourceforge.net/projects/xqf.

Most problems can be solved by deleting the '.qf' directory in your home directory.  This directory contains the configuration of XQF including game preferences, server lists, player lists etc.

Q: When I refresh or update a list, all servers come back with a ping of 'n/a'

A:  Make sure qstat is in your path.  Go to a shell and type qstat.  If a screen full of qstat command options does not appear, qstat is not installed, or it is not in your path.  After compiling QStat, copy qstat to the /usr/bin directory.  See the QStat home page for installation instructions.

Q: QStat is installed, but when I refresh or update a list, all servers come back with a ping of 'n/a'

A:  If you are behind a firewall such as a LinkSys or Dlink router, or are using filtering on your machine (iptables or ipchains) you are probably blocking the game's traffic from entering your computer.  Games generally use UDP, not TCP.  Because of this, your firewall needs special configuration.  Search the internet for 'gamename firewall port' and you should find something helpfull.

Q:  When I try to launch XQF, I get 'command not found'

A:  XQF is not in your path.  See the Launching XQF section

Q:  I have added master0.gamepy.com to XQF, but I can not retreive any servers from that master

A:  Gamespy's master servers use an authentication sequence that is not supported by QStat.  This means that you can not query a Gamespy master using QStat and XQF.  Other games such as Unreal Tournament use the Gamespy style master server but do not require authenticatoin which is why they work

Q:  I deleted one of the default master servers.  How do I get it back?

A:  Edit - Add Default Masters to add ALL the default master servers back into the list.  If you know the address, you can add a single master with Edit - Add Master

Launching games
 
Following are notes on launching specific games.  Most games should work with basic setup in XQF, but some may require special configuration.

Quake2:

Under Preferences - Games, enter the 'command line' and 'working directory'. Nothing special needed.
Quake3:
Under Preferences - Games, enter the 'command line' and 'working directory'. Nothing special is normally needed.

QUAKE 3 ARENA SPECIAL INSTRUCTIONS (AKA HACK) for v1.17 and 1.27

This may also apply to newer versions of Quake3 as they are released.

In Q3A, clients and servers can only talk with each other if they are using the same protocol.  The protocol in Q3A is defined by a  number.  So, for instance, Q3A 1.17 uses  protocol 45 wile 1.27 uses protocol 48.  During the switch-over time after ID releases a new point release, it can be  frustrating to not be able to connect to any server one wants. However, if you have lots of disk space, it is possible to get around this problem.

I (Bill 'EvilBill' Adams) will outline what I did to get it so I can play both 1.17 and 1.27 Q3A games without much fuss.
For reference, my Q3A is installed under /usr/local/games/... and I have a symlink from /usr/local/bin/quake3 to ../games/quake3/quake3.

(1) Rename /usr/local/games/quake3 (as I used to have it) to /usr/local/games/quake3-1.17.

(2) mkdir /usr/local/games/quake3; cd /usr/local/games/quake3

(3) cp -Rav ../quake3-1.17 .

(4) Install the point release, copy all of the TA pk3 files into baseq3.  Remove any old mods from 1.17.

(5) cd..; mv quake3 quake3-1.27

(6) Edit both of the quake3 scripts so the directories all match, here is the script I use for 1.17: (/usr/local/games/quake3-1.17/quake3)

==begin==
#!/bin/sh
# Needed to make symlinks/shortcuts work.
# Run Quake III with some default arguments

LD_LIBRARY_PATH="/usr/local/games/quake3-1.17"
export LD_LIBRARY_PATH

cd "/usr/local/games/quake3-1.17"
quake="./quake3.x86"
"$quake" +set in_dgamouse 1 $*
exit $?
==cut==

(7) [as root], cd into /usr/local/bin.  Make symlinks for each of the Q3A directories that correspond to the protocol each uses. So:

  ln -s ../games/quake3-1.17 quake3proto45
  ln -s ../games/quake3-1.27 quake3proto48
  ln -s ../games/quake3-1.27 quake3

Note the last one is there as the default.

(8) Get a very (CVS) recent version of xqf. You will need >=0.9.6e-beta. Set up the executable for quake3 such that it is the FULL path to  quake3, in my case I entered /usr/local/bin/quake3.  This is VERY important because of the hack I used where I put 'protoNN' on the end of whatever you entered for the program and see if xqf can fopen it.  Without the full path, chances are that xqf will not find it.

If you have problems, run xqf with "-d 5" on the command line.  This will give you some hints as to that which it is looking.
 

Soldier of Fortune (1.06):
Create a script in your sof directory called 'startsof-xqf' that contains: ./sof +set console 1 +won_login username password $*

Replace username and password with your WoN username and password

Make the script executable with: chmod +x startsof-xqf

Under Preferences - Games, enter startsof-xqf for 'command line' and enter the directory sof is installed in for 'working directory'.

When you connect to a server, SoF will authenticate to WoN and you will have to click 'OK' to the hopefully successful login screen.  You should then be connected to the selected server

Unreal Tournament (436):
Inside of the directory where Unreal Tournament is installed, backup your ut file: cp ut ut.org (ut is a script that finds and launches ut-bin)

Edit the ut file and change the line near the bottom from exec "./ut-bin" -log $* to exec "./ut-bin" $* -log

(-log and $* need to be swapped)

Make sure you are using XQF 0.9.5a-beta or later

Under Preferences - Games, enter ut for 'command line' and enter the directory UnrealTournament is installed in for 'working directory'.

Half-Life (untested):
When connecting to a Half-Life server, XQF will pass the following on the command line after the command specified in Preferences - Games 'command line': +set cd_nocd (0 or 1) +set game (gamename) +connect ipaddress:port

Depending on how you launch HalfLife using Wine (TransGaming, Linux Half-Life or Emulated Half-Life for example), you may only want to pass one of the above command line options to the Wine script. A simple way is to create a script called 'starthl-xqf' that contains: path-to-ehl/ehl $8 if you wanted to execute the command ehl (usually the Emulated Half-Life script name) and pass the 8th command line option which would be the ipaddress and port ($1 would be +set, $2 would be cd_nocd, $3 would be 0 or 1 etc).

Make the script executable with: chmod +x starthl-xqf

Under Preferences - Games, enter starthl-xqf for 'command line' and enter the directory where the script is located for 'working directory'.

The Linux Half-Life site contains a script in the How-To section that can be easily modified to suite your configuration.

Descent 3:
Descent 3 does not currently launch from XQF.  This appears to be a problem with the Descent3 program, and not XQF.  Descent3 for Linux does not accept connections to servers from the command line.