Most appurtenant use of the word 'lucubrate'
Presented by tartley
Ratings (show detail)
Wizburg! post-competition release
Playable demo of first level
Second playable demo
Early playable demo. Emphasis on "early".
Warmup game: Strictly Platonic
I've only ever used plain old pygame in PyWeek, so I thought I'd look at some other libraries. Pyglet is popular, so I tried to learn that. After spending an hour trying to draw a freaking circle, I realized that you really need to understand OpenGL before you can use Pyglet for graphical primitives. So I decided to learn OpenGL instead.
I had no idea how easy it is to make a 3-D flight simulator! Okay, there's still a lot to it, but between GL_DEPTH_TEST, gluPerspective, and gluLookAt, half of the work I imagined is taken care of. Obviously, lighting and textures are huge topics for a beginner, so I decided to copy those bits from the tutorial and focus on what I know: solid geometry.
The game comes in one big file, strictly-platonic.py. I developed it on a 1.6 GHz Eee PC, so I can't imagine it running slowly for anyone, but let me know if you have any trouble or suggestions. Enjoy!
Mightier than what, now?
Okay okay, it's a work in progress....
Early first demo
Spells fly through the air and bounce off walls. I want to make bouncing a big part of the gameplay, where you have to set up complicated shots around corners. I uploaded a playable demo to illustrate the spell-bouncing physics. It's you and another wizard running around a room. I realize that (a) the action is way too fast to set up tricky shots, so I'll need to balance things better, and (b) the AI is going to be hard.
Controls are Arrow keys to move + mouse click to fire. I don't like this scheme: I want the player to be able to use just the mouse or just the keyboard. But, since the direction of shots is so critical, I'm not sure how best to use the keyboard for aiming.
Oh well, plenty more to work on in the meantime!
(Full-scale image here.)
Second playable demo
I need to improve what happens when enemies hit you, because right now it happens too fast. I also need to draw more walking sprites for the enemies. But one thing I don't plan to do is implement path finding. If aimless wandering was good enough for the moblins in Legend of Zelda, it's good enough for my critters. They're scorpions, by the way. I changed them from red to brown, but they still look like lobsters. Whatev.
#1 Larry's Castle
If you want to give feedback on how difficult it is, try it without casting any spells. Keep in mind that this is the first level, but you're not expected to get it on your first try. That's the difficulty I was aiming for.
Okay, I have to go design at least two more levels if I want to call this a game. I really gotta dive into it now. Good luck everyone!
Cheat codes and postmortem
- 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.