XPILOT(6)

NAME
xpilot - XPilot multiplayer gravity war game client

SYNOPSIS
xpilot [-help] [-version] [-name nickname] [-team team-number] [-join] [-list] [-shutdown [message]] [-display string] [-port port-number] [-text] [configuration-options] [server-host ...]

OVERVIEW
XPilot is a multiplayer game which looks a bit like Thrust for the Commodore 64. Thrust has some similarities with Atari's coin-up games Gravitar and Asteriods (not a misspelling) - they were the originals. Several clones have appeared for various computers, among others Gravity Force for the Commodore Amiga. The main objective of the game varies as you can choose different game modes, although the only modes supported as of today are combat (optionally with teams and/or limited lives) and race. The former mode focuses more strongly on shooting each other down, while the latter is more a piloting test than anything else. To start playing, you need to connect to a server by using a client program called xpilot. If there are no servers running, you will have to start one of your own (see man-page xpilots(6)).

  Options

-help
    Prints some help, including commandline options.

-version
    Prints the current version.

-name player-name
    Lets you use an alternative name during the play (may be handy :). If this option isn't specified, and you haven't set the X resource name, you will be known by your login name.

-team team-number
    Joins team number team-number. See below for notes about team play. When the server is not configured for team mode, this option has no effect.

-help
    Prints a small usage message.

-version
    Prints version information.

-join
    Automatically joins the first server you get response from. If no server-host is specified, a broadcast query is performed to locate a server on the local network.

-list
    A broadcast query is performed on the local network and status information is displayed from all servers found.

-shutdown [message]
    Sends a shutdown to the server, the message part is optional.

-name nick
    Specifies your nick name.

-team number
    Specifies your wanted team number.

-display display-string
    Specifies which X server to contact.

-port number
    Specifies the port number to use when contacting a server.

-text
    Invokes the old text-based command prompt interface instead of the new Welcome Window. If no server-host is specified, a broadcast query is performed to locate a server on the local network. If a server-host is specified, -text is implied.

configuration-options
    All the X resource values can be configured separately from the command line. For example to change the ecm key to just `z' use; -keyEcm z

server-host
    Tries to connect to server at host server-host. If successful and -join is not specified, you are presented with the command prompt. If neither server-host nor -join are specified, the Welcome Window is displayed and a server may be selected from there.

PROMPT COMMANDS
When you startup xpilot specifying a server name but no -join option, or -text is specified, you will get a prompt asking you for directions. You may type h or ? to list the available commands. These are quite obvious and deal with communication to the current server only. You may enter the game by pressing CR (Return/Enter). If you are the owner of the server you will have a few extra options. See xpilots(6).

THE WELCOME WINDOW
When you startup xpilot without specifying a server name you will be presented with a Welcome window with three buttons in the upper left corner. These buttons are:

    Local
        Search for xpilot servers on the local network and display a list of matches. Press the Join game button beside the desired server name to start playing. If no servers are listed, you will need to start one. See xpilots(6).

    Internet
        Search the xpilot meta servers (see notes section) for currently running xpilot servers on the Internet. If the meta servers could be contacted, a list of servers will be displayed.

    Quit
        Press this button to exit the program.
        When the Internet button is pressed and successfully retrieves the list of xpilot servers from the meta servers, additional buttons appear at the bottom and one under the server column for each server listed:

            Next Page
                If there is more than a screenful of servers, this will allow you to see the rest of them. A First Page button will appear to return to the top of the list when you are not on the first page. The page is initially sorted by the pl column in descending order.

            Measure Lag
                This will fill the ping column with the round-trip time for a packet to reach each server (in milliseconds). If the server is not reachable, none will appear in this column. The results will be sorted by Pl in descending order and subsorted in ascending order by Ping time.

            Server
                The hostname of the server is displayed as a red button to join that server. The button is highlighted when the program is attempting to establish a connection to the server. If the server cannot be contacted after two retries, the button will revert to its unhighlighted state. If the button stays highlighted and you do not enter the game immediately, this means you have been queued to enter the game as soon as a base is available. The xpilot client does not handle the connection attempt in its own thread and therefore blocks the current execution thread and will not update the display or respond to button presses until a connection is established or it gives up. Thus, the only way to exit the queued state is to close the xpilot client, either by using the window manager to close the window, or forcibly with kill(1) or ^C. Incorrectly configured server hosts may report a false hostname. However, behind the scenes, the meta server sends us the IP number. A connection will be established to that IP number when the server button is pressed so long as there isn't a network problem (such as a firewall at either the client or server end not configured to permit access) that prevents contact.
                The columns of the Internet server table, from left to right are as follows:

                    Pl  The number of human players on the server.

                    Q   The number of players currently queued to join the server.

                    Ba  The number of bases on this map.

                    Tm  The number of teams, if the map is a teamplay map.

                    FPS The framerate of the server in frames-per-second.

                    Stat
                        The status of the game, e.g. lock if the game is locked.

                    Version
                        The version number of the server.

                    Map The name of the map.

                    Server
                        The hostname of the server.

THE GRAPHICAL USER INTERFACE
When you enter a game you will hopefully be presented a window. This window is divided into three major areas:

    Radar
        (Top left) This area shows the map the server you are playing on is using as well as the position of your fellow players (if they aren't cloaked). In race mode the radar also outputs the position of the control posts. Players are shown as small rectangles The player you are currently locked onto is shown as a flashing rectangle. The server can optionally display missiles, mines and/or bombs (moving mines) on this radar, and will display them using different symbols; missiles are quick flashing small dots, mines and bombs slow flashing small dots. If nuclear mines or missiles are launched the radar can detect the high energy radation emiited and will show these types of weapons on the radar as alternating small and large rectangles. The radar always has a limited range for these objects, due to their small size. The maximum range depends on how much fuel you are carrying. On teamplay maps, your fellow team members will appear as green dots on the radar, whereas the enemy will appear as white dots.

    Rating list
        (Bottom left) This area shows the list of players (sorted with respect to their rating, or `score') currently logged on the server. The player with the highest <rating>/<num of times died> ratio - that is, the most `deadly' player - is underlined with a dashed line. First on each line, you might find a letter which gives you some information about the status of the player: R means the player is a robot, T means the player is not a player but a detached tank, D means player is dead (only possible in limited lives mode), P means the player is paused and W means the player is waiting to join the game after login (in limited lives mode). Depending on the current game mode, you will also find information about which teams each player belong to and how many lives each player has left.

    Game area
        (Right) This is where the action is. Most notably you will see your fighter in the middle of the screen, hopefully you won't see any shots or explosions yet! You may also see some strange blue drawings surrounding your fighter - this is the HUD (Head Up Display) which greatly simplifies and compresses the information you need to know. Currently, the HUD displays the following information:

        Bonus items
            You may notice some symbols and numbers on the left side of the HUD, these indicate which, and what quantity, of extra equipment you have. This list can be turned off using the `o' key, then only items which you gain or loose will be briefly shown on the HUD. Pressing `o' again will constantly show owned items.

        Fuel
            A fuel meter will appear on the right side of the HUD when you are getting low on fuel, it will start flashing when your fuel level gets dangerously low. The fuel is numerically displayed on the bottom right corner of the HUD.

        Lock
            The name of the player you have currently locked on is shown on the top of the HUD. The distance and bearing to that same player is visualized by a dot where placement of the dot gives the direction, and the size of the dot gives the distance. The dot will be filled if the player is not on the same team as you. The distance to the player also numerically displayed on the top right corner of the HUD, it is measured in `blocks'.

        Velocity
            (Optional) The position of the HUD changes with the current velocity. The distance from the center of your screen is proportional to your velocity. Moving to the top moves the HUD to the bottom. In addition to the moving HUD, you can display a line from the center of the HUD to the center of your ship. Both indicators can be combined or used exclusivly (see discussion about Xresources below).

        Score messages
            Relevant score information is shown below the HUD, as well as on the game field.

        Time left
            The amount of time the game will last if the the server was started with a time limit. This is displayed in the upper left corner of your HUD.
                Between the radar and the Rating list there are three push buttons:

                    Quit
                        Exits the game and the program.

                    About
                        Pressing the About button will popup a three page help window. It explains in short the functionality of all the items you may encounter together with a graphical depiction of them.

                    Menu
                        The Menu button pops up a pull down menu with the following buttons:

                        Keys
                            Will popup the Keys window, which contains a list of all the X keysyms that have one or more xpilot actions bound to them.

                        Config
                            Changes the Rating list into a window with a list of most of the options. The options can be changed interactively. Pushing the Save configuration button will save the options and the key bindings to the .xpilotrc file in your home directory.

                        Score
                            Displays the players and their scores in the Rating list window.

                        Player
                            Lists the players with their login name and their host address in the Rating list window.

                        MOTD
                            Displays the Message Of The Day if the server has one available.

GAME CONCEPTS
The game objective varies as the server (xpilots(6)) is very configurable. However, below you will find short descriptions of some of the main concepts of the game.

  Gravity
All objects in the game are affected by gravity - that is, they will accelerate in the direction the gravity is strongest. The strength and direction of the gravity is user configurable (see xpilots(6)), and can even be set to 0. Some objects affect the gravity in a limited area, these are called gravs and they exist in miscellaneous types (attractive, repulsive, clockwise, anti-clockwise). Gravs are shown as red circles with some symbol inside which is different for each type of grav. (For more information on how the affect the gravity, see xpilots(6).)

  Wormholes
Wormholes are shown as red rotating circles. They will `teleport' you to another place in the world. Generally, when you go through a wormhole, you'll come out at the nearest wormhole in the direction you were travelling. Some wormholes are enter-only and some are exit-only. The exit-only ones are invisible. Passing through a wormhole will make you visible for a while if you were cloaked.

  Fuel
You will also have to worry about your fuel level as most equipment use fuel/energy and some even work better the more fuel you have. You may gain fuel by picking up special `fuel cans' (see bonus items section) or refueling at a refuel station. Refuel stations may be found in blocks in the world, they differ from standard background blocks in that they have a red/black F in them, and they are partly or completely filled with red. The amount of red determines how much fuel the station has at available for you. To refuel, you must hit the keyRefuel key (see controls section). Fuel takes up mass and will also determine how big the explosion will be when (sorry, `if' :) you meet your destiny.

  Combat
There are two different and mutually exclusive modes which have greatly different objectives: combat mode and race mode. The most extensive is the combat mode, which also happens to be the default. Here your main objective is to get as high a rating as possible by `blasting away' on enemy fighters (human or robot controlled) and cannons. All will naturally fire back at you, so you will also need some nifty piloting skills and/or some heavy equipment to really enjoy living. Extra weapons are explained in the bonus items section.

  Race
In race mode, your objective is to fly as fast as you can through a specified route. This is done by passing checkpoints in a specified order. The finish is reached after three laps. The next checkpoint is always visible on the radar.

  Team play
Team play is useful in combination with combat mode. It is different from straight combat mode in that players on your own team are not considered enemies. There are some additional objectives too. You can gain points if the map you are using have targets or treasures. The main difference is that you get points by blowing up an enemy's target using shots or mines. A shot will only damage a target and if the target is completely damaged then the next shot will blow it up. A mine will immediately destroy a target. Two missile hits will also destroy a target. Enemy treasures have to be stolen from the enemies and dropped on your own treasure. You pick up a treasure by using keyConnector when flying nearby the enemies treasure. This will attach the treasure to your ship with a strong rubber band. Now you have to move your ship away from the treasure while holding the keyConnector down. When you reach a certain distance the rubber band will be drawn in a sollied line. This means that the treasure is attached to your ship. It is possible (in emergency situations :) to detach the enemy treasure by pressing keyDropBall, but this will of course not gain you or your team any points. Certain maps may configure targets as passable by team members, in which case they can act as wall shields for team bases. Provided that teamImmunity: yes is set on the map, your teammates will appear as blue ships, and so will their shots. With teamImmunity you cannot be shot by members of your own team, nor do you bump into or crash with them. The enemy, and the enemy's shots are always white.

  Shields
You may or may not have shields at your disposal, depending on the server options specified. If you have, they are activacted with the keyShield key (see controls section). Generally collisions with other objects (except for debris and sparks) are lethal, but when you are hit by something with your shields up then it will only cost you some fuel/energy. If you didn't have enough fuel then the collision will be lethal again. Having your shields up costs fuel.

  Bonus items
During the game you might encounter blue triangles with red symbols on - these are special bonus items which will make your life easier. As of today, these items include:

    Fuel can
        More fuel/energy.

    Cloaking device
        Makes you invisible for other players, both on radar and on the screen. However, when you are hit by a shot or missile or bounce with another player then you will be temporarily visible again.

    Sensors
        Enables you to see cloakers to a limited extent. Having more sensors improves this.

    Rear cannon
        Extra rear cannon.

    Front cannons
        2 extra front cannons.

    Afterburner
        Your main engine becomes more powerful and uses your fuel more efficiently.

    Rockets
        Pack of rockets. These may be used as smart missiles, heat seeking missiles, or just plain dumb torpedos. Usually these explode on impact with a small debris explosion. However, if enabled, nuclear and/or cluster variants of each may be possible. See the description of keyToggleNuclear, keyToggleCluster and keyToggleModifier.

    Mine
        Pack of mines. Can be dropped as either moving mine (bombing) or stationary mine (mining). Usually these will explode when someone else comes within a few blocks, causing a large debris explosion. However, if enabled, nuclear and/or cluster variants of each may be possible. Mines have a little intelligence and will not explode for the player (or team members) who dropped them. However, the targetting of mines can be effected by ECMs (unless the server option ecmsReprogramMines is false). If you get close enough to a mine, you will be able to sense who the mine is currently programmed by. Mines dropped by different players have a different external appearance -- mines dropped by you or your team show up hollow. Reprogramming does not change the appearance of a mine, so be careful because a hollow mine may not be safe. See the description of keyToggleNuclear, keyToggleCluster, and keyToggleModifier.

    Tank
        Additional fuel tank (perhaps with some spare fuel). As you pick up more tanks, your weight increases and you'll have to compensate by picking up afterburners. You can change which tank is the `active tank', that is the one that fuel is drained from (if this tank is empty, fuel is drained from all tanks). Refueling is quicker with more tanks. To ease filling several tanks in parallel, all the tanks drain into their left neighbours (0<-1<-...<-8); except your active tank, which is watertight (it seems a bit complicated at first, but trust me, you'll get it eventually :-). Tanks don't drain if they reach a certain minimum level (unless of course, you use it as the active tank). When you detach a tank it is the active one that is detached, unless the active tank happens to be your main tank, in which the tank with the highest number is used. The detached tank will have the shape of a ship and will carry your name, it will immediately start thrusting (as long as fuel permits) and will fool all heat-seekers to follow it.

    ECM Electronic Counter Measures. ECM allows you to confuse and re-target smart missiles within a certain range of your ship. When missiles are zapped by ECM, they will become confused for a while and then have a high probability of going after the player who you were locked onto when you used the ECM. The ECM will also cause within a certain range to either explode or be more likely be temporarily be blinded such that they do not explode if you go near them. The closest mine within ECM range may be reprogrammed to be safe for you and your team members. If another ship is within range of the ECM, all it's sensors will freeze for a while and if the ship was cloaked, it will become visible for a while. The ECM is activated by pressing the keyECM key.

    Transporter
        Enables you to steal equipment and energy/fuel from the closest fighter, provided it is within the transporters range. You activate the transporter by pressing the keyTransporter key.

    Laser
        Gives you a laser weapon with limited range. Having more of these increases the range and the repeat rate of the laser subsystem.

    Emergency Thrust
        Gives you a limited amount of super thrusters, equivalent to a full complement of afterburners. With a light ship this is equivalent to hitting hyperspace or warp factor 9.99. Useful for stopping quickly or running away fast from a deadly encounter. The extra thrust capability is toggled on and off by a seperate key and can thus be saved, the amount of time remaining is shown by a status bar below the HUD.

    Autopilot
        Gives you a hover capability. When engaged an `Autopilot' light will flash above the HUD. When engaged the autopilot computer will bring the ship to a hover by the quickest (perhaps not safest) method possible. It will then leave you in a hover, unless in a strong gravity field where your engines cannot cope. Useful for hovering next to a refuel depot.

    Tractor Beam
        Not to be confused with a transporter, this enables you to push or pull the ship you are currently locked onto. The force is mutual, and thus if your ship is lighter than your target you will move more towards him than him towards you. Best used with heavy ships to pull then push annoying players into walls.

    Emergency Shield
        Gives you a limited amount of extra shield power, which prevents any fuel loss from shots, debris, player and wall collisions, missiles, mines, etc. While in use, the ship can smash into walls at any speed and angle without fear of being killed. The extra shield capability is toggled on and off by a separate key and can thus be saved, with the remaining amount of extra shield power being saved for later use. Once toggled on, the extra shield power will take effect and be used only while the normal shields are up. Best used when confronted with cluster mines and missles or deadly cannons.

CONTROLS
The game understands quite some keys, but not all of them are equally important. The following keys are more or less sorted by importance. The name of the keys are also the Xresources you use to redefine them, and the words inside the curly braces {} are their default bindings. See Xresources section below.

    Primary keys
        The primary keys are:

        keyTurnLeft {a}
            Turn left (anti-clockwise).

        keyTurnRight {s}
            Turn right (clockwise).

        keyThrust {right Shift or left Shift}
            Thrust me.

        keyFireShot {return or linefeed}
            Fire normal shot.

        keyShield {space or Caps Lock}
            Raise shield. Must be held down for continuous use.

        keyRefuel {f or left Ctrl or right Ctrl}
            Try to connect to nearest fuel station. Must be held down during refueling.

        keyRepair {f}
            Repair a target.

            Secondary keys
                The following commands are not always available, some require bonus items to have any functionality at all.

                keySelfDestruct {q}
                    Self destruct. At last we managed to include a timer, got rid of all those nasty I'd-rather-die-by-my-own-hands-than-let-you-kill-me-and-get-all- the-points pilots.

                keyIdMode {u}
                    Toggle the ID mode. Instead of the score list it will display the list of players with their real names and computer addresses.

                keyCloak {BackSpace or Delete}
                    Enable/disable cloaking device if available. You will be invisible on both radar and on screen, but beware - the device is not foolproof, it is not cheap on your fuel and the only thing becoming invisible is your ship, i.e. the exhaust-flames will still be visible.

                keySwapSettings {Escape}
                    Toggle between two different settings. You'll probably want more power and a larger turn rate in combat than when you're doing some critical maneuvering.

                keyDropMine {Tab}
                    Drop a proximity mine. The mine will detonate after a certain amount of time (quite large actually) or when a foe comes too near.

                keyDetachMine {bracketright}
                    Drop a moving mine - that is, a bomb.

                keyDetonateMines {equal}
                    Detonate the mine you have dropped or thrown, which is closest to you.

                keyEcm {bracketleft}
                    Fire an ECM pulse.

                keyChangeHome {Home or h}
                    Change home base. You will need to be landed on the base of your choice. (The Home key is located just right of the Return key on most HP-keyboards.) These keys are convenient for HP keyboards, also somewhat adapted to SUN keyboards.

                keyTankNext {e}
                    If you have additional tanks, the current tank will be the next tank.

                keyTankPrev {w}
                    If you have additional tanks, the current tank will be the previous tank.

                keyTankDetach {r}
                    Detach the current tank (or the last additional tank). Heat-seeking missiles will hopefully follow this tank.

                keyPause {p or Pause}
                    Park or paused hover mode - you can only park while you're landed on your own home base, and when you park, you cannot rejoin the game until the P has stopped blinking (to prevent users from using this option to run away from a battle). If you are not near your base and you are travelling very slowly the ship will be brought to a standstill on autopilot and cannot be unpaused until the `Autopilot' light stops blinking.

                keyFireMissile {backslash}
                    Fire smart missile if available. The missile will home onto the player that you have currently locked on. You must have a clear lock on a player for this to work. Requires lock.

                keyFireHeat {semicolon}
                    Fire a thrust controlled missile. Works like a smart missle, but is faster and ECM isn't able to confuse it. Needs the thrust for navigating.

                keyFireTorpedo {quoteright}
                    Fire a missile without flight control. It runs very fast in shot direction.

                keyFireLaser {slash}
                    Fires a laser weapon in the direction you are pointing. Lasers have limited range and use a lot of fuel, but they are instantaneous and therefore much more deadly than normal shots. The precise electronics of lasers can be irretrivially damaged by the high energy interference generated by enemy ECMs.

                keyToggleNuclear {n}
                    Pressing this key will toggle through the following indicators on your HUD (bottom left), only if nuclear weapons are allowed;

                    N   All missiles or mines launched from now are limited nuclear weapons.

                    FN  All missiles or mines launched from now are full (or fusion) nuclear weapons. Pressing the key again clears the nuclear weapons mode.
                                You must have eight or more missiles, or four or more mines to launch a nuclear missile or mine, and perhaps enough fuel as well. If you do not a message will be displayed at the bottom of the game area explaining why and the weapon will not be fired. Firing a full (or fusion) nuclear weapon completely depletes your stock of that weapon, limited nuclear weapons will deplete your stock by eight missiles or four mines. A nuclear missile or mine fired will have a mass and explosive power equal and usually greater than the total number that were used. Nuclear torpedos are very fast, and all nuclear weapons explode violently (this may freeze the server momentarily). After firing a one off nuclear weapon, the `n' indicator is cleared.

                                keyToggleCluster {c}
                                    Pressing this key will toggle the following indicator on your HUD (bottom left), only if cluster weapons are allowed;

                                    C   All missiles or mines launched are cluster weapons.
                                                Cluster weapons explode differently from normal weapons. The explode with a slower moving shower of killing shots and not debris, which may kill or deplete shields just like a normal shot fired by your self. Thus, since cluster debris is deadly to yourself, you should be careful when firing such a weapon. After firing a one off cluster weapon, the `c' indicator is cleared. A cluster weapon will also use an almost equivalent amount of fuel as if you had fired the shots using your cannon, and thus large cluster explosions will use large amounts of fuel. If you do not have enough fuel a message saying so will be displayed at the bottom of the game area and the weapon will not be launched.

                                                keyToggleImplosion {i}
                                                    Pressing this key will toggle the following indicator on your HUD (bottom left), only if modifiers are allowed;

                                                    I   All mine and missile explosions will be implosions instead.

                                                                keyToggleVelocity {v}
                                                                    Pressing this key will toggle through V1 through V3 and to no modifier in turn. It affects the speed of nuclear and/or cluster explosions, higher modifier numbers produce lower explosion velocities, and thus for the most effective nuclear cluster explosion a V2 or V3 modifier should be used.

                                                                keyToggleMini {x}
                                                                    Pressing this key will toggle through X2 through X4 and then no modifier in turn. The number shows how many miniture mines or missiles will be fired for every key press. The sum total damage and cost of using miniture weapon is equivalent to a normal weapon of that type.

                                                                keyToggleSpread {z}
                                                                    Pressing this key will toggle through Z1 through Z3 and then no modifier. The higher the number the closer the spread of fire for minature weapons, it also affects the spread of wide and rear shots, successively narrowing the stream of bullets such that V3 is a single beam of shots.

                                                                keyTogglePower {b}
                                                                    Pressing this key will toggle through B1 through B3 and then no modifier. The higher the number the less powerful a tractor beam is used, mainly for conserving energy or fine adjustment in pulling somebody around. The power setting also affects the engine to warhead ratio in missiles, a higher setting will cause each missile to have more powerful engines, and thus be much quicker and more maneaverable, but at the cost of a drastically reduced damage capability. However when coupled with other modifiers this can cause severe psychological advantages, consider the effect of trying to outrun four minuture full cluster powered up nuclear smart missiles.

                                                                keyClearModifiers {k}
                                                                    Clears all current modifiers in effect.

                                                                keyLoadModifiers1 {1}
                                                                    Loads the modifiers stored in bank 1, as set by the modifierBank1 resource.

                                                                keyLoadModifiers2 {2}
                                                                    Loads the modifiers stored in bank 2, as set by the modifierBank2 resource.

                                                                keyLoadModifiers3 {3}
                                                                    Loads the modifiers stored in bank 3, as set by the modifierBank3 resource.

                                                                keyLoadModifiers4 {4}
                                                                    Loads the modifiers stored in bank 4, as set by the modifierBank4 resource.

                                                                keyToggleAutoPilot {h}
                                                                    This toggles the autopilot feature. You need atleast one Autopilot item before this will work.

                                                                keyToggleEmergencyThrust {j}
                                                                    This toggles the emergency thrust item. You need at least one emergency thrust item, on first turning this on the item is used up and ten seconds or so of emergency thrust is placed at your disposal. The time is only used up as you thrust, and hitting this key will return you back to normal thrust while conserving the remaining boosted thrust. If you posses both Autopilot and Emergency Thrust items, pressing the Meta or Alt keys will give the equivalent of emergency brakes.

                                                                keyToggleEmergencyShield {g}
                                                                    This toggles the emergency shield item. You need at least one emergency shield item. When first turning on, this item is used up and ten seconds or so of emergency shield power is placed at your disposal. The time is only used up as you use your regular shields, and hitting this key again will return you back to normal shield power while conserving the remaining emergency shield power.

                                                                keyTractorBeam {comma}
                                                                    This will engage any tractor beam items on the player who you hold a lock on, it causes a mutual attractive force between you and them, causing both players to move towards each other.

                                                                keyPressorBeam {period}
                                                                    This will engage any tractor beam items on the player who you hold a lock on, it causes a mutual repulsive force between you and them, causing both players to move away from each other.

                                                                keyTalk {m}
                                                                    Pressing this key will toggle between the talk window being shown below the HUD. If your mouse pointer is outside the window you will still have full control of your ship and pressing the talk key will disappear (the current message will not be lost). If you position your mouse pointer within the window you can type a message using the keyboard, however you ship will no longer respond to key presses. The following special keys are available;

                                                                    Return Linefeed
                                                                        This finishes and sends the message. The talk window is also removed from the screen and the message text cleared.

                                                                    Backspace Del
                                                                        These keys delete the last character.

                                                                    Ctrl-W
                                                                        This deletes the last word.

                                                                    Ctrl-U
                                                                        This deletes the entire line of text.

                                                                    Esc This removes the talk window without clearing the text. This is useful if you are typing a message and something important in the game happens that requires you to control your ship.
                                                                                Messages will usually be sent to every player logged in, including yourself. Messages received will always appear in the bottom of the Game area, and will look like;
                                                                                <<Viper shouts>> Hello world.
                                                                                However you can send messages to individual players or teams by starting the message with the player's name (or enough character from the beginning of their name to make it unique) or team number followed by a colon, and then the message. Just placing a colon at the start of the message will send it to everyone. For example;
                                                                                vip: Hello
                                                                                will send a message to only one player who's name begins the letters vip (the case does not matter).

                                                                                keyToggleCompass {y}
                                                                                    Turns of the HUD compass display.

                                                                                keyLockClose {Select Up}
                                                                                    Will lock onto the closest player if he/she is within range.

                                                                                keyLockNextClose {Down}
                                                                                    Will lock onto the next closest player after the currently locked player.

                                                                                keyLockNext {Next Right}
                                                                                    Will, if possible, lock onto the next player in the game.

                                                                                keyLockPrev {Prior Left}
                                                                                    Will, if possible, lock onto the previous player in the game.

                                                                                keyConnector {Control_L}
                                                                                    Use connector (for the moment, all this is used for is picking up treasures/balls).

                                                                                keyDropBall {d}
                                                                                    Drop the ball if you are carrying it.

                                                                                These keys let you adjust the control sensitivity:

                                                                                keyIncreasePower {KP_Multiply}
                                                                                    Increase engine power.

                                                                                keyDecreasePower {KP_Divide}
                                                                                    Decrease engine power.

                                                                                keyIncreaseTurnspeed {KP_Add}
                                                                                    Increase turn speed.

                                                                                keyDecreaseTurnspeed {KP_Subtract}
                                                                                    Decrease turn speed.

                                                                                keyToggleOwnedItems {o}
                                                                                    Causes all owned bonus items to be shown either constantly or for a brief period after they change in amount on the HUD.

                                                                                keyToggleMessages {0}
                                                                                    Causes messages to be shown or not shown.

                                                                                keyReprogram {quoteleft}
                                                                                    Reprogram a modifier bank or lock bank.

                                                                                keyLoadLock1 {5}
                                                                                    Load player lock from bank 1.

                                                                                keyLoadLock2 {6}
                                                                                    Load player lock from bank 2.

                                                                                keyLoadLock3 {7}
                                                                                    Load player lock from bank 3.

                                                                                keyLoadLock4 {8}
                                                                                    Load player lock from bank 4.

                                                                                keyToggleRecord {KP_5}.
                                                                                    Toggle recording of session to file (see the recordFile option). This recording can later be reviewed with the xp-replay(6) program

                                                                                keyPointerControl {KP_Enter}
                                                                                    Toggle mouse pointer control.

                                                                                keySelectItem {KP_0 KP_Insert}
                                                                                    Press repeatedly to select an item to drop. A small rectangle will be drawn around the item you can drop. Use the keyLoseItem key to actually drop the item. Note that you cannot select tanks to drop, tanks can only be released (see the keyTankDetach option).

                                                                                keyLoseItem {KP_Delete KP_Decimal}
                                                                                    Drop the item selected with the keySelectItem key. The server can either delete the item or drop it back into the map depending upon the value of the loseItemDestroys option.

                                                                                keyPrintMessagesStdout {Print}
                                                                                    Print the current messages to stdout.

                                                                                keyTalkCursorLeft {Left}
                                                                                    Move Cursor to the left in the talk window.

                                                                                keyTalkCursorRight {Right}
                                                                                    Move Cursor to the right in the talk window.

                                                                                keyTalkCursorUp {Up}
                                                                                    Browsing up in the history of the talk window.

                                                                                keyTalkCursorDown {Down}
                                                                                    Browsing down in the history of the talk window.

                                                                                    Mouse control
                                                                                        There are up to five mouse buttons available to define as keys:

                                                                                        pointerButton1 {keyFireShot}
                                                                                            Define which keys are pressed when mouse button one is pressed.

                                                                                        pointerButton2 {keyThrust}
                                                                                            Define which keys are pressed when mouse button two is pressed.

                                                                                        pointerButton3 {keyShield}
                                                                                            Define which keys are pressed when mouse button three is pressed.

                                                                                        pointerButton4 {}
                                                                                            Define which keys are pressed when mouse button four is pressed.

                                                                                        pointerButton5 {}
                                                                                            Define which keys are pressed when mouse button five is pressed.

X RESOURCES
At startup xpilot will look for X resources in several places. First it looks in the INSTLIBDIR (as defined during compilation, mostly as something like /usr/local/games/xpilot/lib/) for the file named xpilot. After that it looks for more resources in /usr/lib/X11/$LANG/app-defaults/xpilot, $XUSERFILESEARCHPATH/xpilot, $XAPPLRESDIR/$LANG/xpilot, $HOME/app-defaults/$LANG/xpilot, resources set using xrdb or else $HOME/.Xdefaults, host specific resources in the file pointed to by $XENVIRONMENT or else in $HOME/.Xdefaults-hostname and finally in $HOME/.xpilotrc. If the LANG environment variable is undefined or if that file doesn't exist then it will look for the file as if LANG had been undefined. Resources defined in files listed later will override resources in files listed earlier. If the XPILOTRC environment variable is defined then its value is used instead of $HOME/.xpilotrc. All of these resources can be overridden by their corresponding command line arguments.

    name
        Nick name of your player.

    team
        Preferred team number.

    port
        Set the port number of the server. Almost all servers use the default port, which is the recommended policy. You can find out about which port is used by a server by querying the xpilot Meta server.

    power
        Primary power setting of your engine. Primary in this context means that it is part of the default setting, secondary means the other setting (two different settings are available, pressing Esc will switch between them). You may change "sensitivity" of your ship by adjusting these parameters. Often you would like one setting to be more "rough" than the other - one setting for fine maneuvering and one for racing. (Default 45.0)

    turnSpeed
        Primary turnspeed setting of your ship. (Default 30.0)

    turnResistance
        Primary turnresistance setting of your ship. This value determines how fast your ship will stop rotating, i.e. the rotating speed of your ship is set equal to itself multiplied by this value. Obviously the value has to lie between 0.0 (exclusive) and 1.0 (inclusive). (Default 0.12)

    altPower
        Secondary power setting of your engine. (Default 35.0)

    altTurnSpeed
        Secondary turnspeed setting of your ship. (Default 25.0)

    altTurnResistance
        Secondary turnresistance setting of your ship. (Default 0.12)

    shipShape
        Define the ship shape to use. Because the argument to this option is rather large (up to 500 bytes) the recommended way to set this option is in the .xpilotrc file in your home directory. The exact format is defined in the file README.ships in the xpilot distribution. Note that there is a nifty tool called editss for easy ship creation. See the xpilot FAQ for details. See also the shipShapeFile option.

    shipShapeFile
        An optional file where shipshapes can be stored. If this resource is defined and it refers to an existing file then shipshapes can be referenced to by their name. For instance if you define shipShapeFile to be /home/myself/.shipshapes and this file contains one or more shipshapes then you can select the shipshape by starting xpilot as: xpilot -shipShape myshipshapename Where "myshipshapename" should be the "name:" or "NM:" of one of the shipshapes defined in /home/myself/.shipshapes. Each shipshape definition should be defined on only one line. All characters up to the first left parenthesis are ignored.

    fuelNotify
        The limit when the HUD fuel bar will become visible. (Default 500.0)

    fuelWarning
        The limit when the HUD fuel bar will start flashing. (Default 200.0)

    fuelCritical
        The limit when the HUD fuel bar will flash faster. (Default 100.0)

    showHUD
        Should the HUD be on or off. (Default true)

    verticalHUDLine
        Should the vertical lines in the HUD be drawn. (Default false)

    horizontalHUDLine
        Should the horizontal lines in the HUD be drawn. (Default true)

    speedFactHUD
        Should the HUD me moved, to indicate the current velocity. Negativ values will inverse the moving of the HUD. (Default 0.0)

    speedFactPTR
        Uses a red line to indicate the current velocity. On edge of the line is the center of the ship. The other end is moved in the same way, as the HUD, if speedFactPTR is set.

    charsPerSecond
        This determines the speed in which messages are written, in characters per second.

    markingLights
        Should the fighters have marking lights, just like airplanes?

    sparkProb
        The chance that sparks are drawn or not. This gives a sparkling effect. Valid values are in the range [0.0-1.0]

    sparkSize
        Size of sparks in pixels.

    selectionAndHistory
        Provide cut-and-paste for the player messages and the talk window and a `history' for the talk window.

    -maxLinesInHistory
        Number of your messages saved in the `history' of the talk window. `History' is accessible with `keyTalkCursorUp/Down'. Valid values are in the range [1-128]. The default value is: 32.

    shotSize
        Size of shots in pixels.

    teamShotSize
        Size of team shots in pixels.

    showShipName
        Should all ships have the name of the player drawn below them.

    showMineName
        Should the name of the owner of the mine be drawn below the mine.

    showMessages
        Should messages appear on screen.

    messagesToStdout
        Do you want messages to be sent to standard output? 0: No, 1: Only player messages, 2: Player and status messages.

    maxMessages
        The maximum number of messages to display.

    showItems
        Should owned items be displayed permanently on the HUD, or only when their amount has changed?

    showItemsTime
        The time in seconds to display item information when it has changed and the showItems option is turned on.

    clock
        Display a small digital clock.

    clockAMPM
        Displays clock in 24hr or 12hr format. (Default: False)

    noLocalMotd
        Do not display the local Message Of The Day.

    autoServerMotdPopup
        Automatically popup the MOTD of the server on startup.

    toggleShield
        Have the shield status be changed only by a key press and ignore the key release.

    autoShield
        When this option is on then shields are lowered automatically when firing a weapon or dropping a mine. After the firing the shields are raised again too.

    shieldDrawSolid
        Are shields drawn in a solid line. Not setting a value for this option will select the best value automatically for your particular display system.

    fuelMeter
        Determines if the fuel meter should be visible. This meter visualizes your fuel level in a different way than fuelGauge does.

    fuelGauge
        Determines if the fuel gauge should be visible. See fuelMeter.

    turnSpeedMeter
        Should the turnspeed meter be visible at all times. (Default false)

    powerMeter
        Should the power meter be visible at all times. (Default false)

    backgroundPointDist
        Specifies the block distance between points drawn in the background, used in empty map regions. 8 is default, 0 means no points.

    backgroundPointSize
        Specifies the size of the background points. The default is 2, 0 means no points.

    titleFlip
        Should the title bar change or not. Some window managers like twm may have problems with flipping title bars. Hence this option to turn it off.

    slidingRadar
        If the game is in edgewrap mode (see xpilots(6)) then the radar will keep your position on the radar in the center and draw the rest of the radar around it. This requires very good X performance and a pretty fast workstation. Default is off.

    outlineWorld
        Draws only the outline of all the blue map constructs.

    filledWorld
        Draws the walls solid. Needs a fast graphics system.

    texturedWalls
        Draws the walls filled with a texture pattern. See also the wallTextureFile option. Be warned that this needs a very fast graphics system.

    wallTextureFile
        Specify a XPM format pixmap file to load the wall texture from.

    texturePath
        Optional search path for XPM texture files. This is a list of one or more directories separated by colons.

    packetSizeMeter
        Turns on a meter displaying the maximum packet size of the last few seconds.

    packetLostMeter
        Turns on a meter displaying the percentage of packets lost in the last second due to network failure (overload).

    packetDropMeter
        Turns on a meter displaying the percentage of packets dropped due to your display not being able to keep up with the rate at which the server is generating frame updates. If possible lower the frame update rate of the server with the -fps option.

    receiveWindowSize
        Specifies how big the receive window should be. See NOTES below.

    sounds
        Specifies the sound file. (Only if sound is enabled.)

    maxVolume
        Specifies the volume to play sounds with, where 0 turns off sound. (Only if sound is enabled.)

    audioServer
        Specifies the audio server to use. (Only if sound is enabled.)

    geometry
        Specifies the geometry to use like: -geometry 1280x1024+0+0.

    keyboard
        Set the X keyboard input if you want keyboard input from another display. The default is to use the keyboard input from the X display.

    recordFile
        An optional file where a recording of a game can be made. If this file is undefined then recording isn't possible. See the keyToggleRecord option for how to make recordings.

    visual
        Specifies which visual to use. You can see which visuals your display supports by running: xpilot -visual list.

    mono
        Turns on mono display type.

    colorSwitch <true/false>
        Tells xpilot to use a color switching display technique or not. Default is true if your display hardware has enough colors available.

    maxColors
        Tells xpilot how many colors you want it to use. Default is 4, with a maximum of 16. Valid values are 4, 8 and 16.

    targetRadarColor
        Which color number to use for drawing targets on the radar. Valid values all powers of 2 smaller than maxColors.

    hudColor
        Specifies which color index to use for drawing the HUD. The value for this option is a number ranging from 1 till the maxColors value.

    hudLockColor
        Specifies which color index to use for drawing the lock dot on the HUD. The value for this option is a number ranging from 1 till the maxColors value.

    wallColor
        Specifies which color index to use for drawing the walls. The value for this option is a number ranging from 1 till the maxColors value.

    sparkColors
        A list of color numbers to use for drawing sparks and debris of varying temperature.

    gameFont
        The font used on the HUD and for nearly all text part of the game field.

    messageFont
        The font used for messages displayed in the bottom left corner of the game field.

    scoreListFont
        The font used on the score list. Must be non-proportional.

    buttonFont
        The font used on all buttons.

    textFont
        The font used in the help and about windows.

    talkFont
        The font used in the talk window.

    motdFont
        The font used in the MOTD window and in the key list window. This must be a non-proportional font.

    black
        Specifies the color to use for black. Default is #000000 which is equivalent to specifying Black.

    white
        Specifies the color to use for white. Default is #FFFFFF which is equivalent to specifying White.

    blue
        Specifies the color to use for blue.

    red Specifies the color to use for red.

    color0
        Specifies the color to use for color 0. One can specify colors up to color15 this way. Black, white, blue and red are equivalent to color0, color1, color2 and color3 respectively.

INVOCATION EXAMPLES
The simplest invocation of the hand-shake program is to just type:

    xpilot

This will force the program to search after a server on all the machines on your attached network. Say you know where the server is, and you don't want to be prompted (handy in scripts etc.), you may type for example:

    xpilot -join lglab08 where lglab08 is the name of the host running the server.

In the examples above your name would be your login name. Let's say you want to be really cool and your login name is gudmari, well - you're in loads of trouble if you don't know about the -name option;

    xpilot -name FireEater

will fix the problem for you.

NOTES
For credit list, see the provided CREDITS file. If the client crashes, you will be without autorepeat on your keyboard. To re-enable autorepeat, issue this command:

    xset r

Please also note that xpilot can be addictive, and strenous for both you and your keyboard. We take no responsibility. :) There is a meta server running on meta.xpilot.org, port 4400, into which all servers registers. This way you can easily check if there are any servers running nearby. To use it, try:

    telnet meta.xpilot.org 4400 help list

Or:

    telnet meta.xpilot.org 4401

If you experience any problems with `jerkiness', you should try to adjust the receiveWindowSize Xresource. The problem may be that your X server can't display as fast as the xpilot server is generating new frame updates. So another option is setting the number of frames for the server to a lower number or get a faster X display system :) The receiveWindowSize resource allows you to tune the buffering of frame updates a little. When set to one then there is no buffering and xpilot will just read the next frame and display it. When the display is slower than the xpilot server this may give all sorts of problems like lagging behind and lack of keyboard control. When you set receiveWindowSize to two then xpilot will always try to read a second frame from the network and if this succeeds it will discard the oldest frame. A better number for receiveWindowSize is three which will discard the oldest frame out of three and therefore be less subject to small changes in network delivery times. If your display is fast enough and can keep up with rate at which the server is generating frames then specifying a value bigger than one will not result in dropping frames, but rather will it be a buffer for small changes in network performance and computer load. The maximum value of receiveWindowSize is four.

ENVIRONMENT
If XPILOTRC is set then its value is used instead of $HOME/.xpilotrc to find the file containing the xpilot resources. XPILOTUSER and XPILOTHOST set the loginname and hostname as reported to the xpilots server.

AUTHORS
XPilot was developed by Bjørn Stabell <bjoern@xpilot.org> and Ken Ronny Schouten <ken@xpilot.org> from the University of Tromsø, Bert Gijsbers <bert@xpilot.org> from the University of Amsterdam, and Dick Balaska <dick@xpilot.org> from BuckoSoft.COM.

BUG REPORTS
The product is seemingly stable, so bug reports are highly appreciated. Send email to xpilot@xpilot.org and we will see what we can do. We merely ask that you remember to include the following information:

    • The platforms the bug occurs on
    • What kind of display you have (depth, color, type)
    • Which Xresources you're using.
    • The full version of xpilot, i.e., 4.5.5
    • What the bug looks like (symptoms)
    • When the bug usually occurs

        We would also like to receive changes you do to make the code compile on your machine (we would NOT like to receive the whole program translated to K&R C, keep it ANSI :) If you don't have an ANSI compiler, there are several utilities which may help you de-ANSI-fy the code (unproto, unprotoize etc), but a better solution will be to install the GNU C compiler on your system.

COPYRIGHT & DISCLAIMER
xpilot is Copyright © 1991-2002 by Bjørn Stabell, Ken Ronny Schouten, Bert Gijsbers & Dick Balaska. xpilot comes with ABSOLUTELY NO WARRANTY; for details see the provided LICENSE file.

FILES
/usr/local/share/xpilot/motd
    Message of the day.
/usr/local/share/xpilot/sounds
    File containing the sound to sound-file mapping.

SEE ALSO
xpilots(6), xp-replay(6)