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:- For more health, change the value in src/woldmap.py line 54:
hp = 3 - To slow the game down, change the 1000 to a 2000 or whatever in src/main.py line 65 (make sure you leave the decimal point on):
dt = clock.get_time() / 1000. - Save this for last. To unlock all castles and spells, uncomment the three commented-out lines in src/worldmap.py (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!
- I'm big on not just tacking on the theme, and I'm not sure how I did. Although there was a direct train of thought that led me from the theme to the final game mechanic, objectively speaking, it seems tenuous.
- My last entry's weakest category was Fun. That's what I hope to improve on this time. I think I did, but we'll see how the judging goes.
- A common PyWeek suggestion is to have your tools ready before the competition, but I learn best when i have a project, so I find PyWeek an excellent time to learn some new tricks. This time it was Inkscape, and it's great! I'll definitely continue to use SVG when I think it's the right tool for the job. I especially liked drawing the castles on the level select screen.
- Surprisingly, I really enjoyed programming the bosses. I usually avoid anything more complex than moving in a straight line for enemies, but now that I've tried my hand at more complicated fights, I might try it again. It was time-consuming, but fun. I would have been satisfied with this game if there were no levels at all, just the bosses. Maybe with the time I saved I could have made a better overall game, who knows.
- You have to be smart about what to cut out and when. Implementing
wordwrap in pygame is always a chore, and this time I decided to save
the hour I would have spent making it work right by limiting dialogue
to one line at a time. It might annoy some players, but that was an
hour well saved in my opinion. (I'm sure that someone will name a
library I should have used. Yeah, next time, but I didn't know about it
this time, and that's the point.)
- I think I made the first two levels too difficult. This is always tricky. How hard you can make your game depends on the fun and production levels, because players are more patient with interesting games. Hopefully with the cheats above, frustrated players will make it easier and keep playing. In particular, you don't see any feathers until you've beaten the first level, so I hope it doesn't seem like I forgot the theme!
- I spent a lot of time on this entry, and I think it shows, even if certain parts are rough or unfinished. I worked straight through a couple days at the end. On the other hand, I didn't get started until Tuesday. It's hard to say if I spent more time on this one or the last one.
(log in to comment)
Comments
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 http://www.pygame.org/wiki/TextWrapping?parent=CookBook
About wordwrap in pygame there's a snippet on pygame's cookbook, and it was the one I used http://www.pygame.org/wiki/TextWrapping?parent=CookBook
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.
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
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.
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.
Aborted
E: stream.c: Assertion 's' failed at pulse/stream.c:1059, function pa_stream_write(). Aborting.
Aborted
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 :)
gcewing on
2009/09/07 08:24:
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.