Which Way Is Up?

Saved games stay in this browser only.

About the game

You wake up in a dark stone maze with a hangover and a vague memory of a key. The key sits behind a set of bars, and the only way to get anywhere is a row of levers fixed to the walls. Each lever turns the whole level a quarter turn, so the ceiling becomes a wall, the wall becomes the floor and the platform you could not reach is suddenly right under your feet. The title is the question you keep asking.

The first world, Quest For The Keys, has seven levels. In each one you pick up the key, pull the levers in the right order to make the way to it, and watch for spiders that shoot from the walls and for patches of spikes, while a health bar shows how much you can take. Your guy talks the whole time, in a dry, grumpy voice, about his missing keys and his other pants, and he is the one who explains the controls, one line at a time.

The game scores you for how much health you keep and keeps a frame-exact timer for speed runs. The menu shows your high score and best time, and your progress is saved in your browser.

Playing it here

The first time you click Play the page downloads the Python runtime and the pygame library (about 23 MB), which takes a few seconds; after that a "click to start" message appears, and one more click starts the game with sound. The download is kept by your browser, so the other pygame games on the site open faster. Nothing is loaded from other sites. The unlocked levels, the high score and the best time are saved in this browser only.

The version served here is an unfinished pre-release (2.0.0pre). Only the first world is included, because the other two worlds of that version are missing some of their pictures, and we ported the code from Python 2 to Python 3 so that it runs on the web. The menu items for fullscreen, character and world were removed.

Controls

Key Action
Left / Right, A / D move
Up, W or Z jump (hold it longer to jump higher and to slow a fall); advance the dialogue
Down or S pull a lever, pick up the key
P or Pause pause
Esc open the menu

In the menu, Up and Down choose, and Enter, Space or Z select. You can turn the sound and the dialogue off there.

A few things worth knowing

Levers turn the level, not you. When you pull one, the whole room spins a quarter turn clockwise after a moment, and so does everything in it. Look at the map before you pull: the next lever may be somewhere you cannot reach after the turn.

Hold the jump key to jump higher. A quick tap gives a small hop and holding it gives a high one. You can also keep it pressed while you fall to slow the drop.

Spiders stay on their wall. They shoot along the wall they sit on, and when the level turns, they turn with it.

Turn the dialogue off to move faster. The jokes are part of the fun, but you can skip them in the menu, and the timer does not count the talking.

Frequently asked questions

Does it save my progress? Yes, in your browser: the unlocked levels, the high score and the best time.

Does it work on a phone? It needs a keyboard, so it is meant for a computer.

Is there bad language? The dialogue has a few mild words and jokes about drinking; there is nothing graphic.

Where are the other worlds? They are in the original files but unfinished in this version of the game (some pictures are missing), so we left them out.

Is it free? Yes. The game is free software: the code is GPL and the art and sound are Creative Commons.

Credits and licence

Which Way Is Up? was made by Olli Etuaho (hectigo.net) for PyWeek 4, and this version is the 2.0.0 pre-release of the fork by Daniel Foerster. The code is released under the GPL 2.0, and all the pictures, sounds and levels under the Creative Commons Attribution 3.0 licence (credit: Olli Etuaho and Daniel Foerster). The text uses the Bitstream Vera font, under its own licence. The version served here changes the code only to make it run in a browser (a port to Python 3, asynchronous loops, a smaller menu); the changes, the exact source and the licence texts are linked from the Licenses page. The game runs on pygame-ce (LGPL-2.1) and CPython, whose licences and source are linked there too.