Patrolling

Posted on 2011-12-06 in Stingray Incursion
I'm on a roll man! The few vehicles (actors) on my test level are now roving around, following thier randomly generated patrol routes.

Started this last night, and they're all moving around already. Simple waypoint manager class attached to each actor objects. At this point I just randomly generate a circular route or each object.

As far as problems go, correct orientation was a slight issue. At some point all of them moved around in reverse gear. But once that got sorted it wasn't too difficult to make them actually turn around to go to the next waypoint. Just like a car would, e.g. not turn in the same spot.

Another one was to stick to the ground. The tiles are not flat. There's bumps and stuff on them. So I hijacked the code used for the chopper's altitude calculation to determine the correct height of each object at their location.

And then the speed. At the moment they're all travelling at max speed. It's fine, but it looks strange when they first set off - immediately barelling along at 25 m/s. There needs to be a run up. So I've been mucking about in Maxima to determine a good formula.

speedgraph01.jpg

At first I was trying for a formula that I could simply use at any point between two waypoints. But the multiplier, which is the maximum speed, doesn't actually result in the maximum speed. So I've abandoned that one.

speedgraph02.jpg

Then I decided I'll work on a percentage from the start of the 'from' waypoint and a reverse percentage from the destination waypoint seperately and apply the above function.

speedgraph03.jpg

But it looks that the ramp-up is still too quick to 10 m/s, so adjusting the exponent solves that with the third function.

Now to implement! Oh yeah - also all of them always turn left. I need to look at the dot product to get a sign to apply to the direction adjuster.

Other posts in Stingray Incursion
So when you're going up a hill, you're going up a hill, right? Not so easy when you're coding it.
I decided that after the quantum leap of the last week or so, I needed to refine what I had done. Both in artistic appeal and technical implementation.
So after some effort I've got the rocket's firing. But now I've come upon a control problem.