I'm the developer of Blocks and Pink Pony.
Blocks is a minimalist 3D Jump n' Run in the Style of Super Mario 64. The whole level is composed of cuboid blocks which can be pushed around and even animated to form floating platforms. The purpose of a level is to get into the next level. For this you have to collect marbles and get to the goal. You can watch a video of the game in action here.
I recently released a new Bug-Fix version of Blocks. Among the changes are bug-fixes, some small tweaks and finally support for the catalyst drivers.
The newest version on SVN has a cool, new feature. I created a simple python library for generating level files. This makes it very easy to create a new Level:
I originally generated the levels in the C++ Source code, but the constant recompilation can get very tedious. We switched to an XML-Level format, but this turned out to be way to verbose and low level to be of any use.
Here is a short demonstration of a simple generated level file:
- {l Code}: {l Select All Code}
from blocks import Level, hsv
# Create level
level = Level()
# Set level properties
level.set_player_position(50,50,50)
level.set_light(25, 50, 100)
level.set_music("data/music/04 - Crystal Cavern.ogg")
# Add a solid base
level.add_fixed_block('red', (40, 49, 40), (20, 1, 20))
# Add a stack of movable blocks
for y in range(0, 10):
level.add_normal_block(hsv(0, y/10.0, 1),
(98-50, 100+y-50, 104-50),
(4, 1, 2))
# One marble
level.add_marble('turquoise', (46, 50, 50))
# An exit to another level. Entering this would load the 'levels/Castle.xml' level file.
level.add_goal('Castle', 1, (54, 50, 50))
# Floating text
level.add_text("This is a \n test", (50, 52, 45),
size=1.5, angle=180, alignment='center',
color='orange')
# Create animated block
actionBlock = level.add_action_block('blue', (35, 45, 35), (5,5,5))
actionBlock.add_x_move(25, 5.0)
actionBlock.add_z_move(25, 5.0)
actionBlock.add_x_move(-25, 5.0)
actionBlock.add_z_move(-25, 5.0)
actionBlock.add_restart(0)
# Write to file
level.write('levels/TestLevel.xml')
When executed, this script creates a level file which can be loaded with Blocks. The above would look like the following:
Since you have a full programming language at your service you can let your imagination run wild.
I created this level by loading an image with python and converting every pixel into a block. This only took about 25 lines of code.
You create links between level files by simply adding an exit with the name of the other level. Blocks will search for a file with this name in the levels folder. You can also create more than one exit per level to create complex interconnected worlds.
So, I invite anyone who is interested to check out the latest SVN revision and go crazy.
The library is lacking documentation at the moment, so just ask if you need help with anything.