Yaya Zaza Code
Brought to you by:
kwikrick
Crossed Paths
-------------
Entry for the November 2020 Pygame Jam
(Theme: Retro Paralell Worlds)
by Rick van der Meiden
Copyright Rick van der Meiden and others (see LICENCE).
Running:
--------
Requirements:
- Python 3.x (tested on Python 3.8.5)
See https://python.org
Tested on Linux with Python 3.6.9, Windows 10 with Python 3.9.
- PyGame 2.x (tested on PyGame 2.0.1)
See https://pygame.org
Tested on Linux with Python 3.6.9, Windows 10 with Python 3.9.
To run, execute crossedpath.py using the python(3) interpretor.
From command line:
python crossedpaths.py
or:
python3 crossedpaths.py
(depending on your OS)
Or run crossedpaths.py from your favourite file explorer.
Playing
-------
Each level is a puzzle. The goal is to let all player characters
escape, by walking of the edge of the screen.
Use keyboard or joystick to move the characters.
Should be pretty intuitive. Press F1 for help on keys.
Note that you can push boulders and also pull boulders. To
pull, hold primary action key (Shift / joystick button 1)
while close to a boulder.
The Esc key always returns to the main menu.
Press F1 to see the key/button bindings.
Editor
------
Use the mouse to move the cursor (no keyboard-only or joustick controls yet).
Levels consist of layers. These layers are drawn over each other, in the given order.
In each layer, tiles are placed. Tiles are used for all objects: floors, walls, characters, etc.
Different layers have different uses in the game:
Layers:
1 FLOOR1 used for floor tiles, no collision with characters
2 FLOOR2 used for floor tiles, no collision with characters
3 WALLS1 use for obstacles, characters will bump into these tiles
4 WALLS2 use for obstacles, characters will bump into these tiles
5 OBJECTS generally used for players and other charaters, movable objects, doors.
6 CEIL1 drawn above characters, no collisions, used for ceiligns and high walls
7 CEIL2 drawn above characters, no collisions, used for ceilings and high walls
Using keys 1-7, the active layer can be selected. Press M to toggle between
showing only the active layer (mono-layer) or all layers on top of each other.
There is a single texture file for all the tile patterns (tiles.png).
The texture is the same size as the screen (320x180 pixels).
Holding TAB shows this texture and allows you to select a tile pattern. After releasing
TAB, the layers are shown again and the selected tile can be placed in the active the layers
by pressing mouse button 1. Tiles can be removed by pressig mouse button 2. Tiles
ar placed in a 16x6 grid, but tiles that are placed on the layer can also be moved precisely
using the mouse button 3.
You can change the level to edit by pressing PGUP, PGDOWN. You can preview (play) the
level pressing F5. Don't forget to save the changes you made, by pressing S. Reload the level,
undoing all changes, by pressing L. The texture can also be reloaded (T), which is useful when
you have made changes the texture using an external program (you cannot edit the texture in the editor).
Tags:
Buttons can be used to trigger changes in the level. Any tile can be shown or hidden when a trigger
is activated. This is also used for opening en closing doors. Note that only the button tiles can be
used to trigger effects. All other tiles can respond to the trigger.
A tag number can be assigned to a tile (button and other tiles), press KEYPAD + or KEYPAD -.
The tag is a a number from -9 to +9; The default is 0 and means no effect is triggered by
or on this tile. When the tag number is negative, a number of RED dots is shown on the tile.
When the tag number is positive, a nunber of green dots is shown on the tile.
When a button with a given tag number is pressed, an effect is triggered on all tiles with the
same tag number, or exactly the negative tag number. So, a button with tag=1 affects all tiles
with tag=1 or tag=-1. A button with tag=-2 affects all tiles
with tag=-2 or tag=2. Etc.
The effects are as follows:
BUTTON TAG | TILE TAG | EFFECT
--------------------------------------------------------------------------------------------------
POSITIVE POSITIVE show tile when button is inactive; hide tile when button is active
POSITIVE NEGATIVE hide tile when button is inactive; show tile when button is active
NEGATIVE POSITIVE hide tile when button is inactive; show tile when button is active
NEGATIVE NEGATIVE show tile when button is inactive; hide tile when button is active
Note that when a hidden sprite is to appear when its tag is triggered, but a player is in the way, the trigger will
be delayed until the player is out of the way.
Crystals can also be used as triggers. When the crystal that has a tag number is destroyed, the effect is the
same as when a button with that tag was pressed (and never released).
Players can be killed by triggers, by giving them a tag. Triggering that tag will kill the player.
For the Xuxu character: tags are used to control it's behavior
XUXU TAG | BEHAVIOR
-------------------------
0 do nothing
1 go to the midpoint of all crystals with tag 1
2 move towards player
3+ do nothing
Keys/buttons:
Place tile under cursor MOUSE LEFT
Erase tile under cursor MOUSE RIGHT
Show tile patterns TAB (hold)
Select tile pattern TAB + MOUSE LEFT
Move tile MOUSE MIDDLE (hold)
Next level PAGE UP
Previous level PAGE DOWN
Reload level R
Reload tileset T
Save level S
Clear level C
Select Layer 1 - 7
Mono-layer mode M
Increase tagnumber Keypad +
Increase tagnumber Keypad -
Play level F5