The XEvil 2.X Instruction Manual

Copyright © 1999,2000 Steve Hardt

Last Modified 6/11/2000
Most recent version is at
Visit for downloads, source code, screen shots, and more documentation.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the General Public License for more details.


XEvil is a side-view, single or network-multiplayer, fast-action, kill-everything, game for Windows and UNIX.

You have sinned in life.  Now, you die and go to Hell.  XEvil is the contest that determines your fate in Hell for all eternity.  At the end of a game, you receive one of many possible rankings.  A poor player, for example, may spend the rest of time as "Satan's Earwax Remover", while a good one might achieve a prestigious title such as "VP of Hell Marketing" or even "Lead Software Engineer of Hell".


  1. User Interface
  2. Game Play
  3. Appendix

Part I: User Interface

The XEvil user interface is designed to be as simple and direct as possible.  We're not trying to win any awards for fancy GUI gizmos, we just want to get you to the death-and-gore of XEvil itself.

UNIX and Windows Differences

Although game play, graphics, networking, and pretty much everything else is the same between the UNIX and Windows versions, the user interfaces are quite different.  From here on, we will mark sections that apply only to UNIX or only to Windows with with "UNIX:" or "Windows:", respectively.

Menu Bar

Options Dialog
Windows Options Dialog

Graphics Options

At startup, the XEvil License Agreement Dialog appears and gives you several graphics options.  XEvil is designed to run on a variety of machines, with widely varying graphics capabilities.  So, most of these options are meant to allow fast machines to use all the whiz-bang graphics features, while still allowing slow machines to play full speed (with fewer features enabled).


  1. [Large Viewport] chooses between large- and small-viewport modes.  Large-viewport mode is the default, playing XEvil in full resolution.  Small-viewport plays XEvil at half-resolution (similar to XEvil 1.x), shrinking all graphics to half normal size.  Two uses: With small-viewport, you can fit two XEvil windows on one display to play two players on the same machine.  And, small-viewport mode is much faster on machines with slow graphics.
  2. [Smooth Scroll] chooses between smooth-scroll and discrete-scroll modes.  In smooth-scroll, your character is always at the center of the screen, with the world scrolling to follow you.  However, smooth-scroll requires a machine with very fast graphics, so discrete-scroll is the default.  In the latter, the viewport shifts in discrete chunks, only scrolling when your character gets to the edge of the screen.
  3. Turn off [Draw Background] to speed up smooth-scroll mode.  Instead of the appropriate world-background, the background will be solid black.  This switch does nothing in discrete-scroll mode.
  1. [Full Screen] chooses between full-screen and windowed modes.  Full-screen is generally faster, running in 800x600, 256-color mode.  But, windowed mode allows you to easily switch between XEvil and other applications.
  2. Turn off [Draw Background] to speed up drawing.  Instead of the appropriate world-background, the background will be solid black.


XEvil uses keyboard controls, 9 keys for movement, 3 keys each for weapons and items, and one key for network chat.  We use the same default keyboard layout on both UNIX and Windows to assist multi-platform users.   The default setting uses the 9-key number pad for movement, the "insert-home-pageup-delete-end-pagedn" block of six keys for weapons and items, and the space bar for network chat.

For Walking characters, press right-left to walk.  Up and up-diagonals to jump, down and down-diagonals to duck and crawl.  Middle key to stop moving.
For Sticky (wall-crawling) characters, press the appropriate diagonal towards the wall to climb, away-diagonal to jump off the wall.
Press up-down to climb ladders.  If you are jumping through the air, you can grab a ladder by pressing up or down while passing over the ladder.
For Flying characters, press the direction you would like to fly.  Middle key to stop in place.

To fire a weapon, or attack hand-to-hand, hold down the weapon-use key and tap the direction you would like to attack.  Movement will not be affected as long as the weapon-use key is held down.  Thus, you can move in one direction while firing in another.
Tap weapon-change to cycle through available weapons, and weapon-drop to drop your current weapon.
Item use, change, and drop keys allow you to use items, cycle through available items, and drop items, respectively.

Network chat is described in the Network XEvil section.


The [Settings | Keyboard Controls...] menu activates the Keyboard Controls Dialog:
Windows Keyboard Controls
Click on a button to set the key for that command.  On Windows, keyboard controls are saved persistently between sessions.


Keyboard controls set via user interface are not saved between sessions.  However, they can be set permanently via X Resources.

To pause, hit F1, then any key to resume.

UNIX: Viewing current keyboard controls

Cllick the [Show Controls] button on the menu to view the current keyboard controls.
UNIX Show Controls
A few tricky things.  On UNIX, you can have a two player game on a single machine, by sharing the same keyboard.  The first player uses the right side of the keyboard, the second player the left.  If you are playing one-player, or are connecting to a server as a client, you only need to think about keys on the right side.

Another tricky things is that UNIX XEvil allows you to map one-or-two different keys to each function.  Here's why.  The default left keyboard mapping use nine-keys centered on the 'L' key.  Put your right hand on the keyboard with middle finger on 'L' and you'll notice that up-right and down-left both have two nearby possible keys.  So, XEvil allows you to hit either 'P' or '[' for up-right and either 'M' or '<' for down-left.  In these cases, two different keys are mapped to the same function.

And, yet another tricky thing (YATT) is the X Window System key naming convention.  Most of the key names, e.g. "period" or "comma", are obvious.  But, some are more obscure.  "Prior" and "Next" generally mean "Page Up" and "Page Down".  Anything starting with "KP_" means a key on the numeric keypad.  If you are really stuck, read "/usr/include/X11/keysymdef.h" or the "X" man pages.

UNIX: Setting Keyboard Controls via User Interface

Click the [Set Controls] button to change the keyboard controls.
UNIX Set Controls
The dialog will ask you, in order, for all keyboard controls.  Click on the Set Controls Dialog, and type in the requested keys.  Now, there is the whole two-keys-to-one-function thing described above, so you have the option to enter two different keys for each function.  But, most of the time, you will just hit the same key twice.

Changes take effect immediately, so you don't always have to cycle through all controls.  In particular, if you are playing one-player, dismiss the dialog after setting controls for the right side.  To dismiss the dialog, click the close-window button (usually) in the upper-right corner, or unselect [Set Controls] from the XEvil menu.  If you type an incorrect key, dismiss the dialog and start again.

UNIX: Setting Keyboard Controls via X Resources

If you're sick of going through the [Set Controls] dialog every time you run XEvil, set the controls once via X Resources (part of the X Window System). Generally, you add lines to the ".Xdefaults" or ".Xresources" file in your home directory.  See the man pages for X(1) and xrdb(1) to learn more about setting/viewing X resources.

Remember, there are separate sets of controls for the right and left sides of the keyboard.  If you are playing one-player mode, or running as a client connecting to a server, you only need think about the right hand set.  Also remember, up to two keys can be mapped to each function.

The easiest way to show this is with a few examples. The possible values for each function are the keys in "/usr/include/X11/keysymdef.h" with the "XK_" prefix stripped, e.g. "XK_asterisk" becomes "asterisk".

"XEvil.right_weapon_use:    Insert"
The keysym for weapon-use on the right side controls is the insert key.

"XEvil.right_left:    KP_Left"
The keysym for move-left on the right side controls is the left-arrow key on the numerical keypad ("KP_" means numerical keypad).

"XEvil.left_up_right_2:    bracketleft"
The second keysym for move-up-right on the left side controls is the left-square-bracket.

A sample resource file.  Further examples are in the "x11/app-defaults" directory in the XEvil source distribution.

! XEvil resources for a sun4 SPARC station 1
! Right side of keyboard
XEvil.right_center:                     F31
XEvil.right_right:                      Right
XEvil.right_down_right:                 F35
XEvil.right_down:                       Down
XEvil.right_down_left:                  F33
XEvil.right_left:                       Left
XEvil.right_up_left:                    F27
XEvil.right_up:                         Up
XEvil.right_up_right:                   F29
XEvil.right_weapon_use:                 F21
XEvil.right_weapon_change:              F22
XEvil.right_weapon_drop:                F23
XEvil.right_item_use:                   F24
XEvil.right_item_change:                F25
XEvil.right_item_drop:                  F26
! Left side of keyboard
XEvil.left_center:                      l
XEvil.left_right:                       semicolon
XEvil.left_down_right:                  slash
XEvil.left_down:                        period
XEvil.left_down_left:                   m
XEvil.left_down_left_2:                 comma
XEvil.left_left:                        k
XEvil.left_up_left:                     i
XEvil.left_up:                          o
XEvil.left_up_right:                    p
XEvil.left_up_right_2:                  bracketleft
XEvil.left_weapon_use:                  a
XEvil.left_weapon_change:               s
XEvil.left_weapon_drop:                 d
XEvil.left_item_use:                    z
XEvil.left_item_change:                 x
XEvil.left_item_drop:                   c

Game Style

There are six "Styles" of XEvil game play, controlled by the "Game Style" toggle buttons. You can further specify the type of game by setting values for [Human Players], [Enemy Players], [Regenerate Enemies], and [Cooperative].  Depending on the Game Style setting, certain of these controls will be ghosted out because their values are unused.

Network XEvil

Quick Network Setup

Currently we don't have the resources to maintain a dedicated XEvil server for the whole world to use.  This means that if you want to play XEvil over a network, you have to find people to play against yourself.  One way is by using the XEvil Network Games Mailing List.  Details on running XEvil as client or server are below, but here's a quickie.

Example:  Two Windows users playing against each other.

  1. Person 1:  Select the "Network | Run as Server..." menu.  Click "OK".
  2. Person 2:  Select "Network | Connect to Server..." menu.  Enter the hostname or IP address of the other machine and click "OK".

Recruiting Blurb

We are looking for someone to run a dedicated XEvil server and to organize network games.  The person must have a machine running 7 days/wk-24 hrs/day and with a static IP address.  Preferably someone willing to set up a web page with info about the server.  Contact if interested.  Similarly, someone could set up an IRC channel, or newsgroup to organize network games.

Introduction to Network XEvil

For ease of use and distribution, the XEvil client, server, and standalone games are bundled in the same executable.

XETP, the XEvil Transport Protocol, is platform independent. You can connect Windows clients to UNIX servers and vice versa.  Even though UNIX XEvil has no sound (yet), Windows clients connected to UNIX servers will get correct sound effects.  XETP works over standard TCP/IP connections (using UDP and TCP packets), so XEvil can be played over the internet, a LAN, or a dialup connection.

Network XEvil provides a simple chat mode, facilitating taunts and other important modes of inter-player communication.  On either Client or Server, press the chat key (default is spacebar), enter your message, then "Enter" to send the message or "Esc" to abort the message and return to normal controls.


You can run an XEvil client from the user interface at run time.  Select the "Network | Connect to Server..." menu.  Enter the hostname or IP address of the server along with the port number (if different than the default port 6066).  Optionally, enter a player name.  If you do not choose a player name, your name will be chosen randomly each game.  Hit "OK" to connect.

Use the command line options described below.

Windows and UNIX:
You can run an XEvil client from the command line.  Type "xevil -connect <server_name> {server_port}" to connect to a specific server, optionally specifying the server port number, e.g. "xevil -connect".

While connected, you can hit [New Game] to restart.  The server will end your old game and start you with a new character.


The server has the option to either be a regular "Player" in the game, or to run in "Observer" mode with a scrollable window watching the action.  "Player" mode makes it very easy to set up, say, two player games.  One machine runs the server, the other connects to it, done.

You can run an XEvil server from the user interface at run time.  Select the "Network | Run as Server..." menu.  You may change the port number to run on a port other than the default, 6066.  Choose either "Player" or "Observer" mode and hit "OK".  Clients can  now to connect to your machine.

Use the command line options described below to run a UNIX XEvil server.

Windows and UNIX:
You can run an XEvil server from the command line.  Type "xevil -server {port_number}" to run an XEvil server in "Player" mode, optionally specifying a server port number.  Add the "-observer" flag to run in "Observer" mode.

Windows XEvil provides a dedicated server mode, with a small window to control game options and view server logs.  Dedicated-Server mode performs no drawing, so inflicts little slowdown on other applications.
Run "xevil -server -dedicated" from the command line.  Dedicated servers are always in "Observer" mode.

UNIX XEvil provides a non-graphical command-line-only server interface.  This allows XEvil servers to be run in startup scripts or remotely via telnet when no graphical interface is available.
Run "xevil -server -no_ui" from the command line.  Command-line servers are always in "Observer" mode.

You can record a server log by redirecting the output to a file, say "log.txt".
"xevil -server -no_ui > log.txt"
"xevil -server -no_ui | tee log.txt"
The second form will copy the log to "log.txt" while still displaying it on the command line.

Remote Server Monitoring

You can remotely monitor an XEvil server with the "serverping" utility program.  serverping queries a server for certain information, including the list of players on the server, and their kills.  serverping can be used to make web pages that actively monitor XEvil servers.

Currently the only way to obtain serverping is to download the XEvil source code and compile it on a UNIX machine.  serverping will be generated in the same directory as the XEvil executable.  I haven't tried building serverping.cpp on a Windows machine, but it is all cross-platform code and shouldn't be too hard to make it work.


There are four levels of difficulty, "Trivial", "Normal", "Hard", and "Bend Over".

You will be prompted for the level of difficulty at the start of the first game.  Press the key for the desired level of difficulty.  Or, hit space or click a mouse button as a shortcut for "Normal".

The [Settings | Keyboard Controls...] menu will activate the Difficulty dialog.  Changing level of difficulty will not effect a game currently in progress.  Start a new game to play with the new level of difficulty.

Game Speed

The [Speed] control in the upper-right corner sets the time (in milliseconds) between turns, e.g. 40ms implies a frame rate of 25 fps.  A little counter-intuitive in that smaller numbers give higher speeds.  Set [Speed] to zero to play at the max speed supported by your machine.

Move the [Game Speed] slider in the Options Dialog to the right to go faster, left to go slower.

UNIX and Windows:
Run "xevil -speed <speed_in_ms>" to set the exact speed in milliseconds, similar to the UNIX [Speed] control.

If playing a network game, it's best to leave the speed at default.  If a client and server are running at different speeds, the client-side dead-reckoning algorithm will be off, resulting in objects jumping around the screen more than necessary.

Sound (Windows only)

The Options Dialog provides several options for controlling XEvil sound:
  1. Set the volume of the background music with the "Soundtrack" slider.
  2. Set the volume of the sound effects (gunshots, screams, and the like) with the "Effects" slider.
  3. Turn sound on/off altogether with the "Sound" toggle button.
  4. Set background music to play from the built-in MIDI files (default).
  5. Set background music to play random tracks from an audio CD.
In general, changes will take effect when you click "OK" on the Options Dialog.

Sometimes, even with the "Soundtrack" slider all the way up, the MIDI sound is still too quiet.  Two ways to deal with this:

  1. Open the Windows Volume Controls by right-clicking on the speaker icon in the lower-right corner of your screen.  Then crank the "Synth Volume" all the way up.
  2. Turn down the "Effect" volume in the XEvil Options Dialog.  Then increase the master volume on your speakers.

UNIX XEvil has no sound.  But, with the source freely available, I'm sure some industrious soul could write it (hint, hint).

Part II: Game Play


The XEvil World is a randomly generated two-dimensional map composed of walls, floors, ladders, horizontal and vertical movers(elevators), and doors.  The maze algorithm guarantees every character that can at least walk and climb ladders can get from any room to any other room.  Each level randomly chooses one of several graphical "themes",  e.g. a "Mayan" theme, a "Medieval" theme, an "Industrial" theme.


XEvil characters walk, climb ladders, climb on walls and ceilings, fly, use weapons and items, and/or fight hand-to-hand depending on their specific set of abilities.  At the start of each life, you are randomly given one of the characters to play.  One time you may be a "Ninja", next time a "Chopper-Boy". To succeed in XEvil, you need to learn all the major characters.  The XEvil Character Profiles gives a full description of each.

You can build up characters with more powerful weapon and items, with shields, or by earning bonuses like double health, double speed, hellfire powers (light enemies on fire by touching them), or healing powers.  But, life is cheap, and often very short.  A much less pumped character, controlled by a clever and fast opponent, might just find the right weapon/item combination to nail you where you least expect it.

Weapons and Items

Next to the characters themselves, weapons and items are the heart of XEvil gameplay.  We include many of the standard video game weapons and items (hand-to-hand combat, melee weapons, projectile weapons, throwing weapons, shields, MedKit), but also a number of more creative devices (Soul-Swapper, Frog-Gun, Transmogifier, Doppelganger, Dog-Whistle, drugs, Cloak, and heat weapons).  The XEvil Armory lists all the weapons and items in XEvil.

We implemented a system where it is fairly easy to find weapons, but not too easy, and where it is impossible to hoard weapons from other players.  If you pick up a weapon you already have, your character will take the ammunition from the new weapon.  After killing an opponent, you may loot all the weapons and items from the corpse (assuming you didn't blow up the entire area with a Bomb or Grenade).

Don't get too attached to your body, you never know when it might get snatched from under you.  The XEvil Soul-Swapper lets you swap souls between your body and someone else's.  The Soul-Swapper is good for taking over powerful enemies, or getting rid of your current near-death body.  The frog-gun temporarily turns an enemy into a harmless, hopping, little amphibian.  Be sure to catch and nail the critter before he turns back.  The Transmogifier (based on "transmogrify"), randomly turns its user into a different Creature.  It's good if your current body is weak or wounded, or if you just feel like a change.

Doppelgangers and Dog-Whistles give you followers.  Your followers help you out, protecting you and attacking your enemies.  And, you even get the credit for all your followers' kills.  Using a Doppelganger generates a copy of your current body.  It is largely independent, wandering around the world attacking your enemies.  Blowing a Dog-Whistle summons two loyal and obedient Dogs.  Unless ordered otherwise, Dogs follow nearby protecting their master, attacking nearby targets and fetching weapons and items.  You can use the Dog-Whistle to order your Dogs to seek in a certain direction or to return to your side.

XEvil has more drugs than a elementary school playground.  Caffine is the legal drug, keeps you awake and makes you go faster.  No really bad side-effects, although the shaking may make you fall off ladders and such.  Crack and PCP make you faster and stronger.  But, they come with a chance of overdose.  If you do drugs and die, well, you should've listened to Nancy Reagan.  As long as you keep constantly high, feeding your habit with more drugs, you won't suffer the negative effects of the come-down.  If you see your opponents shaking, twitching, and jumping all over the place, be careful, they may be strung out on Crack.

The "Cloak" gives limited invisibility.  The background shimmers in the shape of your character, so only very observant players can see you.  Cloaking effects last for quite a while (not infinite, don't want cowards to hide in the corners forever), but end as soon as you fire a weapon.  Cloak is perfect for ambush attacks.

Now, what would Hell be without fire?  Flame-Throwers, Napalm-Grenades, and Fireballs allow you to have a barbecue with your unwanted guests.  The more you hit 'em, the hotter they get, the longer they burn, and the more damage they take.  Sometimes you can hit someone with enough fire so that after they kill you, they still burn to death.  Vengeance from the grave.  Of course, all Demons and Demonic objects are immune to heat attacks.  "Gee, that tickles."

XEvil has no personal hand-held or built-in teleporters.  I hate games where your quarry magically beams away right before you kill them.  Stationary teleporters are ok.  Doors and teleportation booths set into in the world background move you instantly from one fixed location to another.

Part III: Appendix


The title, "XEvil", reflects the game's early UNIX roots, the X Window naming convention of  applications like XTerm, XClock, XTrek, and XEmacs.  Now, with cross-platform support, the title is read as "XEvil" == "eXtremely Evil", "eXceptionally Evil", "eXcessively Evil", "eXtraordinarily Evil", "eXclusively Evil", "eXquisitely Evil", "eXorbitantly Evil", etc, etc.


The combination of weapons and items in XEvil allows for a number of creative, "classy" kills and strategies, many we never thought of while writing the game.  Here are a few examples:
  1. While an enemy is shooting at you, hit him with the Soul-Swapper.  After switching bodies, his own bullets will kill him.
  2. Drop a Transmogifier on an Alien or some other tough enemy.  It will probably turn him into something easier to kill.
  3. Trigger a Bomb, but don't drop it.  Then soul-swap an enemy.  He will find himself holding the hot-potato when it goes off.
  4. Activate Doppelgangers and Dogs as living shields when being pursued by a really nasty enemy, say a FireDemon.
  5. Drop drugs on your enemies until they die from overdose.
  6. Use a Transmogifier to change bodies when missiles are tracking you.  They will lose the lock-on and fly into a wall.

Command Line Arguments

Throughout the bulk of this manual, we mention command line arguments only when they are especially relevant. Here we give an exhaustive list of all  XEvil command line arguments.

Values in <> are required, values in {} are optional.  Arguments that say (UNIX) or (Windows), are only meaningful for that platform.

UNIX users, of course, are intimately familiar with the command line.  Some Windows users may not be.  On Win 95/98/NT, there are several ways to run a program from the command line.

  1. From the "Start" menu, click "Run...".  In the dialog, type the command line to run XEvil,

  2. e.g. "c:\xevil2.0\xevil <some_list_of_command_line_arguments>"
  3. "Start | Programs | MS-DOS Prompt".  Then type the command line in the MS-DOS window.
  4. Create a shortcut to XEvil.  Right-click on the shortcut icon and bring up the Properties dialog.  Choose the "Shortcut" tab, then add any command line arguments to the "Target" field.  Click "OK", then double click the shortcut to execute.

UNIX and Windows: