(Includes pyglet, and a pure-python physics engine -- no dependencies!)
Where's the Game award
Presented by myke
"Deliciously Pure Python" Award
Presented by pymike
Presented by Cosmologicon
Ratings (show detail)
post-compo bugfixes and minor new features (might require avbin)
shadows under balls (instead of vertical sticks)
day6-chasing a purple enemy.png
chasing a purple enemy over terrain you made
final, includes pyglet
final, except for not including pyglet
rolling around on terrain you made
work in progress
the "hills" act more like "tunnels" so far...
bugfix release (Outlawn)
In the meantime, now that judging is over I can release a few minor bugfixes and new features that I added after judging started. So here is version 1.1 -- enjoy!
Notable additions and changes (see CHANGELOG and README for details):
- maximum timestep, and other provisions to mitigate physics bugs on slower machines
- shadows under balls (might require avbin to load a texture image, not sure)
- hills can be made taller, holes deeper
- 'C' and 'G' keys are now toggles -- no need to hold them down
- terrain heights and colors (and enemy balls) can be saved/loaded
- other minor bugfixes (e.g. in control of buddy balls), debug options, ui tweaks
The gameplay is simple; the polish is zero; but both my kids have fun with it, so it's a success! (In fact, they want to make games of their own...)
You can make enemy balls, and try to knock them off the lawn; or buddy balls, to help you. If you hold down 'C' all balls color the lawn under them as they move. H makes hills, D digs holes, and G restores greenness to the lawn, all under the good balls only. (All these keys have to be held down, not just pressed once.)
The kids like to "paint" the lawn by making enemies of a few different colors and knocking them around while holding 'C'. (I didn't have time for enemy AI or even nonpassive enemy motion, so this is easy.) Or make holes and call them "tents" or "caves"; or paint paths over the hills; etc... kind of like a 3d paint program.
I still only tested this on a Mac, and it has performance issues (which affect the physics) except on my newest one. After the judging I'll try to fix these, and maybe add more...
Day 5 -- at least the game engine works...
The good news -- I finally got the ball rolling on top of the lawn (on top of hills, into holes, up and down slopes), working well enough to use. (And tweaked enough other things to make it worth uploading a "work in progress" demo. (Which is marked Final in case of a disaster tomorrow.))
The bad news -- it took all day -- still no gameplay, so now I only have 0.5 days to do that in! (Contest ends Saturday 5pm for me.)
Essentially, I spent this PyWeek prototyping a "ball & lawn game engine" and would need another week to make a real game out of it. (And having an artist would help a lot too.)
(So it's occurred to me to release this as an open source pure-python game engine, and document it, so that I or anyone else can do that, next PyWeek. I hope I do -- not sure I can quite keep up the motivation between-PyWeeks though. Especially to document it. Anyway, worry about that later.)
I am happy though. For one thing, I still have hope to find a simple enough gameplay idea to code tomorrow. (I have a few half-developed ideas, of course...) And for another thing, even the current form was enough to keep my 6-year-old son entertained this time for maybe half an hour... it was he who made the terrain in the latest screenshot, btw. He likes climbing up the invisible walls (perhaps along with a "buddy ball"), then zooming down fast and leaving long tracks along the landscape; or making a "cave" (depression) and coloring it all brown....
So, now to get some rest, or perhaps unwisely to try to prototype some new feature before tomorrow. (Never wise when I'm tired, but sometimes irresistable.)
Day 4 -- physics, jumping and rolling
The verlet integration (time-corrected) was pretty simple and fast to code, but tweaking the ball rolling physics and controls (even just to behave well on my flat-plane test potential, though the code to behave properly on sloping ground is supposedly mostly there now) took almost the rest of the day (of the pyweek part of it anyway).
The only thing I had time for after that was making a very fake actual-lawn potential -- not even energy conserving, since it only pushes straight up -- but good enough that you can run the ball into a hill and jump it that way. (Whee!)
I did some thinking about gameplay ideas too, but the best one, a two-player mode (try to knock the other player off the lawn -- if he/she dodges, you might go off instead), I probably won't have time for until after the compo. (And a non-networked two-player mode might not be tried much during judging, anyway.)
So tomorrow will be: realistic terrain potential, then flat-out on the simplest gameplay idea I can come up with. (I have only 1.5 usable days remaining.)
Most important thing -- it's still fun, and educational. (Even though -- or maybe because? -- I'm "reinventing the wheel". Or should I say "reinventing the ball"...)
All I had time to code Monday night was some ball-terrain collision (which it turns out doesn't work well enough to use).
On Day 2 and Day 3 I got the lawn generated and drawn, got the ball character rolling on a plane controllably (with a follower camera), and got the realtime hill-building working well enough to know it's doable. But rolling on the lawn's terrain (rather than on a plane) is still not there, and might be too hard. If that doesn't come together tomorrow, I'll need to come up with some other goal for the gameplay. Fortunately, rolling around and building "tunnels" (i.e. "hills", but the ball remains under them) was fun enough to keep my 6-year-old son intrigued for at least a few minutes....
Anyway, I'm not expecting to have time for any art or sound (no loss, since I have no skills in those either), or for more than one level, but I'm still hoping to come up with something fun to do on that level. (And it's certainly been fun to get it working to this point.)