
           Escape               Tom 7       27 Aug 2004
           Beta Version


Here's what Escape is:

   Escape is a tile-based puzzle game in the style of "Adventures of
   Lolo" or "Chip's Challenge." Unlike either of those games, Escape
   doesn't rely at all on reflexes--it's all about your brain.

   Although Escape comes with hundreds of levels, the game places an
   emphasis on the composition of new puzzles. Thus Escape has a
   built-in level editor and facilities for automatically sharing
   puzzles with other players.

   This is a "Beta" release of Escape. Everything should work, and
   everything is intended to be user-friendly. If it doesn't or isn't,
   you should let me know! The Escape web page (http://escape.spacebar.org/)
   provides a form for leaving comments.


Here's how to play:


   Escape mostly uses the keyboard, except for the editor, which makes
   use of the mouse. Almost everything is done with the arrow keys;
   Enter typically selects something and Esc backs out.

   After starting Escape, use the menu to make a new player. Name it
   whatever you want. This will be the default author name for levels
   that you create. It also keeps track of your solutions.

   The first time you play you should also try to update the game from
   the internet, because it's likely that I have updated it. Press '3'
   from the main menu. You may want to also update your level
   collection; you should definitely get the official collection along
   with "triage," which is where most of the levels live. To do this,
   press '4'.

   From the main menu, you can press '1' to load and play some levels.
   Before doing that you should probably play the tutorial, which you
   can access by pressing 'T' (it will automatically select the next
   tutorial level for you until they're all done). The tutorial
   attempts to teach you (without words) how the various tiles work.
   However, you'll need to know this:

       The arrow keys move you around.
       The enter key will restart the level.
       The escape key sends you back to the main menu.


Alas, there are a few tricky things in the tutorial. If you get stuck:

   You can move around the "wire" blocks.

   Wires are used to connect "buttons" to "lights." If a button is
   connected to a light once, then pressing the button will toggle
   colored floor of that light's color. If it's connected twice, then
   it will toggle twice, which means that the net effect will be
   nothing. If it is connected three times, then that is the same as
   being attached once. This will be less confusing when I add
   animation to the game.

   In the second 'wire' tutorial level, there is a button connected to
   two lights at the bottom right of the level. Everyone seems to miss
   this one for some reason.


Here's how to create levels:

   If your player is not registered, first do that by pressing 'r'
   on the main menu. You only need to do this once.

   From the main menu, hit '2' to edit.

   Click on the second row of tiles at the top of the screen to set
   the current drawing tile. Then use the left mouse button to draw.
   The other options at the top allow you to do various things, like
   clear or set the player start location. To test the level, press
   'p' or click on the play icon.

   When you've created a good puzzle, make sure you play and complete
   your level through the 'load' menu on the main menu. This saves
   your solution inside your player file. (You'll know that this is
   done when there's a check mark next to the level.)

   When you've created a level that you're happy with and solved it,
   you can press ctrl-u on the "load" screen to upload it to the
   server for others to play. You must have registered and have a
   check mark as described above. Your level will appear in the
   "triage" collection right away. If you upload a level, you agree to
   license it to us (and everyone) under the GPL. See the file COPYING
   for more details.

   Note: Certain tile combinations, such as a panel pointing to itself
   or to an adjacent panel, are flagged with a warning (a yellow and
   red box will appear above them). You should avoid putting these
   in your levels! (Otherwise your level risks ending up in the
   "impure" category.)


Here is an English description of the rules of the game:

   This section is pretty boring, unless you're confused about the
   way the game is behaving in some specific level, or if you want
   to explore the obscure corners of level design. Skip to the next
   section if you want to get on with the game; the included
   tutorial is designed to teach you this stuff.

   Everything in Escape happens on a grid of tiles. There are only
   four possible moves: each of the four directions up, down, left and
   right. After each move, the player dies if any laser can 'see' him
   in any direction. (The tile that he's standing on doesn't block
   lasers.) If he's not dead, and is standing on an Exit tile, then he
   wins. Because these conditions are only checked at the end of a
   move, it is possible to start a level in the path of a laser or on
   the exit without dying or winning, respectively. Indeed, several
   levels do this in order to tease you.

   Many of the tiles have simple behavior. We list them by number
   (the order in which they appear in the editor), name (by which
   they are referred to in the Escape source code) and graphical
   description.

   (0) FLOOR. This light grey brick pattern allows free passage.

   (1) RED. Red blocks can be moved around by pushing. They move
       only over FLOOR and the various panels.

   (2) BLUE. Blue blocks are invincible and immobile.

   (3) GREY. Grey blocks are as red, but can be pushed into holes.

   (4) GREEN. Green blocks can be pushed one space in any direction
       (only onto floor), at which point they turn into blue blocks.

   (5) EXIT. Reaching an exit is the only way to solve a level.

   (6) HOLE. A hole is impassable unless a grey block is pushed into
       it to fill it up. At that point it is replaced with floor.
      
   (7) GOLD. Gold blocks can be pushed in any direction, and they
       will fly along until they reach a surface that blocks them
       (anything but floors and panels). Unlike pushing a red or
       grey block, the player does not move when shoving a gold
       one.
 
   (8) LASER. Lasers are the only thing that kills the player. As
       remarked above, the player dies after his move if a laser
       is aligned with his square and no laser-blocking tile
       intervenes. All tiles block lasers except for: FLOOR ELECTRIC
       ROUGH RDOWN GDOWN BDOWN TRAP2 TRAP1 PANEL BPANEL GPANEL RPANEL
       BLACK HOLE.

   (9) PANEL. The standard panel appears as a grey circle on the
       floor. Panels can be pushed down by any kind of block except
       for horizontal and vertical sliders. (A discussion of panels
       and their effects follows this list of tiles.)

  (10, 11, 12, 13, 14) STOP, RIGHT, LEFT, UP, DOWN. Decorative
       versions of blue blocks.

  (15) ROUGH. Rough looks similar to floor (it has a finer pattern).
       It does not block the player, but blocks cannot be pushed onto
       it.
       
  (16) ELECTRIC. Electrified floor is bright yellow. It consumes
       blocks that are pushed into it, and blocks the player.

  (17) ON. Pressing the ON button turns it OFF, making all electrified
       floors turn into regular floors.

  (18) OFF. The deactivated state of an ON button, which acts as an
       inert blue block.

  (19) TRANSPORT. When stepped in, the transporter sends the player
       to a constant destination somewhere in the playing field.

  (20) BROKEN. This looks like a cracked version of the grey blocks.
       Pressing against it causes it to disappear and turn into floor,
       although the player remains where he is.

  (21, 22) LR, UD. These blocks with left-right or up-down arrows can
       be pushed only along the horizontal (resp. vertical) axes.
       Unlike most blocks, they cannot be pushed onto panels.

  (23, 24) 0, 1. Pressing against a 0 or 1 block will cause the 
       left-right and up-down blocks to swap.

  (25, 26, 27, 28, 29, 30) NS, NE, NW, SE, SW, WE. These wires connect
       up buttons and lights. They can be pushed around like red blocks,
       and additionally can press down panels.

  (31) BUTTON. This looks like a pink square surrounded by yellow and
       and black 'caution' tape. Pressing the button sends pulses of
       electricity down all connected wires, which triggers lights.

  (32, 33, 34) BLIGHT, RLIGHT, GLIGHT. When a pulse reaches a light,
       all floor of the corresponding color switches from the 'down'
       state to the 'up' state and vice versa. Note: If a light
       receives two pulses (from two different wires), then the net
       result of two switches will be nothing. Similarly, three
       pulses result in a net result identical to one pulse.

  (35) BLACK. Empty black space is impassable, although it permits
       the passage of laser beams.

  (36, 37, 38, 39, 40, 41) BUP, BDOWN, RUP, RDOWN, GUP, GDOWN.
       Colored floors (blue, red, and green) have two states: down
       and up. In their down states they act identical to rough.
       In the up state they act as blue walls. 

  (42, 43, 44, 45) BSPHERE, RSPHERE, GSPHERE, SPHERE. These shiny
       colored spheres behave as gold blocks, except that a contiguous
       series of them can be pushed from one end to shoot a sphere
       out of the other end. (Think of these like those hanging metal
       marble klick-klack office toys.) The blue, red, and green
       spheres can also push down colored panels.

  (46) TRAP2. This is a cleverly concealed trap of leaves and sticks.
       When the player steps off it, it becomes the less-well concealed
       trap, TRAP1.

  (47) TRAP1. This is a few sticks laying over a hole. The player can
       step on it, but when he steps off, it will become a HOLE.

  (48, 49, 50) (BPANEL, RPANEL, GPANEL) These colored panels work as
       the standard grey panel, but can only be activated by the sphere
       of the same color. Other blocks pass over them with no effect.



   To understand the behavior of the panels, first we must introduce
   the concept of the 'bizarro world.' The grid on which Escape takes
   place has a counterpart of equal size, referred to as the alternate
   layer or the bizarro world. When tiles disappear as the result of
   a panel, they are actually swapped with the corresponding tile in
   the bizarro world. You can edit the contents of bizarro world by
   pressing 'y' in the editor, and 'y' again to switch back.

   Suppose we have the following scenario, where P is the player, o is
   a panel on the floor, and # is a block.

   .......
   .Po..#.
   .......

   Each panel has a destination; let's suppose the destination is the
   spot where the # is. If the player steps onto the tile, the # will
   disappear:

   .......
   ..P....
   .......

   In actuality, the # has just moved to the bizarro world, and the spot
   now contains some floor. If the bizarro world had contained something
   else, we'd see that instead.

   Suppose there were another panel with the same destination. We could
   trigger both (perhaps by putting blocks on them), in which case the
   destination tile would be swapped into bizarro world, and then swapped
   back out.

   Some facts about the bizarro world:

     This swap with the bizarro world is the last thing that happens
     as a move is executed. This matters; consider the case where a
     gold block is pushed off a panel towards a tile that is affected by
     the panel.

     All swaps (such as those resulting from pressing 0 or 1 or ON)
     affect only the tiles on the currently visible (ie., normal) layer.
   
     A block on a panel is thought of as a kind of tile, so the whole
     assembly is transported to/from the bizarro world when a swap
     takes place.

     The bizarro world and regular world both share the same destination.
     that is, if one contains a panel and the other contains a transporter,
     both will necessarily reference the same spot on the playing field.



Here is what I'm interested in from you:

   Bug reports and feature suggestions. I've tried to stamp out all
   the bugs, and there are some sorely needed features in the works,
   but of course I still want to hear these things.

   Levels. See above for instructions on how to create them.

   Ratings. You can rate a level in the triage collection by pressing
   ctrl-r from the load screen. I'd like to collect quality ratings in
   order to prepare an "official" collection of the best levels. Comments
   are also useful; press ctrl-c and write anything you like. You
   must have already registered in order to do rating and comments!
   Ratings are shown in the game, but to view comments you must visit the
   escape server's web page at http://escape.spacebar.org.


Here's some more boring stuff. Go play instead of reading this:

   Escape uses the SDL, which is essentially a library for developing
   cross-platform games. If you're using x86 linux, the binary is now
   compiled statically, so you don't need to install anything. If
   you're using Windows, the DLLs are included, so you don't need to
   do anything extra. The same is true for OSX.

   However, if you want to compile Escape yourself on linux or win32,
   you'll need to install development libraries for SDL, SDL_net, and
   SDL_image. You can grab packages for your distribution here:

       http://www.libsdl.org/download-1.2.php        (SDL)
       http://www.libsdl.org/projects/SDL_net/       (SDL_net)
       http://www.libsdl.org/projects/SDL_image/     (SDL_image)

   On OSX, these libraries are included in the OSX_build subdirectory,
   so you do not need to download anything.

   The source code is available for browsing here:
   http://cvs.sourceforge.net/viewcvs.py/tom7misc/escapex/

   You can also do this, if you have CVS:

   cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tom7misc login
    (just press enter when it asks you for a password)
   cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tom7misc co escapex 

   Sourceforge is in the midst of upgrading its anonymous CVS access,
   so sometimes this will fail inexplicably. Just keep trying...

   Then you can do "cvs up -d" whenever you want to get the newest
   source code. These snapshots are likely to be broken, because (as the 
   only developer) I don't have any reservations about committing 
   in-progress code, even if it doesn't compile.

   I am interested with testing and bug reports on OSX especially. The
   version that I distribute is built from the command line at
   sourceforge.net, so I often haven't tested the release that you
   downloaded. Am I distributing it in a dumb way? Are there easy
   changes I can make? I'm aware that it's not obvious how to view
   files that are part of the distribution--can I make this
   documentation associated with the 'app' somehow?

Thanks:

   I am indebted to the following people for helping make Escape.

   Max Heath - Many fine levels and bug reports for OSX
   Adam Goode - For his experimental NES port, patches, bug reports, etc.
   Don Crimbchin - Essentially responsible for the OSX port. Thanks!!
   The Funtik Family - Makers and consumers of levels for classic Escape
   Heather Hendrickson - Author of several levels, provider of support ;)
   Jason Reed - Testing and debugging on PPC Linux, several clever levels
   Mike Murphy - Author of several classic Escape levels


   And of course all of the other authors of levels included in the
   game.


Enjoy Escape and thanks for playing!

 - Tom 7
