LAWN: Terror From The Green
Tips to players:
Tip 1: Click on stars on the map to start missions.
Tip 2: If you only have 1 non-panicked kid left, restart the mission by pressing SHIFT-R. There's no penalty for retrying.
Tip 3: Distraction is key. The elderly turn towards sources of sound. Even if they heard something, another sound can divert their attention again.
Tip 4: Kids can move off the lawn while others can't.
(These links are for the post-competition version 1.5.)
Most disturbing scream
Presented by Woodwolf
Knows the lambda
Presented by T-002
Ratings (show detail)
Windows executable (py2exe)
PNG color space fixed
Terror From The Green 1.01.dmg
Mac OS X disk image
base and tutorials mostly in, need to make real missions
An early preview
Post competition update: LAWN: Terror From The Green 1.5
What has been changed?
- Bugs have been fixed.
- Control is always accepted and animations are queued. This means that pressing left twice and then up will make the current kid go two squares left and one up no matter if you wait between the keypresses or not. This indeed makes the controls feel more responsive, and all I had to do for this was delete two lines...
- Turning is instaneous and implicit in easy mode. Press up to move up, press left to move left.
- If an old man or dog hears something, an ear icon appears above their head. Hover over them to see what has got their attention.
- If there is only one possible destination, passing takes just one click.
- Or alternatively K can be pressed to kick.
- Press SHIFT-R to restart the mission.
- Transitions, PDF documentation and a couple more cosmetic changes.
P.S. These guys really outdid us: http://www.popcap.com/games/pvz/
Comments on comments
In the hopes that some of my judges read this post, could you elaborate a bit on what the problem with controls was? A number of comments I received mentioned control problems, like this one:
Controls infuriated me, and I couldn't enjoy the game. Great idea though.Finding good controls really needs outside input, because the creator of a game can bear with any crazy control scheme without noticing the awkwardness of it. The friends I sent the game to only returned DNW (looks like mipmap generation is not a guaranteed feature in Pyglet), so until I trick them into playing an updated version, your input would be very educational for me!
Many comments mention that who hears what is not made clear and this detracts from the game. This is a good point, thanks! It did not occur to me, because hearing was a late addition to the game and only gained importance when I made the levels, which was the last night. And also because it was obvious to me who heard what, since I wrote the code for it :).
Thanks for the fun contest! I'll be back!
Note: I will upload an updated version that fixes the numlock and mipmap bugs soon, so if you would like to try it, please wait a bit and try the fixed version for a better experience!
LAWN: Terror From The Green trailer
After getting home I did some more testing, this time on a Mac and luckily there are no serious issues. It appears that some of my PNGs have incorrect color space settings that caused a discoloration on the Mac. This is now fixed in the very final 1.01 release that now also has a Mac disk image build (py2app) for convenience.
A summary of my experience as a last diary entry for now:
How did my first PyWeek go?
The game ended up a mix of a tactical X-COM-style game and a puzzler. A good amount of the fun in tactical games comes from estimating hazards and chances (will I be able to hit that alien? will there be more of them?) but since there are no gunfights here, this source of fun is about halved (there is still a combination of random and hearing-based movement on the opponents' part and on hard mode you have limited vision), but in its place puzzle mechanics appeared. The interactions are not governed by chance as much as in a shootout, so you can calculate many steps in advance and solve a few tricky levels that explore the many possible interactions between the creatures and items of the yard.
The development had a steady pace. I crossed off the last "must have" features from the to-do list Friday night. I feel I did not spend enough time pondering the design nor playtesting, so I having little idea if the game is actually fun. I will rely on your votes to tell! On the positive side graphics and sound creation was a lot of fun, and coding was a breeze. I don't get all this talk about refactoring. That sounds like something you do when the project is already a year old. I barely ever deleted a line!
The community aspects of the contest were a pleasant surprise. I was attracted by the game making, but seeing other works in progress and the variety of approaches was an experience in itself. I will try to get a team together for PyWeek 9!
Well, here is my final submission, wish me luck! I will now sleep around six hours and then I'm off to an on-location 24-hour programming contest. I hope it will be at least half as fun as PyWeek was!
Since I was in a pretty big hurry to complete the game today, I wasn't able to check out the submissions I saw cropping up. The screenshots look nice, so I am looking forward to judging all of you!
PS: It was developed on Windows and I did not have time to test on other systems. I tested an early version on a MacBook and the font sizes were much smaller and it has some graphical artifacts. Sorry about that, play on Windows if possible.
Gameplay almost complete
Gameplay is shaping up nicely. You can turn on and off sprinklers, dogs jump on you, old people say "hi there", there is hearing (dogs and old people look in the direction of the sound if they hear something), you can pick up and throw rubber piggies (sound still missing on landing), pass soccer balls and run around screaming if your buddy turns on the sprinkler on you! I'm afraid with all the strange mechanics a hefty tutorial will be necessary, but it will have to wait until tomorrow.
I've also managed to speed up pyglet greatly. Try this:
import pyglet pyglet.options['debug_gl'] = False def zero_errcheck( result, func, arguments ) return result pyglet.gl.lib.errcheck = zero_errcheck
EDIT: Not sure if this does anything, it's possible that something else I did is responsible for the speedup... Starting with python -O sounds good too, thanks, Richard!
Cursor keys move (press SHIFT to strafe), TAB switches, walk into tap to turn, walk into piggy to pick up, click soccer ball to pass, click piggy in inventory to throw. Click and drag (or approach window edge) to pan, mouse wheel zooms.
And the music starts
I added music and sound effects, so instead of a screenshot here's a snapshot:
Creating art really eats up my time so I will try to cut it back in the following days. (I have to be done by Friday because I will take part in the Challenge24 programming competition on the weekend. If we finish early — say in 23 hours — I will be able to add some final polish, but let's not count on that.)
Note to adventurous players: You can switch kids with TAB or clicking and move with the cursor keys. If the old man sees you, you panic and start running around. Hovering over a character shows its range of vision.
Slowly getting somewhere
The old man now wanders aimlessly and avoiding it is starting to be interesting. The goal is the rescue of the ball in this somewhat X-COM or Jagged Alliance-like game. (There are no guns though.)
The tactical component is nowhere near complete and I even have some light base-management planned for in-between missions... We will see how far I can get!