December 15th, 2001
Written by: Alex Burger <alex@fragit.net>
Documentation contributors:
Jordi Mallach <jordi@debian.org>
Table of Contents
OverviewRPM Binary packageUsing XQF
DEB Binary package
TAR.GZ source code
CVS source codeLaunching XQFTroubleshooting / FAQ
Menu barFileToolbar
Edit
View
Server
Preferences
Window Panes
Bottom Status bar
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:
QuakeSearching 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.
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 3Other games that use the 'Gamespy' type master protocol such as
No one Lives Forever
Rally Masters
Turok 2
Shogo
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
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.
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.
RPM Binary package:Make sure QSTAT 2.4e or higher is already installedDEB Binary package:As root, execute the command:
rpm -Uvh xqf-xxx-i386.rpm
Make sure QSTAT 2.4e or higher is already installedTAR.GZ source codeAs root, execute the command:
dpkg -i xqf_xxx-v_arch.deb
Make sure QSTAT 2.4e or higher is already installedCVS source codeExtract 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
Make sure QSTAT 2.4e or higher is already installedCreate 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.
XQF doesn't accept any command line options at the moment, except for debug setting.Menu bar:xqf -d NSets 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.
File, Edit, View, Server, Preferences
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
Add Server:View:Add a new server to the Favorites listDelete:Delete server entry from Favorites listCopy:Copy basic server information to clip board:Copy+:ip:port
Example:
24.101.93.126:27912
Copy more detailed server information to clip board:Add Master:ping ip:port name map curplayers maxplayers
Example:
0 24.101.93.126:27912 Toronto_NH_BatCave q2dm2 0 of 5
Add a master server to the 'Source' pane.Delete Master: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'gmaster://Example:
master://q2master.planetquake.com
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.http://Unreal Tournament uses this type of master server protocol, but does not require the key.
Example:
gmaster://unreal.epicgames.com
Parses html pages for server listings. Common in Quake1, Quake2, Kingpin and Heretic II.Note: Not specifying a prefix will default to master://Example:
http://www.gameaholic.com/servers/qspy-heretic2
Removes a master from the Source listFind 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.
Refresh:Server:Refresh (ping) all servers for the current game / sourceRefresh selected:Refresh (ping) all servers for the currently selected / highlighted serversUpdate from Master:Fetch the latest list of servers from the master server.Show host names:Attempt to convert IP addresses to host namesShow 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 Filters:Preferences:Select one of 9 custom filtersConnect:Connect to selected server.Observe: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
Launches the game in observer / spectator mode. Only effective for some gamesRecord Demo:Launches game with +record option. Only works in Quake1, Quake2 and Quake3Add to Favorites:Add the currently selected server(s) to the Favorites listDelete:Delete server entry from Favorites listDNS Lookup:Attempt to convert IP addresses to host names of selected serversRCON:Remote Console to Quake2 servers. Will be prompted for rcon passwordProperties:Displays server information such as name, ip, last refreshed dateLists server, observer / spectate and rcon passwords if set
General:Toolbar:On StartupGamesRefresh Favorites:On ExitRefresh / ping servers in Favorites when XQF starts
Save Server lists:When Launching a GameSave 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
Terminate XQF:Quit XQF when you launch a game. Not normally necessary unless you are
extremely low on RAMCreate 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.
For each game supported by XQF there are one or more configuration tabs:Invoking:
Command Line:Common Options (does not work with all games):Command to execute the gameWorking directory:Example: /games/quake2/startq2
Directory to run the game fromExample: /games/quake2
(Some games:) Custom CFG: Custom config file to use
Disable sound:Disable sound if the game supports the option on the command line. For example, Quake2 would be called with the
+nosound switchDisable CD audio:Disable cd audio if the game supports the option on the command line. For example, Quake2 would be called with the
+nocd switchQuake - Player Profile:
Player ProfileQuakeWorld - WeaponsEnter your player name. Can also define your player's colour, skin or modelThe highest weapon that Quake should switch toQuakeWorld - Options: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' switchupon 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' switchDisable auto-aiming:Disable automatic aimingThis is passed to Quakeworld as the 'noaim' switch.
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:QuakeWorld - Player Profile:Do not set (use game default)Troubleshooting:Use whatever the Quakeworld default isAutomatically calculate from server ping timeUse the following formula to determine pushlatency setting.Fixed valueIf 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.
Enter a value to be passed to QuakeworldDisable delta-compression (cl_nodelta)
??
Disable player/entity prediction (cl_predict_players)
??
NameQuake2 - Options:Enter your player name. Can also define your player's team, skin and colors.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:AppearanceNameeQuake3: Arena - Options:Enter your player name
Model / SkinDefine your player's model and skinMaster server protocol version:Wolfenstein - Options:The Quake3 protocol version passed to QSTAT when finding servers. Each patch for Quake3 changes this value.vm_cgame_fix:This is passed to QSTAT as -q3s,## where ## is the protocol version. Defaults to 66.
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 properlyMaster server protocol version:Tribes 2 - Player Profile:The Wolfenstein protocol version passed to QSTAT when finding servers. Each patch for Wolfenstein changes this value.set fs_game on connect:This is passed to QSTAT as -q3s,## where ## is the protocol version. Defaults to 57.
XQF will pass the mod a server is using on the command line to ensure the game launches and connects properlyLogin 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.Server List:Qstat:Show host names:Toolbar:Attempt to convert IP addresses to host namesShow 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.Sort servers real-time during refresh: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 names while refreshing the listRefresh on Update:Automatically refresh server list after updating list of serversIcons / Text / BothShow top toolbar as icons, text or icons/textTooltips:Enable or disable tooltips. Gives a description of a button when you hold the mouse pointer over it for a couple secondsQstat Options:Server Filters:
Number of simultaneous servers to queryHow many servers QSTAT should query at once. This number is passed to QSTAT as the -maxsim switchNumber of retriesNumber of times QSTAT should retry a server. This number is passed to QSTAT as the -retry switchServer filters can be used to reduce and or fine tune the servers listed. Nine custom filters can be defined.Player Filters:Server would pass filter if:
ping is less than:The server's ping must be less than this number to be displayedThe number of retries is fewer than:If XQF must retry more than this number to contact a server, remove it from the listIt is not full:The server has room for another playerIs not empty:Has someone playing on it. BOTS on the server are considered as playersCheats are not allowed:Cheats is not enabled on the serverNo password required:Server is a public access serverFilter Name (For Menu):Name of filter as listed in the Server - Server Filters menuThe 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' variablePlayer 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.
Update, Refresh, Refresh Selected, Stop, Connect, Observe, Record S Filter, P Filter, SF Cfg, PF CfgUpdate:
Window Panes:See 'View - Update from Master'Refresh:See 'View - Refresh'Refresh Selected:See 'View - Refresh Selected'Stop:Abort the current taskConnect:See 'Server - Connect'Observe:See 'Server - Observer'Record:See 'Server - Record Demo'S Filter:Enable the currently selected Server filterP Filter:Enable the currently selected Player filterSF Cfg:See 'Preferences - Server Filter'PF Cfg:See 'Preferences - Player Filter'
Left pane: SourceBottom status bar:
Top pane: Server list
Middle bottom pane: Player list
Bottom right pane: Server infoWhile in the Server pane:
- Left double-click launches game on selected server.
- Right click pops up server option menu.
- Middle click selects one server and refreshes its information.
Left bar: Current XQF activityTroubleshooting / FAQ
Middle bar: Filter information
Right bar: Moving activity bar
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.Launching gamesMost 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
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.Soldier of Fortune (1.06):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 argumentsLD_LIBRARY_PATH="/usr/local/games/quake3-1.17"
export LD_LIBRARY_PATHcd "/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 quake3Note 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.
Create a script in your sof directory called 'startsof-xqf' that contains: ./sof +set console 1 +won_login username password $*Unreal Tournament (436):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
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)Half-Life (untested):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'.
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:portDescent 3: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 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.