Escape Tom 7 6 Apr 2007 Beta Version 3 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. (If you are using a pre-packaged version of this game, then this option will be disabled. Ask your system administrator to upgrade the package, or download a single-user install from the Escape web site.) 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'. Note: Every level that you download is solvable, even though they can be quite frustrating! The server makes sure of it. (The only exception is the "quarantine" collection, which is pretty boring anyway.) 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. 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. Please don't upload levels that aren't your own creation (unless you have permission from the author)! Other editing tips: The square bracket keys ] and [ allow you to zoom in and out. This is necessary if you want to make destinations for panels or teleporters be far away (off-screen). However, I caution you against doing this; it's generally better for players if they can "see what's going on" with a level. You can also scroll around your level with the arrow keys. By using the right mouse button, you can drag a selection rectangle, which can then be moved with ctrl-arrow keys. Once making a selection, you can "expand" the pattern in the selection by using shift-arrow keys. This tries to do the right thing with series of panels, but just experiment to see what happens! The middle mouse button acts as an "eyedropper," which allows you to select as your current drawing tile the tile under the cursor. 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. Things like robots and bombs can kill you, too; see below. Although the game features animation, there is absolutely no 'action' component to solving levels. The game behaves the same whether animation is turned on or off, and it is impossible to outrun moving blocks or lasers or bots. Take your time. Many of the tiles have simple behavior. We list them by number (the order in which they appear in the editor), codename (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. (51) STEEL. Steel blocks are to red blocks what spheres are to yellow. You can push any number of them in a row as one unit, but they otherwise act as red blocks. (52, 53, 54) (BSTEEL, RSTEEL, GSTEEL). These colored versions of the steel tiles are like the colored spheres, in that they can activate colored panels. But otherwise, they behave like regular grey steel. (55) HEARTFRAMER. Collect all of these pink hearts (by walking onto them) to wake up anything that's sleeping. Until you pick them up, they block lasers and bots, etc. (Heart framers that are in the bizarro world don't count towards "the last one.") (56) SLEEPINGDOOR. This is an exit that's asleep. It acts like a blue block until you wake it by collecting the heart framers, and then becomes a regular exit. Only sleeping doors in the foreground (not bizarro world) are affected when the last heart framer is picked up. (57) TRANSPONDER. A wire that beams electricity through the air to another transponder. The beam is harmless, but is obstructed by the same things that block lasers (including the player). When the beam is received, an electric pulse continues traveling in the same direction. Can be pushed like red blocks. (58) NSWE. A cross-over wire that allows both north-south current and west-east current. (59) REMOTE. Panels that are activated by pulses of electricity. They also pass through the pulse like the NSWE tile, but are not pushable. 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 panels and 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. Bots, bombs, and the player are not affected by things swapping under their feet (wheels). Panels are not triggered by the mere presence or absence of an object (or player) on top of them. Instead, they are triggered by the "edge effect" of pushing an object on top of them, and then triggered again when the object is removed. This means that if a panel disappears while you're stepping on it, it won't be untriggered (even though there is nothing "on it" now), and also won't be untriggered when you step off that square (there's no panel there, any more). Taking advantage of this allows for the creation of "one-way" combinations of panels that have a permanent effect merely from stepping over them. Robots: Well, that's not it! In addition to these tiles, there may be other entities on the map with you, making their own moves. These are robots. Each robot has a number (that you can't see, unless you're editing the level). After you make your move, each of the robots makes a move, in order. If a robot can't move (or prefers not to), then it stays still. If the turn ends with the player on top of a robot, then he dies! The different sorts of robots are as follows: - Broken: Broken robots don't do anything, they just sit there. - Hugbot: Hugbots try to get near you to give you a hug. But because they don't have any arms, the tend to push you. Hugbots prefer to move horizontally towards you, but they will move vertically if something is in their way, or if they're already in the same column as you. - Daleks: Exterminate! Daleks are like hugbots, but they try to electrocute you, so if they walk into you, you die. However, Daleks are extremely reckless. They will walk onto electric tiles, vaporizing themselves, or will walk into other robots, causing the two of them to fuse into a pile of broken metal. - Sleeping Hugbots and Daleks: These guys are just as idle as broken bots, but wake up when the last heart framer is taken. It is possible to push every kind of robot. Broken and sleeping bots essentially act like blocks that you can move over some kinds of floor that blocks can't go over. Pushing hugbots and Daleks is generally pointless, since they tend to just push you right back (or kill you). But this can still be useful to push them into electricity (destroying them), in the way of a Dalek, etc. Many advanced bot manipulation levels involve lots of bot pushing, so experiment! Bombs: No, there's more! Bombs are a kind of bot, although they always "move" last. You can push a bomb around like a broken bot. But when you do, it becomes lit. When a bomb is pushed (even if it has already been lit), the fuse is reset to a number between 0 and 10. The level author can modify this value for each bomb. Bombs always "move" after regular bots. On their "motion", lit fuses count down. If the fuse expires, then the bomb explodes. An exploding bomb destroys adjacent bots, and also causes other adjacent bombs to explode immediately. It also destroys certain tiles, turning them into floor. At the end of the turn, if the player is standing adjacent or atop a square where a bomb exploded, he dies. Here are the tiles that can be destroyed by bombs: EXIT SLEEPINGDOOR LASER BROKEN GREY RED GREEN GOLD NS WE NW NE SW SE NSWE TRANSPONDER BUTTON BLIGHT GLIGHT RLIGHT BLUE STOP HEARTFRAMER PANEL RPANEL GPANEL BPANEL REMOTE 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. Speedruns. You can now upload solutions for the levels that you play. If you have the shortest solution for a level (or the first), then after rating, the game will automatically prompt you to upload your solution. If you have solutions stored from before this feature was introduced, you can upload them by pressing ctrl-m on a level, then selecting your solution and pressing ctrl-u. Be sure to upload with the "speedrun" check box selected. Here's some more boring stuff. Go play instead of reading this: Please see the file HACKING in the source distribution for information on how to compile and modify Escape yourself. License: The Escape program, graphics, and documentation are Copyright 1996-2007 Tom Murphy VII, except where noted at the top of a source file. They are distributed under the terms of the GNU Public License, which you can read in the file COPYING that is included with the distribution. Thanks: I am indebted to the following people for helping make Escape. Max Heath - Many awesome levels and bug reports for OSX Adam Goode - For his experimental NES and Java ports, patches, etc. Don Crimbchin - Essentially responsible for the OSX port. Thanks!! The Funtik Family - Makers and consumers of levels for classic Escape Brian Potetz - Impressive coverage, bug reports, suggestions, levels Stephan Schonberg - Lots of bug reports, some impressively obscure! Jason Reed - Testing and debugging on PPC Linux, several clever levels Anderson Wilson - Test case that helped solve dataloss bug, nice levels William Lovas - Convenient Mac laptop for testing Heather Hendrickson - Author of several levels, provider of support Mike Murphy - Author of several classic Escape levels Michael Donohue - Ran Coverity to find at least one bug worth fixing And of course all of the other authors of levels included in the game. Enjoy Escape and thanks for playing! - Tom 7