Cheat codes and postmortem

Cheats are very important in PyWeek games! Here are some for Wizburg, and I'm happy to give more if you want:
  1. For more health, change the value in src/ line 54:
    hp = 3
  2. To slow the game down, change the 1000 to a 2000 or whatever in src/ line 65 (make sure you leave the decimal point on):
    dt = clock.get_time() / 1000.
  3. Save this for last. To unlock all castles and spells, uncomment the three commented-out lines in src/ (80, 81, and 94), and delete data/savegame.dat. But be warned, some of the game logic relies the ordering of events, so if the game crashes when you do this, it's not my fault!
Here are my postmortem thoughts:
Looking forward to feedback. Just so you know, I'm more receptive to negative feedback/suggestions for improvement. Sorry, I'm told I don't take compliments well! Anyway, I had another great time this PyWeek! Thanks to Richard and to the community!

(log in to comment)


Have you considered using the textwrap module in the standard library? It works by counting characters, so the result isn't strictly correct when you're using a proportional font, but it's good enough for many things in a game, and very easy to use.
I played just the ├╝ber-first demo, so I won't say much about the game yet :D

About wordwrap in pygame there's a snippet on pygame's cookbook, and it was the one I used
Oh, yeah, both of those suggestions are good. But like the pygame page says, it's only part of it. You've still got to blit each of the surfaces it onto a larger rectangle because they're different widths. You have to place both the individual lines within the rectangle, and the rectangle on the screen.

Well, discussing it now, I think an hour was an overestimate. Maybe 30 minutes. Still, these things always wind up taking longer than you expect, and it seemed like a good idea at the time.
this thread made me think more about adding cheat modes on my own games (simple stuff), like from key combinations - using cheat variables in the code seems interesting as well, like:

if cheatmode==1:
    for c in cs: c.locked = False
    for c in cs: c.completed = False

if cheatmode==1:
    spellsugot = allspell
I highly recommend cheats for PyWeek games with any sort of progression, because we expect each other to play enough of our games to rate them, but there are reasons why someone might not be able to complete it. Maybe you didn't playtest it enough to set the difficulty just right. Maybe you require swift work with the mouse and they only have a laptop trackpad. Maybe (and this is always a danger, no matter how prepared you are) the game crashes on their system. If you designed 10 levels, do you feel like someone who only saw level 1 can give you a fair rating?

Of course as designers, we feel that the storyline/progression is sacrosanct, and we don't want players seeing content they haven't earned. But I don't think we can treat the judges strictly as regular players.
I just made it possible to play any of the three levels right from the menu - and I'd hope that my game isn't so hard that you can't make it through any one of them.
Yeah, that was a great move. Because although your game generally ran excellently for me, it did crash once. But the fact that I didn't have to start all the way back over made me very willing to continue playing.
Oh, it crashed? Boo :(
It looks like a pyglet bug on my system. I'm sure it's one of those things that'll fix itself if I upgrade to the latest whatever. Here's the error message:

E: stream.c: Assertion 's' failed at pulse/stream.c:1059, function pa_stream_write(). Aborting.
Ah, go pulse audio! Yet another buggy linux sound system, implemented instead of fixing the bugs in all the other linux sound systems. Yes, I'm bitter :)