(I never programmed with pygame before, but I would like to give it a try, just for fun.)
An implementation of Calvinball from Calvin & Hobbes -- make up the rules as you play, literally!
Ratings (show detail)
1% of respondents wished to disqualify the entry.
Just a bugfix.
A few improvements, cleaned up the code.
Needs improvement, but already fun!
A first playable alpha version.
PyWeek day 2
Well, the second day of PyWeek is over (for me, at last) and I have a barely working prototype; here's the obligatory screenshot:
The game is called Galvinball! and the rules are simple: you play against the computer and whoever reaches the ball first wins. But! This is a game inspired by the famous Calvinball, so you can make rules as you play. Just write WHOEVER IS CLOSE TO TREE FLIES and it'll happen!
I created a small DSL that parses rules, splitting them in "targets" (WHOEVER IS, EVERYONE, etc.), "filters" (CLOSE TO *, FAR FROM *, OVER *, TOUCHING *) and "actions" (FLIES, WALKS OVER WATER, MOVE FAST/SLOW, etc.) and applying them to the objects in the game. Actually the game starts with the simple rule WHOEVER IS OVER BALL WINS, and new rules can be added at anytime.
The core functionality of the game is very simple: a random map with trees, water, walls, etc. The fun comes from exteding the DSL to allow rules like ALL TREES CLOSE TO PLAYER MOVE or WHOEVER IS CLOSE TO TREE DESTROY WALLS.
Starting day 3
I'm back home from work, day 3 starts. Today I want to (1) add AI, (2) better graphics (3) collision detection using sprites. Let's see how it goes.
Day 3 over
Day 3 is over. I added collision detection, changed the graphics a little bit (damn convert_alpha!) and created a computer player with some rudimentary AI. I still want to add music today, but my download is taking too long.
For tomorrow I need to add water to the maps and, most important, an input dialog so that the user can enter new rules. I'm having some trouble figuring out how pgu works, so this it taking longer than I expected.
More progress! The game was too easy, now there's an angry dog runnning around the field. I improved the AI both for the opponent and for the dog, but it's still pretty rudimentary.
There's also a single music track that plays endlessly, and a simple level editor. My focus for tonight is creating more rules, a couple of levels, and then the core will be pretty much done.
Tomorrow I need to figure out how to create a GUI, adding input for new rules, a short explanation of the game. After that, more rules until the week is over! :)
Day 4 is over for me (w/ upload!)
What a day. I tried to use pgu to handle the input on my game, but I couldn't grok it. I ended up hard coding an input function to accept new rules.
I still need to make the computer AI say new rules; for now only the player can add rules. I also need to add more rules, but the system is flexible enough that I can usually add a new token in a couple of minutes.
I also created 5 levels, but I need to improve them for better playability. Nevertheless, after all my effort learning pygame I'm starting to see a game here! :)
I've just uploaded a new version, with full functionality. I don't know if I'll have time to improve it, since tomorrow is a holiday here in Brazil and I want to go out with my girlfriend. I'll probably add some more token rules on saturday to improve the number of options when creating new rules.
If you played the game and have any suggestions of actions that could be implemented, please drop me a line -- 'cause I've run out of ideas! :)
I just upload the final version; the only change is the README.txt with a better description of the game and how to play it. If I had more time to improve it I would probably work on the graphics, as well as adding network play. I'll try to do this after pyweek, let's see how it goes.
I would like to thank everyone that tested my game during this week, and also all the people who gave suggestions and feedback; sorry I couldn't implement all of them. The feedback during the week made me feel that this is a really cool group event, not just me running against the clock to write some game.
"Innovation" was my highest grade, with a 4.1, together with a 2.9 for fun. Most of the people who tried the game said that it was clever, innovative and fun, and some people even liked the graphics! There were also plenty of comments requesting that the game be improved, specially with multi-player support, which is something I've been considering for some time to play it with my girlfriend (and valuable beta-tester!).The bad
3 or 4 comments complained that my game didn't fit the theme, "twisted". Perhaps the theme in this game is a little subtle, since there aren't any twisters or twisted pipes or whatever, but it is a game where you can twist the rules at any time. The idea for this game was the first that came to my mind when I saw the theme.
The interface is rough, I know. I had to balance my time between work, learning pygame and improving the rule system, which is pretty hackish (it works by injection closures in two queues that each thing has, one processed at the beginning of the turn and the other at its end). My next entry will definitely be better, with menus and improved input.
The number of rules was somewhat limited (715), though this is something that can be easily extended. Some people suggest that the rules should've been written out, but personally I believe much of the fun comes from discovering new rules by experimenting of learning from the AI (Suzanne). Some people complained that the game was too hard, but other complained that it was too easy, so at least there's some kind of balance.The ugly
The game crashed on 18% of the people who tried it, as far as I can see on Python 2.5 + Windows XP. Sorry for that, guys, I developed the game on a Mac and tested it briefly on Linux. In my defense, I did test a version on Python 2.4 + XP and it worked, but I didn't perform much testing on this platform.Overall
All I can say is that I would do it again! Next PyWeek I'll be more familiarized with pygame, and also with what needs to be done during the week, so I hope to produce a more polished game. I'd like to thank everybody who played the game and gave me their feedback, and hope that you had at least as much fun as I had while developing this game. Thanks!