by Damian Yerrick
How do you like to go up in a swing,
Up in the air so blue?
Oh, I do not think it the pleasantest thing
Ever a child can do!
Robert Louis Stevenson, "The Swing",
A Child's Garden of Verses (1885)
This is a prototype of a puzzle platformer that I plan to port to the NES once it's done. It stars a character who compensates for his lack of lower limbs by carrying a grappling hook and using it to swing from whatever object is above him.
First install Python 2.7 and Pygame. Windows users should download and run Python 2.7 (Win32) and Pygame (for Python 2.7 Win32). Linux users should usually install Pygame through the distribution's package manager (for example, on Ubuntu, sudo apt-get install python-pygame).
Then run the file wbb.py
. UNIX users may have to make it executable first (chmod +x wbb.py).
When you start the program, it scans the USB ports for Xbox 360 Controllers or other game controllers. If a new controller has been plugged in, it asks you to press the button for each function and saves the bindings for next time in wbb.kyb
. Otherwise, it defaults to keyboard controls. Or you can change this by pressing Tab on the screen that lists the controls.
To enter a ladder from the top, scoot backward. To leave a ladder, anchor a rope and press away, or reach the top or bottom.
You won't be able to scoot more than twice your height away from where the rope is anchored.
There are two ways to pump while swinging: as a driven oscillator or as a parametric oscillator. The "driven oscillator" is most like the common way of swinging on a swing: press Right or Left to lift your body while swinging forward, then let go while swinging backward. The "parametric oscillator" is a bit trickier, but it can help you whip yourself across large gaps: press Down for a little boost just before the highest point of the swing, and Up at other times. To kick a crate forward, descend just before you hit it.
You can make your own levels now by running leveleditor.py
.
The levels are stored as column-wise Markov chains, where each tile is predicted from the tile above it. For example, it places solid dirt below a grass tile, the bottom half of a door below its top half, and post sections below a street lamp. This makes it easier to build a house, as you only need to define the roof. It also means you can't just have a floating platform; you need some other tile to hold it up.
If you want to suggest more tile types, meet me on IRC. I hang out in #nesdev on EFnet under the nick "tepples".