Starting to look like a game

Balloon Escape

Escape from a valley that is flooding. The only way to escape is UP - in a hot air balloon! On the way, you have to intercept fuel that is parachuted down and avoid hitting the walls, crows and maybe other hazards. This is my first try at PyWeek, let's see how far I'll get. ;-)


Give this entry an award


Ratings (show detail)

Overall: 3
Fun: 2.7
Production: 3
Innovation: 3.3

12% respondents marked the game as not working.
Respondents: 42


File Uploader Date
Final version!
xorbit 2007/04/07 23:29
Starting to look like a game
xorbit 2007/04/06 04:37
The fire is burning, the bird is flying and the parachute is swaying!
xorbit 2007/04/03 14:36

Diary Entries

Hey... progress!

Yesterday was the first day I could do some coding in the evening, and I made more progress than I had expected! It keeps amazing me how fast you can whip something together in Python. Maybe there is hope I'll have something playable by the deadline after all.

Of course, compared to alot of you guys who have working games already, progress may seem minor. ;-)

I put together a class based on pygame's Sprite that will manage loading my graphics and animating them using an animation state that I can set for each object. Animation states and how they should be shown are defined in a little text file that I create for each object.

I figure getting this groundwork laid will save me some time to get the actual game going. I like to work bottom-up by first making smart building blocks that I can then just piece together.

I also put together some graphics - not the best job ever but they will do.

Today I will try to breathe some life into these 'animated' but otherwise static objects and implement some game logic.

Add a comment

Things are starting to move

Yesterday I got the balloon and crow behavior classes implemented. The crow was fairly simple, but the balloon took more effort to get right than I had expected.

In my first attempt, the balloon would instantly rise when the flame was on, but that wasn't very realistic. The flame heats the air in the balloon, which will increase lift, which in turn will get the balloon going up. It is kind of a slow process and my current implementation simulates it pretty good. It took some fiddling to find the right balance between the correct physical behavior and not causing too much player frustration. :-) I will probably have to do more finetuning once everything is implemented, but this is a good start.

I decided that (as is the case with a real hot air balloon) no directional control will be implemented. Instead, there will be windy layers in the trench, so the player will have to raise and lower the balloon into these layers if the balloon needs to be nudged in a certain direction. These layers will also pose a challenge as they may push the balloon into a wall. Besides the challenges of avoiding crows, limited fuel supply and catching parachuted fuel, having to work with these windy layers will add a puzzle-like aspect to the game that should make it more fun to play.

Add a comment

Starting to look like a game

This is finally starting to look like a game! The balloon, crows and parachutes are all doing their thing. The most important part not implemented yet is the wind. So at this point there is no way to use the wind to move left or right, which isn't that great. :-)

Things still to do:

  • Wind layers, and visible indication of wind direction. I haven't decided yet if it is going to be flags on the trench walls or moving clouds that will indicate wind direction and speed. Clouds would be cool but flags may be easier to do.
  • Improve collision detection - pygame's rectangular detection scheme doesn't work great on a round balloon. ;-)
  • There should be water at the bottom of the thrench of course...
  • Win (reached top of trench) and loose (you're in the water) conditions that end the game.
  • HUD bars indicating lift and fuel level.
  • A menu to start the game, quit and maybe choose a difficulty level.

Too much to do... ok back to work now.

1 comment

Yes! Done and uploaded on time!

Yikes, with only 45 minutes to go the server seemed about ready to croak. It took me 15 minutes and multiple tries to get my entry uploaded. I was so relieved when it finally got through! Didn't want to see a week of hard work and lost sleep go to waste.

I am happy with the final polish of my entry. I didn't get any sound effects or music into it but that is about the only thing missing. I had put alot of extra stuff in my code to make it possible to resize the window and rescale everyhting on the fly, but in the end I couldn't get all of it to work correctly and had to resort to making a fixed size window. Oh well, lesson learned for next time.

I also wish I could have spent some more time on finetuning the difficulty parameters. I think the two highest levels are just about impossible to win now. If anyone makes it to the top at the highest difficulty level, I sure would like to hear about it. :-)

Congratulations to everyone who managed to crank out something working in a week, I look forward to playing your entries!

Add a comment

Balloon Escape - Feedback response

I decided to follow HanClinto's example and post a mass feedback response. I'd like to thank everyone who tried my game and posted feedback, whether positive or negative. Unfortunately I didn't return the favor to all of you, since I didn't have enough time to try all entries before the deadline. :-( Sorry about that. Anyway, on to your comments.

Interesting gameplay, limiting the control to velocity.. Clean graphics too.
Thank you. I whipped out the graphics in a hurry and had to use the mouse (yuck!) instead of my drawing tablet (which I haven't gotten to run yet on my new PC), so I'm glad to hear the graphics were appreciated.

kind of boring game after a moment, but kudos for the effort
Any suggestion on what would make it more fun?

Fun game, but there's almost no control over the balloon. Also you had the "Segmentation Fault" again so I had to use python 2.4.
As for lack of control, that's of course the main challenge of the game. But I concede that in the current implementation, it makes things too hard sometimes. As for the segmentation fault, that is my biggest disappointment after seeing the ratings. I realy had not expected a problem like this. :-(

Cool idea, well implemented. Needs a bit more variety/levels, and a second chance if you get hit.
Thank you. I agree a second chance would make things better. I probably should add a "balloon health" bar that indicates how close you are to having a popped balloon.

Too many ways to lose; so winning depends a lot on being lucky... A lot of time I felt I had very little control about what happens (being able only to choose between different ways to lose).
This is true, unfortunately. It turns out that the randomly generated wind layers turn out unbeatable sometimes. You may end up with five wind layers in the same direction in a row sometimes, which makes it nearly impossible to not hit a wall. I ran out of time to make this more distributed evenly. I guess for now you have to keep trying until you get a fair level. ;-)

a bit difficult sometimes: there are so many ways you can lose! :) graphics are simple and nice :)
Thank you! :-)

Game caused a segmentation fault in Python2.5(winXP), but ran fine in Python2.4(winXP). Crazy-hard!
Thanks for trying it in Python2.4. I wish I'd had time to test it in 2.5.

Segfaults under Windows for using the incorrectly (load instead of filepath on some occasions, like when loading images in pygame). This isn't also as easy to fix as some of the others, because on some occasions load is actually used like it's supposed to too.
:-( I still don't get what I was doing wrong by using load instead of filepath? Why would it work in 2.4 and not in 2.5???

This really needs some sounds!
Agreed. They were planned but I ran out of time...

The idea that you can only use air currents to move sideways is interesting, but that makes the game quite tough. I wasn't able to have much fun because of this lack of control.
Yes, I still think using the air currents is the right thing to do for the game, but they should be distributed more evenly. For the moment you have to retry too often because of unbeatable levels.

Even the easy level was hard
Agreed. I wish I'd had more time to balance the game.

Loads of fun! This game is really good, and very well balanced such that I was able to beat the game on even the hardest difficulty with enough tries. Some of the hard levels felt un-beatable, but you just start a new one and do your best -- it was all a lot of fun! The graphics were cute, and I loved the sprite of the deflated balloon falling towards the earth -- it felt really natural (even though I didn't enjoy losing that way). I was also *extremely* impressed with the collision poly on the balloon -- birds and rocks colliding with the basket didn't pop the balloon, and I thought that was really cool. The only slight beef I would have is that fuel canisters can't be picked up by the basket, but that's the only thing that I found off with it. It's also not entirely clear how to quit the game -- I didn't realize until much later that "Chicken" meant quit. Still, it's funny. :)
Thank you, I'm glad to hear that at least one person really enjoyed the game! :-) I have to agree with most people though that gameplay at the moment is not always balanced. I guess if I make the lower levels simpler, I'll have to keep the hardest level the same just to keep you happy. ;-) I'm totally amazed you did beat the hardest level, as I never succeeded myself... In a future version I'll have to make the collision detection for the fuel canisters different from the other objects, I agree you should be able to pick them up with the basket. Glad you enjoyed the game!

Very good interpretation of the theme. THe game was fun to play, but pretty short.
Short? Randomly generated levels provide endless gameplay!

Nice idea, could be better though, but then there is always next time!
Hey, for giving me THIS low a score, you owe me an explanation as to what "could be better"!

Nice game. It was kinda weird that a single bird would make the balloon fall, but a fuel tank would not...
Explanation: it's a game. ;-) I agree that I should add a "health bar" and not have a single crow pop the balloon though.

very cool, once I got it to run ;)
Thanks, glad you didn't give up immediately!

it is very difficult to play add some music
Don't know about music, but I plan to add sound effects.

The game has the same problem as a couple of others, it tries to load fileobject to a surface (=> python seg fault in windows). (Easy fix, change to imagefile = data.filepath(..)). The two bottom menu alternatives are not visible (but who needs them anyway?). Other than that, a nice game. I like the "slow" gameplay, you cannot just go up and trust your reflexes, but have to plan ahead. And the graphics is nice, with transparent balloons and all. Plus a very well documented source code!
Thanks a lot for providing the solution to the crashing problem! I had absolutely no clue how to fix this otherwise, since I didn't know what the problem was. Why does this happen??? According to the pygame documentation, you can pass either a file name or a file object to "load", so why does it crash in Python 2.5 while it works just fine in Python 2.4? Anybody have any idea? A python script shouldn't be able to do _anything_ that can cause python to crash with a runtime error. Looks like a bug in pygame or python.
The menu size is another annoyance. I delibirately stuck with the default font to avoid this kind of problem since I didn't have time left for compatibility testing, but it seems that didn't help...
I'm glad that you worked your way past the problems and enjoyed the game though. :-) Not all people seem to "get" the fun resulting from the "slow" gameplay, I'm glad you did.

Nice game idea.. i also wanted to do such thing but wanted something else eventually. The game itself is finished and as such it is not bad at all.
I hope the "something else" got you a better score. ;-)

Kept getting fatal errors
Yes, bummer...

Winning or losing on this game mostly depends on luck, I think there are too many random elements and not enough control.
I think having better distribution in the wind layers should help with this. I don't think the other elements are TOO random. If the wind gets fixed, the other random elements should be manageable.

Frustrating. The up and the down. The fickle blowings of the wind. A definite challenge.
It's meant to be a challenge, sorry to hear you thought it was frustrating.

Nice game. I was first thinking that the falling fuel will damage the balloon. You know, I was too lazy to read the README.
Thanks, I'm glad you liked it! Maybe the fuel canisters look a little bit like bombs. :-) Hmm, maybe there is an idea here to add to the game: some differently colored canisters are bombs and should be avoided instead?

The theme is clearly followed: the only way is up. There do seem to be many games involving a balloon, however. I like the graphics: the balloon breaking and going down is fun to watch a few times. It would've been nice if there were at least minimal sound. I found the game quite hard (even on wimpy), and since the rewards for making it higher are unclear (a high score would have been nice, for instance), it didn't really hold my attention. I noticed the controls seem a bit strange. When your fuel has gone out your burner seems to continue to burn at full speed even though I have no more fuel. Similarly, you'd expect me to be able to cut downward speed too when out of fuel, as stopping to vent air shouldn't cost anything. Did I see that wrong? For nicer game play I think this game should be easier, less crows even than on the easiest mode. Perhaps response to controls should be faster, and sideways motion faster, to speed up things. It'd be nice if there were some bonuses that would shield the balloon for a while, or do other nifty things.
Sound, hard to win, high score: agreed. I'm not sure about your troubles with the controls. It might be a bug, or you might have confused the fuel bar and the lift bar. As far as I know, the flame stops when you run out of fuel. Your balloon is still full of hot air however, so it will keep lifting for a while. And you can vent air when you're out of fuel, but you will not immediately go down, since you can't get rid of all hot air in an instant. Plus there is some inertia in the response of the balloon to the lift force. I think I want to keep the response and gameplay kind of slow, but bonuses coming down on parachute is definately a good idea.

could not see the whole menu. fonts too big? nice idea.
Menu looked fine on Linux, too big in Windows. So much for portability.

A very good first pyweek entry, though is missing sound. I missed having control over the balloon, felt like venting air really didn't do anything. Original idea though (as far as I can tell)
Thank you! Yes, sound should be added. Try venting air when you just start, and see what happens. ;-) Venting air when you have a high amount of lift may not have obvious effect, getting rid of alot of hot air takes time. The effect is more obvious when you're easy on the trottle and vent, which is how the game is intended to be played, with slow and steady control.

Kind of hard.

Nicely done. The lag between input and response is frustrating. Perhaps some realism could be sacrificed for more fun.
I tried to find a good balance between realism and fun and may not have succeeded all the way. Possibly I could start with less realism and increase with difficulty level. But it is nice if the balloon keeps responding the same in all levels so you can transfer what you've learned in the easier levels and use it in the tough levels.

Very nice graphics, and nice idea, but I just couldn't get to grips with it enough to get more than a few feet above sea level. Too easy to end up floating towards one wall or the other without any correcting wind in reach.
Yes, the wind distribution needs improvement.

Sry but could not run your game Config: WinXP Python2.5 Pygame1.7 Error Msg: C:\BalloonEscape-1.0>python Fatal Python error: (pygame parachute) Segmentation Fault This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
I hate this problem. Sorry it didn't work for you.

fun game, manouvering the baloon is tricky but rewarding when it works. it's missing polish (sfxand a simple highscore to see how far I came - in meter or smth - would be nice).
That's the spirit! :-) Yes, sound effects and high score would be a nice addition.

Just add some music, sound and a 'Splash!' animation when crashing down - then the game's almost finished. Yeah, some kind of score may be nice, too. The game itself is already fun! :)
Thanks! The splash animation was the next thing on my to-do list that didn't get done before the deadline.

I tried to run this game under windows and received a "runtime error" ["This application has requested the runtime to terminate in an unusal way"].
Sorry it didn't work.

funny game with almost no menu and settings possibilities and only one level. Score and bigger level can longer fun.
Not one level, infinitely generated levels! ;-)

Not bad, but a little more control would be nice, and it has some great potential for sfx that are unfulfilled.
Agreed, too bad SFX didn't make it in.

The controls were quite frustrating, although I did manage to make it out of the canyon on most settings except the "Dare me" one.
Sorry to hear you found the controls frustrating, but it seems that at least the game kept your attention long enough to make it out on most levels. ;-)

A bit hard even on the "wimpy" setting, but with some practice this turns out to be a fun game.
Thanks! I agree that because of the random level generation, even the "Wimpy" setting can be tough. I plan to improve that.

Lacks a bit of fun as you can't control your balloon that much, it's quite a bit of just watching and praying. Nice graphics :)
Thanks for the feedback. I guess I should think about less realism and more fun in the easier settings.

It certainly was an innovative idea to restrict control to the height of the flame, a lot of the time though, death feels random, when the wind blows you into the wall etc. Easier levels ramping up to the harder ones, and more obvious wind flow (instead of random, only have wind where you can see exactly what the wind is doing) would improve it a lot.
True, the wind distribution needs to be improved. Actually each of the flags is at the center of a wind layer so you can guess where the wind changes. When you cross between layers, you get wind from both layers. Hmm, I think that just made me discover a bug. The winds just get added up when crossing wind layers, instead of being averaged I think. I'll need to fix that.

Great little game. Cool concept.

A nifty idea, and smoothly implemented. With greater variety, this could be a very nice game. A comment about the controls -- if the orange bar is meant to represent the amount of hot air in the balloon, the balloon's speed should be proportional to it. Having a delay is okay, but the delay should be in the time it takes for the orange bar to rise or fall -- there shouldn't be an additional delay between that and the balloon's speed changing.
Thank you for your positive feedback. Actually, the orange bar represents lift (proportional to hot air in balloon), it turns blue and goes down if it is less than gravity. Lift is a force that causes acceleration, which in turn causes the speed to change. Lift isn't proportional with speed, because of inertia that has to be overcome. In other words, if the balloon is dropping, warming the air in it will cause a force up, that has to first slow down the balloon before it can start to go up. Of course, since this is a game and not a simulator, it may not need to be this realistic. I think this isn't the biggest problem with playability though, unfair wind conditions being the worst in my opition. I'd prefer to keep balloon behavior close to realistic while improving playability in other areas.

I think the player does not have real control over the balloon. Just a little bit left/right steering would have been great.
You're supposed to play the wind layers to steer left and right, unfortunately the way the wind layers are randomized now, they might create a no-win situation.

Segmentation fault in windows...Shame, looks nice in the pics...
Unfortunate. :-( Next version should fix this.

Good job for a first entry. =)
Thank you!

I quite enjoyed this game. The lack of direct control was almost refreshing, because there is a strategy (and a clear one at that) for getting to where you need to go. I liked the graphics, and the game had a very even flow to it. Thank you!
Thank you very much! You describe exactly what I wanted to accomplish. When I fix the wind layers to be more fairly distributed, it should improve the chances of being able to use the strategy.

Fatal Python error: (pygame parachute) Segmentation Fault This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
Unfortunately, that didn't happen before the deadline...

Was kinda fun :) Some sounds would've been nice. And the collision detection failed sometimes.
What do you mean with failed? Detected a collision when it shouldn't have, or no collision when there should have been one?

Nice graphics, but there are some ways that I think the game could be improved. I think that one level is too little, so that either more should be added, or it should just be one long level and then you could get score for the altitude that you achieved before crashing.
I still think of it as infinite random levels. ;-) I suppose I could maybe add a little more variety to them (different sorts of rock, other obstacles).

What I take away from the feedback:

  • It is impossible to make everyone like the game. The challenge of the game is lack of control and slow response, so you have to be very controlled in your use of trottle and vent and plan ahead. Not everyone likes this. But if I would change it, the people who love how it works now would be disappointed. So I'll keep it the way it is, since that is how I intented it to be.
  • Optimizing and balancing basic gameplay is very important. I go to this too late. I only added the wind layers the last day, and they are crucial to the gameplay. They weren't optimized and it is obviously hurting gameplay.
  • Don't expect compatibility between different platforms and versions. I thought developing in Python 2.4 would imply it would work fine in 2.5. Not so. I thought using the default system font would prevent problems with the menu. Not so. Really too bad.
  • Sound matters. :-) I knew this already, and had planned to have sound, but it fell by the wayside due to lack of time. This cost me more in the ratings than I had expected.

Things I'm going to add/improve, in order of importance:

  • Fix the Windows Python 2.5 crash.
  • Get those wind layers distributed better to avoid impossible-to-win levels and make the easy levels easier.
  • Fix wind layer crossing bug so winds get averaged instead of added.
  • Fix the darn menu.
  • Add sound effects.
  • Add a nice splash animation when hitting the water.
  • Add more different trench wall blocks/rocks for variety.
  • Get window scaling working all the way. It is annoying to have all this scaling code hanging around uselessly.
  • Add life so one single crow doesn't instantly kill you.
  • Add bomb parachutes to avoid.
  • Add a variety of bonus parachutes (shield, free fire for a time, one-shot directional control, ...).
  • Add a high-score system.