Commit da564811 authored by Markus Koschany's avatar Markus Koschany

Imported Upstream version 0.7.9

parent ef6f4d3e
Which Way is Up? README
=======================
You're playing version Beta 0.7.9.
CREDITS & CONTACT:
Main developer: Olli Etuaho
Home page: http://www.hectigo.net/
E-mail: admin at hectigo.net
Debian package maintained by: Miriam Ruiz
Home page: http://www.miriamruiz.es/weblog/
E-mail: webmistress at miriamruiz.es
DEPENDENCIES:
You might need to install some of these before running the game.
The dependencies are for the Python source code version - they are not needed
for running the Windows binary.
Python: http://www.python.org/
PyGame: http://www.pygame.org/
RUNNING THE GAME:
On Windows or Mac OS X, locate the "run_game.py" file and double-click it.
If you're using the Windows binary, double-click on main.exe.
Otherwise open a terminal / console and "cd" to the game directory and run:
python run_game.py
HOW TO PLAY THE GAME:
The game gives you some instructions as you start playing.
Controls reference:
KEYBOARD:
Left/Right Move
Z or Up Advance game dialogue
Jump - the longer you hold down the button,
the higher the character jumps
Down Interact with the environment, pick up objects
P Pause game
JOYSTICK OR GAMEPAD WITH 2 OR MORE BUTTONS:
Left/Right Move
Button 1 Advance game dialogue
Jump - the longer you hold down the button,
the higher the character jumps
Button 2 Interact with the environment, pick up objects
JOYSTICK OR GAMEPAD WITH LESS THAN 2 BUTTONS:
Left/Right Move
Up Advance game dialogue
Jump - the longer you hold the pad or joystick,
the higher the character jumps
Down Interact with the environment, pick up objects
MENUS:
ESC Main menu / Quit
Up/Down Navigate the menu
Enter/Z/Button 1 or 2 Choose menu option
Oh, and one more thing - if you don't find the game challenging enough as it
is, try maximize your score by getting through it without losing any health
at all. This could be damn hard at some points, but it's always possible!
Improving speed records also provides some additional challenge.
KNOWN BUGS/ISSUES:
- Some minor collision detection related bugs and annoyances -
especially regarding corner-to-corner-collisions.
- The player may get stuck if jumping over the top when the level is
about to rotate.
SPEEDRUNNING:
The game implements an accurate frame-based timer, which records the total
time player uses to complete all the levels in a world. The current FPS is set
at 24, so you get the time in seconds by dividing the final time in frames by
24. Fading effects and scripted events with dialogue don't increase the timer,
so the dialogue setting shouldn't considerably affect the final time. Of
course, mid-level events may still interrupt the gameplay.
At the moment the game is still in beta, so changes to the levels and gameplay
are possible. Thus, records made with the current version might be better than
what is possible with upcoming versions.
ADDITIONAL INFORMATION:
The game has a home page at
http://hectigo.net/puskutraktori/whichwayisup/
Information about creating your own levels can be found in
data/levels/creating_levels.txt
The game saves unlock data etc. to the user's home directory.
In Linux, this is usually:
~/.wwisup
In Windows XP/2000, this is usually:
C:\Documents and Settings\User\Application Data\Wwisup
COMMAND LINE PARAMETERS:
-l level_name Start up from the level specified.
-v Verbose mode - error messages appear in the console,
not just the log file.
-dev Developer mode. Enables editing the official levels
and also activates verbose mode automatically.
DEVELOPER KEYBOARD COMMANDS:
F10 Rotate level - chooses direction automatically.
Only available in developer mode.
LICENSE:
All game code is licensed under the GPL 2.0.
http://www.gnu.org/licenses/gpl.html
All game content, sounds and graphics are licensed under
Creative Commons 3.0 Attribution license.
http://creativecommons.org/licenses/by/3.0/
The included Bitstream Vera font is licenced separately.
For more information, see http://www.gnome.org/fonts/
==============================
== POSSIBLE FUTURE FEATURES ==
==============================
New features for versions beyond 0.8.0, in order of priority:
-Add saving of replays and enable playback as a ghost during gameplay
-Add animation scripting
-Improve scripting in general
-Improve packaging and make an automated Windows installer
-Add random level generator
-Fix collision detection related minor bugs and annoyances
-Add umbrella?
-Add background animation
-Improve performance and clean up code
======================
== CURRENT PROGRESS ==
======================
Changes from Beta 0.7.0 to Beta 0.7.9:
-Added alternate control configuration for zero or one button joysticks
-Refactored menu code to enhance reusability
-Added fullscreen mode
-Added log message about using the Windows APPDATA directory instead of the UNIX HOME
-Moved the render_gui function from util.py to game.py
-Cleaned up code and added comments
-Added basic tile-based level editing capabilities
-Added helper lines to the background images to make rotating easier for the player
-Added developer feature: Objects remember their initial positions and objects are rendered there translucently while in developer mode
-Increased upward acceleration in air (while holding Z) to compensate for engine changes
-Fixed Guy's flipping position correction code and misdetected collisions right after flipping
-Added Guy's exit animation
-Improved event processing: Flip triggers now always have the correct flip direction
To be done for Beta 0.8.0:
-Reorganize game menus and add a custom level menu?
-Add more levels and enemy types
-Add ingame credits
-Balance and polish existing levels
===================
== PAST PROGRESS ==
===================
Changes from Beta 0.6.5 to Beta 0.7.0:
-Added support for different worlds and all kinds of strings as level names
-Added world 2: The Other Side with levels 1-7
-Added Blob enemy type
-Added spider cannon moving animation
-Added themed object fallback to the default brown theme
-Added the power crystal
-Changed blood particle behaviour to make bleeding look better
-Added graphical health bar
-Fixed glitch: spider cannons don't fire if the player is in the other direction
-Fixed glitch: the "augh" sound now plays when the player dies
-Added game icon
-Added fading in and out effects
-Adjusted levels 6-7 of world 1
-Fixed one or zero button joystick crash
-Fixed no sound device crash
-Added feature: The level can now rotate counter-clockwise according to the lever location
-Added speedrun timer
-Improved the instructions given in the dialogue in the beginning
-Added error logging to a file and supressed printing errors to the console by default
-Added pause game functionality
-Added a transparent background for dialogue to make the text more readable
-Fixed bug: Player doesn't take damage when he hits spikes and solid ground at the same time with a high velocity any more
Changes from Beta 0.6.0 to Beta 0.6.5:
-Fixed glitch: The player isn't able to trigger another switch when the playing field is going to rotate
-Fixed glitch: The player can't jump while dying
-Added feature: The game remembers the highest score of the player
-Changed scoring to lessen the effect of the player's health
-Changed the level file format to enable different tilesets
-Changed the level background to an animateable object (but didn't animate yet)
-Added support for easy addition of pickable items (no changes to the code required)
-Added level 7 and other pants
-Added scrolling to the menu
-Changed the order of level 2 and 3 to achieve more progressive difficulty, edited related dialogue
-Changed the (new) level 2 slightly
-Cleaned up and simplified the code by separating dynamic and static objects. This also improved performance.
Gameobject is now DynamicObject, which inherits the new class VisibleObject.
VisibleObjects handles only animations, flipping and rendering.
Changes from Beta 0.5.5 to Beta 0.6.0:
-Improved dialogue
-Added feature: Spiders are now able to cling to the edges of the screen
-Added caching of animation frames to lessen memory requirements
-Added caching of level ground_check inquiries to improve performance
-Improved level 6
-Improved performance with faster spider and projectile collision detection
-Changed: Lowered framerate from 25 to 24 to make the game just slightly slower and easier
-Improved usability: The level the player last played is chosen in the menu after a death
-Cleaned up and commented some code
-Increased the size of the skip dialogue button image
-Added error handling if the game doesn't find the level specified
Changes from Beta 0.5.0 to Beta 0.5.5:
-Added joystick/gamepad support
-Added lever animation
-Added levels 5 and 6
-Added score display after loss and victory
-Fixed projectiles leaking off the top of the screen
-Changed: Projectiles now stay on screen after flipping
Changes from Alpha 0.3.0 to Beta 0.5.0:
-Made the player a bit smaller to make it easier to get through narrow passages while jumping
-Increased player health
-Added on screen game over messages and player hp changes on game over and victory
Changes from Alpha 0.2.0 to Alpha 0.3.0:
-Fixed "woosh" sound (the sound that the flip levers make)
-Improved dialogue
-Adjusted scoring
-Adjusted player jump height when hitting spikes - it's possible to jump out of a spike pit two tiles deep now
-Added third and fourth levels
-Added documentation about creating levels
-Added -l command line parameter for starting from a different level (debugging)
-Fixed collision detection "jitter" bug when colliding with a wall on the left
-Fixed top attached spider bug
-Replaced jumping sound effect
-Changed: Player's health now stays the same over the levels
-Added unlocked levels saving
-Added main menu with dialogue and sound toggling
Changes from Alpha 0.1.0 to Alpha 0.2.0:
-Added basic script & dialogue support
-Added dialogue to the first level
-Added code for level change & victory / loss to the main class
-Added second level
-Changed: Lowered the spikes so that they can be jumped over more easily
Alpha 0.1.0:
-First available test build
\ No newline at end of file
cmd
\ No newline at end of file
level w2-l0
\ No newline at end of file
level w0-l0
level w0-l1
level w0-l2
level w0-l3
level w0-l4
level w0-l5
level w0-l6
\ No newline at end of file
level w1-l0
level w1-l1
level w1-l2
level w1-l3
level w1-l4
level w1-l5
level w1-l6
\ No newline at end of file
=== INTRODUCTION ===
Feel free to add your own levels! They can be played by starting the game
with the parameter -l <level name>, where level name is the file name of your
level without the .txt extension. The empty_level text file in this directory
is a good starting point for your own levels. The game always starts from the
bottom right corner of the level files. A brief description of the level format
follows:
=== THE TILESET ===
The first row is usually used for choosing the tileset. This happens with the
"set" keyword. The game currently has two tilesets, brown and green. Brown
is the default.
=== TILE DATA ===
20 rows after the keyword "tiles" are for the tile data. Case sensitive.
W - Wall tile.
S - Spikes tile.
B - Bars tile.
Any other character - Empty space. Different tile types might be added in the
future, but at least space and . are safe to use for
empty space.
=== OBJECTS ===
Then comes the object and scripted event data. The official level files are
good examples for adding these. There will probably be improvements to the
scripting system later, but as of now, it's quite pritimitive and meant mainly
for giving messages to the player and changing levels.
The game currently supports 5 kinds of objects:
player (always add this first)
lever
spider
blob
pickable items (key, other_pants, power_crystal)
These all are followed by two common parameters - x and y in game tiles.
spider has one extra parameter - the direction of the surface it's attached to.
This can be LEFT, RIGHT, UP or DOWN. This parameters changes automatically
when the level is rotated.
lever has two extra values - the amount of times it can be activated and the
thing that it does. Currently the only supported action is TRIGGER_FLIP, which
rotates the level 90 degrees clockwise.
=== SCRIPTED EVENTS ===
Scripted events are started with a trigger row, which specifies the trigger
type and how many times the event can be repeated.
Trigger types:
level_begin Activated when the gameplay first begins
flipped Activated when the level has been rotated
key An item with the ID "key" has been picked up
Implemented scripted event actions are:
change_level Changes the level
dialogue Prints a text message to the middle of the screen.
player orientation Makes the player face LEFT or RIGHT.
\ No newline at end of file
set brown
tiles
WWWWWWWWWWWWWWWWWWWW
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
W W
WWWWWWWWWWWWWWWWWWWW
player 18.5 18.55
\ No newline at end of file
set brown
tiles
WWSSSWWWWWWWWWWWWWWW
W WW W W W
W W W W W
W W WW S
W W WWW W W
W W
W W W W
W WW WWW W
WW W
W W WW
W WWW W W
WW WW W
W W WWW W
S W
S W WW WW
S WW W WW
S WW W W
S W WWWW W
S W B B
WWWWW W WWWWWWWWWW
player 15.5 18.55
key 12.5 18.5
lever 18.5 8.5 1 TRIGGER_FLIP
lever 8.5 1.5 1 TRIGGER_FLIP
lever 3.5 11.5 1 TRIGGER_FLIP
lever 9.5 19.5 1 TRIGGER_FLIP
spider 17.5 15 RIGHT
spider 15 6.5 DOWN
spider 2.5 8.5 LEFT
trigger level_begin 1
player animation sleep
dialogue Zzz...
player animation default
dialogue ...uh, g'morning.
dialogue Where am I?
dialogue ...
dialogue I guess I really need to lay off the booze.
dialogue I remember something about a key... and some sort of an experiment.
player orientation LEFT
dialogue And it seems like my key has slipped behind those bars.
dialogue Slippery bastard. If only I could reach it...
dialogue ...
dialogue Damn this 2D world. Platforming really isn't my thing.
dialogue I'm more like a shooter guy.
player orientation RIGHT
dialogue But if I really have to, I guess I could try the lever up there.
dialogue You there with the controls, just lay your hand on the arrow keys.
dialogue I jump with the up arrow or Z. Hold it longer, and I'll jump higher.
dialogue You can also use it to slow down falls.
dialogue Collect stuff and pull levers with the down arrow. Got it now?
dialogue Oh, and stay clear of dangers.
dialogue Like, if there are sharp spikes on the floor, don't make me jump on them.
dialogue I can take a few hits, but I'm not the kind of guy that likes pain.
dialogue So just be careful. Please.
end trigger
trigger flipped 1
dialogue Whoa!
dialogue That was sort of unexpected.
dialogue But I guess I can use it to my advantage.
dialogue This lever seems to have broken, but I wonder what the next one up there does?
end trigger
trigger key 1
dialogue Finally!
dialogue ...
dialogue Hey, what is this?
dialogue This key doesn't fit that door after all. Now what?
dialogue ...
dialogue I guess I'll just have to go to the next level.
change_level
end trigger
\ No newline at end of file
set brown
tiles
WWSSSWWWWWWWWWWWWWWW
W WW W W W
W W W W W
W W WW S
W W WWW W W
W W
W W W W
W WW WWW W
WW W
W W WW
W WWW W W
WW WW W
W W WWW W
S W
S W WW WW
S WW W WW
S WW W W
S W WWWW W
S W B B
WWWWW W WWWWWWWWWW
key 12.5 18.5
lever 18.5 8.5 1 TRIGGER_FLIP
lever 8.5 1.5 1 TRIGGER_FLIP
lever 3.5 11.5 1 TRIGGER_FLIP
lever 9.5 19.5 1 TRIGGER_FLIP
spider 17.5 15.0 RIGHT
spider 15.0 6.5 DOWN
spider 2.5 8.5 LEFT
player 15.5 18.55
trigger level_begin 1
player animation sleep
dialogue Zzz...
player animation default
dialogue ...uh, g'morning.
dialogue Where am I?
dialogue ...
dialogue I guess I really need to lay off the booze.
dialogue I remember something about a key... and some sort of an experiment.
player orientation LEFT
dialogue And it seems like my key has slipped behind those bars.
dialogue Slippery bastard. If only I could reach it...
dialogue ...
dialogue Damn this 2D world. Platforming really isn't my thing.
dialogue I'm more like a shooter guy.
player orientation RIGHT
dialogue But if I really have to, I guess I could try the lever up there.
dialogue You there with the controls, just lay your hand on the arrow keys.
dialogue I jump with the up arrow or Z. Hold it longer, and I'll jump higher.
dialogue You can also use it to slow down falls.
dialogue Collect stuff and pull levers with the down arrow. Got it now?
dialogue Oh, and stay clear of dangers.
dialogue Like, if there are sharp spikes on the floor, don't make me jump on them.
dialogue I can take a few hits, but I'm not the kind of guy that likes pain.
dialogue So just be careful. Please.
end trigger
trigger flipped 1
dialogue Whoa!
dialogue That was sort of unexpected.
dialogue But I guess I can use it to my advantage.
dialogue This lever seems to have broken, but I wonder what the next one up there does?
end trigger
trigger key 1
dialogue Finally!
dialogue ...
dialogue Hey, what is this?
dialogue This key doesn't fit that door after all. Now what?
dialogue ...
dialogue I guess I'll just have to go to the next level.
change_level
end trigger
set brown
tiles
WSSSSSSSWWWWWWWWWWWW
W SWW W W
W WW SW W W
W S S W
WWW W S W
W WW S W
W W W W
W W
WW S WW
W WW W
W W W WWWWW W W
W W WW W W
S SSS W W
W W W
W W W
S W WS W W
S WWS W W
S WW WW
S W W W B
WWWWWWWW WWWWWWWWWWW
player 16.5 18.55
key 8.5 19.5
spider 11.5 12.5 LEFT
spider 12.5 15.5 LEFT
spider 18.5 10.5 RIGHT
spider 18.5 1.5 UP
spider 10.5 8.5 DOWN
spider 1.5 2.5 LEFT
lever 18.5 7.5 1 TRIGGER_FLIP
lever 8.5 11.5 1 TRIGGER_FLIP
lever 3.5 11.5 1 TRIGGER_FLIP
trigger level_begin 1
dialogue And here we are.
end trigger
trigger flipped 1
dialogue Over the top, eh? I've got it.
end trigger
trigger key 1
dialogue Finally!
dialogue ...
dialogue Hey, what the heck?
dialogue This isn't the right key either.
dialogue ...
dialogue I sort of see a pattern here.
change_level
end trigger
\ No newline at end of file
set brown
tiles
WWWWWWWSWWWWWWWWWWWW
W W W W WWW
W W W W W W
W W W W
WW W W W
W W W W W
W W W W W
W WW W
W W W W W
WWWWS SW W W
W W WW
W W WW
W W W W
W W WW
W W WW
W WW W
WW W W W W W WW
WWWWWWWWWWW WW WW
W B W
WBWWWWWWWWWWWWWWWWWW
player 18.5 18.55
key 1.5 18.5
lever 18.5 9.5 1 TRIGGER_FLIP
lever 7.5 6.5 1 TRIGGER_FLIP
lever 1.5 10.5 1 TRIGGER_FLIP
spider 17.5 11 RIGHT
spider 17.5 14 RIGHT
spider 17.5 17 RIGHT
spider 17.8 2.5 UP
spider 16.5 1.5 UP
spider 5.5 1.5 UP
spider 2.5 1.5 UP
spider 1.5 15.5 DOWN
spider 3.5 15.5 DOWN
spider 5.5 15.5 DOWN
spider 7.5 15.5 DOWN
spider 9.5 15.5 DOWN
trigger level_begin 1
dialogue Huzzah!
end trigger
trigger key 1
player orientation LEFT
dialogue Guess what?
dialogue Yes, this is only level 3, and we've got more.
dialogue So just get ready!
change_level
end trigger
\ No newline at end of file
set brown
tiles
WS W WWWWWW
W WWWWWW W W S
W WSSWWWWWW S
WW W W W S
B W W W S
W WW WW S
W W W W W
WW W WWWWWW W
W W W W S W
W WWW W WW W
W W W W W W
W W W WW W W
W W WW W W
WS WWWWW W W SW
WS W WW W
W WWWWWWW WW W
W W W W W
WS WWW WS W
WWW W B B
WWWWWWWWWWWWWWWWWWWW
player 18.5 18.55
lever 18.5 7.5 1 TRIGGER_FLIP
lever 9.5 0.5 1 TRIGGER_FLIP
lever 3.5 10.5 1 TRIGGER_FLIP
lever 9.5 16.5 1 TRIGGER_FLIP
lever 7.5 12.5 1 TRIGGER_FLIP
lever 9.5 12.5 1 TRIGGER_FLIP
spider 2.5 8.5 DOWN
spider 11.5 8.5 UP
spider 13.5 10.5 UP
spider 11.5 6.5 DOWN
spider 11.5 17.5 RIGHT
spider 13.5 6.5 LEFT
key 11.5 6.5
trigger key 1
player orientation LEFT
dialogue Seriously, where have all the good keys gone?
change_level
end trigger
\ No newline at end of file
set brown
tiles
WWWWWWWWWWWWWWWW...S
W W W S
WW S S S
W W S S
W W W W S
W WWWWWWW S