Friday, 22 November 2013

Joust: Improved platforms, our first enemy

It has been a busy month at work. Lots of evening working and stressful times. However, there's always time for tinkering, and I have turned my attention to the enemies in Joust.

I started by just cloning the player character class. It takes care of itself pretty well, bouncing off walls, automatically walking etc. The enemies need to do pretty much the same stuff. The only difference is that they need to control themselves. This boils down to deciding when to flap their wings, and when to accelerate.

The initial birds in Joust seem to be pretty dumb. They just fly in one direction, right-to-left or left-to-right , occasionally bouncing off things. I started doing this by simply adding a random chance to their flap. Each cycle of the game it would roll a dice and see if the bird flapped. A bit of trial and error gave a value of about 20% chance of flapping. This sort of random flapping is what you see in the video below.

This actually tended to make them fly upwards so that they clustered at the top of the screen, so I tweaked it lower. Ideally, some of the enemies would fly along the top of the screen, and some would choose the lower tier of the screen. There should be a random element to it, but they should have a "target altitude". The further below the target altitude they are, the more likely it should be that they flap. Sometimes they will drop a fair way below. Sometimes they will go above their target, but they will work it out in the end.

Later enemies are smarter, and have a strategy for killing the player. They will suddenly fly upwards as they approach you. That will be fun. For now I have to make this guy follow the rules, then get some sort of "spawning" animation going.

Incidentally, I'm enjoying using Wingware IDE as an alternative programming environment from Python IDLE. If you're taking Computing at WGHS or QEGS, I can give you a free pro licence. Drop me an email.

No comments:

Post a Comment