August 2009 challenge: “Feather”

Quetzal - Postmortem: Quetzal

Posted by Tee on 2009/09/06 20:14

And another Pyweek ends. :)

I liked my idea and how the game turned out, but for some reason during development I wasn't as excited as I usually am. I'm not sure why; maybe Pyweek is kind of becoming routine for me. :) I'm satisfied with my entry, although I feel like I could've done better. At least, this time, I managed to "finish" my original entry (unlike my two previous Pyweeks which turned into a "game in one day" competition because I went too ambitious for one week). Well, "finished" without polish/intro/in-game-instructions/sfx, without proper testing and without balancing, that is.


I had problems finding an idea using the feathers theme. I started two days late due to other issues and I was somewhat hoping I would have a good idea in these two days, but nothing came up. Finally, I decided to make a more traditional side-scroller shoot'em up game. I personally like innovation and creativity in games and I always try to make my games with something that's at least not too common. So, even though I wish I had a better idea, I decided to throw a little platforming on the shoot'em up to make it a bit different. The feather theme fit well with that.

I'll speak a bit about the game here and the intended strategy; if you haven't played, this post probably won't make much sense.


The implicit theme of my game is an Aztec priest/mage who drains powers from flying feathers trying to defend his people from the (flying) invading Spaniards. Not that it matters much. :) Anyway, the core of the game is that the hero must jump from feather to feather to be able to attack and at the same time avoid the enemies.

I wanted the game to encourage the player to jump from feather to feather to create tension and that feeling that you're always close to falling. I added two elements for that: 1, if you stay on a feather too long it decays and, 2, you keep the "attack" of the feather for a few seconds after you leave it. So it's always a good idea to change feathers given that you always gain or "reset the timer of" an attack when you land on one. After the player learns that, the player should hopefully try to change feathers as often as possible. I think that's the optimal strategy, unless someone finds another one.

I also wanted to encourage the player to kill the enemies without having any kind of score system and without much work. I did that by having the enemies respawn (at most two times) if you don't kill them. So killing them is always a better choice, because, if not, you'd end up having to kill them along with new enemies. Hopefully it should be evident for the player, but I'm not sure. Maybe the player would have to play for a few times to realize that. Even if it's not evident, I wouldn't have time to do anything about it.

There is only one level and it lasts a little less than 4 min (that's when the music ends - I wanted to synchronize it better with the music, but I didn't have time). Creating enemy patterns by hand took longer than I thought, and I did it in the last few hours of the challenge. So you'll probably notice that the closer to the end you get, the lazier I felt to add new and interesting patterns. :) I wanted to add a boss, but that didn't happen (saw that coming).

I tried to add some sense of progression, but I had too little time for that. I think I messed up the difficulty towards the end; it gets particularly difficult near the end. Since I was running out of time, I just threw in 12 lives and hoped it would at least not make it so bad. I know it's an ugly fix that doesn't really fix at all (and even decreases the tension), but it was the best thing I could do at the time, since I didn't have time to test and tweak it further and I didn't want to see people frustrated for not being able to finish the game. Ah well.

Another feature that attempts to add progression is allowing you to have more feathers and more combos as it goes. I think that part is ok; it would have been too overwhelming if you had everything from the beginning.

I think I achieved what I wanted from the "same color combos" (you only get them later on the level and you use them by landing on a feather of the same color while you still have that color's attack activated). They're not easy to use, and once you use it, it's not only powerful but necessary towards the end. It feels the way I wanted it to be, except for two unintended consequences: it's a bit too based on luck (the feathers you get are uniformly random) and if let yourself be overrun by enemies, it's too hard to use it (and since it's somewhat necessary, you're pretty much doomed at that point). So maybe a good strategy here is to focus not being overrun by enemies and to keep the combos as activated as possible. And also not die, because if you do, you lose your combo. But maybe that's not so clear for the player. Anyway, figuring these things out it's part of the game (and if you haven't played the game yet, I'm probably spoiling it for you :)).

Anyway, that's it. I haven't gotten much feedback yet and I'm looking forward to see people's opinions.


Some entries look really great. Unfortunately, I might not have time to judge all games this time. Maybe I'll pick a few at random and judge them.

I appreciate any feedback. Feel free to be verbose in your rating comments.

Thanks to Richard for hosting it. See you all next Pyweek!

13 comments

NoTeamImplemented(Yet) - A lot of Trouble

Posted by T-002 on 2009/09/06 20:09

Hi guys,

I had a lot of trouble this week, so I didn't finish anything.

Hopefully it gets better next pyweek.

2 comments

Featherbound - My game crashes without AVbin. What should I do?

Posted by eugman on 2009/09/06 17:59

Apparently, my game crashes if people don't have avbin installed because I have it trying to load mp3s. Any suggestions on the best way to deal with this?

6 comments

Subreal - Rise of the magical phoenix - Comments

Posted by john on 2009/09/06 17:43

If anyone has any comments on our game, please mention here :)

2 comments

Pempenberd - DONE

Posted by ZeuglinRush on 2009/09/06 17:06

I'll probably make a postmortem at some point, but for now:

AWESOM THENG:
the game is under 20 kilobites!
the character physics worked correctly on the first try!
the levels are more fun to explore than I thought they'd be!
cool open world game!

FAEL THENG:
no enemies!
no saving!
had to cut out the egg opening part!
really obvious collision detection edge case!
a rare case where it generates over 9000 birds in the map!

all in all, the AWESOM:FAEL ratio is about 4:5, so I'm happy enough for a first time entrant.

1 comment

yield None - Speed fix

Posted by Pig on 2009/09/06 14:45

I've been reading other diary entries and speed "fix" (final-fast). If this is not allowed, please judge with the previous version.

I realized that drawing (pygame.draw) directly on the display surface was much faster than drawing on another surface first and then blitting it. Maybe its because my surfaces were sparse. I was only using the other surfaces to manager layers.

If it is still too slow for someone, there are some more layers than I can draw directly so I can add another version if anyone needs it.

Add a comment

robonic - Hmm

Posted by RB[0] on 2009/09/06 14:35

There appears to be a phantom bug in level 6 using the chicken gun - where if you shoot the game crashes.
This has only happened on one test computer and we didn't get a stacktrace - so if anyone has this happen, please post a traceback so we can fix it...
And then just try again, it is rather rare and you can definitely play through the entire game without seeing it...

Thx :)

3 comments

John's Pillow Factory - Add image 2

Posted by bart on 2009/09/06 10:21

work in progress

3 comments

A Murder of Crows - Some stuff I meant to write throughout the week

Posted by FatHat on 2009/09/06 09:08

I meant to write blog updates throughout the week, but that was before I realized that trying to make a game in a week is time consuming enough without these blogging shenanigans.

So here's some history on the game conception. The idea originally came from Adam Carolla's rants on crows:
http://www.youtube.com/watch?v=oV09m3k2_iE&feature=related
http://www.youtube.com/watch?v=3BXMrsoKQxY 

The first idea was that you'd have a guy walking around, and you had to use your attack crows to solve puzzles and protect him. I still think this was a pretty good idea, but when we started writing the game we realized attacking things with the crows was way more fun than pretty much anything else. Also, uh, puzzles take a long time to make. That's the main thing. We barely even eeked two levels out.

From a technical standpoint, this was HARD, because we were doing things that Box2D did not approve of, so it took every opportunity to crash. We ended up having to use a custom compiled version of Box2D to up the contact limit so it would stop crashing. In retrospect I wish we had used Chipmunk, but Chipmunk didn't have some of the features we needed. Also, I'm rather proud of the dynamic animations. Granted they lurch around like a lush drunk, but man, it lets us do things like pull off peoples limbs and have them hobble around without any extra content work.

2 comments

Tenshee - A little tutorial

Posted by mmkay on 2009/09/06 07:45

  1. You have to keep your angel in the air as long as you can.
  2. Use your mouse, moving it left or right makes the angel follow your movement.
  3. You can't move the angel up or down, it loses feathers, and it's lost the ability to fly freely.
  4. There is one way to move it up, though - you can locate it above one of the chimneys.
  5. As the angel is losing feathers, more and more powerful chimneys are needed.
  6. Clouds block you on their level, when you go into them. It may be useful when you're falling, but may block you from soaring upwards.
  7. When the angel touches the ground, you lose.

Add a comment