pygame is
Simple DirectMedia Layer is
Site Swing

GraviQuest - 0.4

David (animatinator)




GraviQuest is a platformer/puzzle game in which the objective in each level is, unsurprisingly, to reach the goal. However, this task is made slightly more complicated by the fact that it will often be necessary to 'rotate' gravity in order to reach said goal.

How to play

To play the game, run ''. This will start up the main menu, from which you can select from one of many now-working options (only 'Instructions' isn't implemented yet)!. Not content with just making a normal menu, I decided to make it a nifty spinny thingy - you can scroll through the options by shifting your mouse in the appropriate direction.

In keeping with tradition, you move your character left and right with the corresponding arrow keys. The up arrow is used to jump, and the 'Q' key quits to the main menu. Blocks with funky spinny patterns on them will rotate gravity - green rotates it to the right, and blue to the left (the spinny pattern also indicates its direction). The goal is marked out by a funky door graphic which I have still yet to replace with something more suitable :P

Known bugs

  • You can still jump in midair between walking off a ledge and hitting something below it. It's proving more difficult than expected to fix ;-)
  • The character sometimes refuses to fall when it reaches the edge of the screen (normally when falling to the left) - I'll fix this when I work out what's causing it.

That's pretty much all that's still to be fixed :P


This release adds improved graphics, a better tile system, an animated character sprite, saving and loading of game progress, a pause menu with screen-capturing, a nifty credits sequence (with fireworks!), music for the aforementioned credits sequence and many, many bugfixes!


Home Page:


click to view original size


GraviQuest - 0.4 - May 4, 2009
GraviQuest - 0.2 - Apr 16, 2009 account Comments

If you wish to leave a comment with your account, please sign in first.

May 4, 2009 3:35pm - David - nickname: (animatinator)
Better a week late than never :D
The reason this one's been uploaded a week later than expected is mainly because my internet connection was really patchy last week, so I didn't manage to get the thing to upload properly.
April 26, 2009 3:46pm - David - nickname: (animatinator)
Thanks for the comments and suggestions everyone :)

tgfcoder: Yeah, that tends to happen with the site I use, normally refreshing once or twice fixes it.
flan: "menubg.png" is fixed now :) The speed issue has also been improved by only loading the images once (I probably should have thought of the effect hundreds of images would have had on the game at the time :P).
tgfcoder: As flan mentioned, all those functions are ones that were added in Pygame 1.8 - you'll need to update to run it I'm afraid.

Since the first release, I've added a massive amount to the game - it now has a fully animated character, tile edge and corner pieces (the level loader automatically detects which pieces are edges and which are corners etc.), loading and saving of progress, a pause menu, a smoother camera, new graphics, a nifty credits sequence with fireworks (I was bored :P) and many, many bugfixes :D And I finally fixed that confusing redraw error (by accident) this afternoon :P
I intend to fix a few things and then hopefully upload the next release sometime tomorrow, if all goes well.
April 17, 2009 11:16pm - Neil Tallim - nickname: (flan) was added in Pygame 1.8.0.
April 17, 2009 11:06pm - Jordan Trudgett - nickname: (tgfcoder)
I downloaded it, and after renaming the image menubg.png to Menubg.png, and changing class foo():'s to class foo(object):'s (Python 2.4), and changing smoothscale to scale (Pygame 1.7.1) I got this:

if pygame.sprite.collide_rect(self.character.sprite, potential[1]):
AttributeError: 'module' object has no attribute 'collide_rect'

=( again.
April 16, 2009 7:22pm - Neil Tallim - nickname: (flan)
You need to change "Menubg.png" on line 23 to "menubg.png". Non-Windows platforms are case-sensitive.

As for the speed issue, things seemed quite smooth here, but the game was eating a whole ton of CPU power. You might just have to lower your framerate a bit, at least until you figure out some techniques to better-manage your drawing overhead (maybe you could define a FloorBrickLayer class that would handle positioning and drawing a whole row of FloorBricks in one step, giving Pygame only one rectangle to repaint, and possibly allowing you to pre-cache the entire representative sprite efficiently).

You might also want to reduce memory overhead by, instead of loading floorbrick.png and block.png for each sprite, load and convert those surfaces once, then set self.image equal to that one object.

Overall, it seems like an interesting concept -- I'm guessing you had the last stage of Sonic & Knuckles or something similar in mind, and wanted to see how far you could take the idea -- but I wasn't able to actually hit a spin-block before realizing I should probably be studying for finals.
April 16, 2009 5:06pm - Jordan Trudgett - nickname: (tgfcoder)
I get an Internal Server Error when I try to download it :(

our projects welcomes all python game, art, music, sound, video and multimedia projects. If they use pygame or not.
recent releases
Apr 16, 2014

Apr 13, 2014

Apr 9, 2014

Mar 18, 2014

Mar 15, 2014

Mar 14, 2014

Mar 13, 2014

Mar 11, 2014

Mar 9, 2014

... more!
for pygame related questions, comments, and suggestions, please see help (lists, irc)