Abysmal Engine

An Open Source Ultima Underworld and System Shock Engine


Abysmal Engine Readme


1.    Introduction
2.    Installation
  2.2 Windows
  2.3 Debian/Ubuntu
  2.4 Other Linux distributions/Unix systems
3.    Running
4.    Keybindings
5.    Console
6.    Contact

1. Introduction
  abysmal aims at recreating an engine which can run Ultima Underworld 1/2 and
  System Shock using the original data files.

  It's in pre-alpha stage and a lots of stuff needs to be done, so you
  shouldn't expect much of it.

  What currently works:
  - Rendering of UW1/2/Shock levels (no lightning though)
  - Collision detection
  - Rendering of objects and 3d models in UW
  - "look at" in UW
  - Some basic UI in UW
  - Midi music output

2. Installation

2.2 Windows
  Simply run the installer or extract the zip file to a directory of your

2.3 Debian/Ubuntu
  Ubuntu 8.10 and 9.04 packages are provided via launchpad:

  These packages should also work on Debian testing/unstable.

2.4 Other
  Abysmal can be easily compiled on other Linux distributions or Unix systems.
  It was tested on FreeBSD, NetBSD and OpenSolaris.
  Refer to README_dev.txt in the source tarball for build instructions.

3. Running
  Simply run abysmal.exe on Windows or "abysmal" on Linux (it's located in
  /usr/games in case it's not in your $PATH). The Debian packages also install
  menu entries for abysmal.

  You will be prompted with a menu screen where you can configure your games.
  Simply click on "add" and navigate to a valid game directory. Currently
  supported games are:
  Ultima Underworld 1 (DOS)
  Ultima Underworld 2 (DOS)
  Ultima Underworld Demo (DOS)
  System Shock (DOS)

  For System Shock, only the CD version has been tested, but the floppy version
  should also work. The Mac Version of System Shock is NOT supported at this

  If you don't have Ultima Underworld at hand, then you can also use the demo.
  It can be obtained from this page:

  On Linux the demo can be extracted using lha:
  $ lha uwdemo.exe

  If your distribution doesn't have lha, then you can simply run the
  self-extracting lha-archive in dosbox:
  $ dosbox ./uwdemo.exe

  Be careful, the archive doesn't create a top-level directory, so extract it
  in a fresh directory and not directly in your $HOME :-)

  Note: there's NO need to lowercase all filenames on Linux/Unix. Abysmal
  handles this transparently.

4. Keybindings
  Once in the game the following keybindings are available (Note that it's
  currently not possible to change these)

  cursor up          - move forward
  cursor down        - move backward
  cursor left        - strafe left
  cursor right       - strafe right
  left mouse button  - look around (need to hold down + move around)
  right mouse button - "look at" in Ultima Underworld
  Keypad plus        - next level
  Keypad minus       - previous level
  Tab                - Toggle between "free look" and mouse mode
  Escape             - quit
  ^,~ or F1          - open in-game console
  alt+enter          - toggle fullscreen
  ctrl               - Release mouse grab (allow mouse to leave the window when
                       in windowed mode)

  A note about "free look":
  In free look mode moving the mouse directly results in movement, just like in
  3d shooters like quake. When not in "free look" mode a cursor is visible that
  can be used to click objects. Looking around in this mode works by holding
  the left mouse button down and moving the mouse around.

  A note about changing levels using keypad plus and minus:
  Changing a level does not reset the player position, so it may be that you're
  outside the map. In this case, use the console command "g_noclip 1" to
  turn of collisiion detection and be able to "fly" back to the map again.

5. Console
  Abysmal features a Quake-like console. It's primarly used for game
  configurations, as there's currently no user interface for changing these.

  The console can be opened with ^, ~ or F1.

  Some notable console commands:
  list_commands - List all console commands
  list_cvars    - List all variables

  Some notable variables:
  r_anisotropy  - Change anisotropic texture filtering level
  r_cull        - Enable/Disable frustim culling. If this is off, the whole map
                  is rendered (which is nice if you fly up above the map and
			   want to see the whole map)
  r_fullscreen  - Toggle fullscreen mode (same as pressing alt+enter)
  r_mode        - change resolution. For example to switch to 1024x768 just
                  enter "r_mode 1024x768"
  in_pitch      - vertical mouse sensitivity (to invert the mouse, simply make
                  this negative, like "in pitch -0.2"
  in_yaw        - horizontal mouse sensitivity
  g_fov         - player field of view
  g_noclip      - Enable/Disable collision detection. If this is on, then you
                  can fly through the whole map

  There are a few more cvars, just type "list_cvars" to get a list of all.

6. Contact
  The Abysmal homepage is located at http://abysmal.sourceforge.net