Thursday, March 19, 2009

Blog moved!

This blog has moved! The new address is

To say thanks for following the blog to its new home, there is a video and NFS:XNA is finally available for download!

Tuesday, December 9, 2008

Making it playable...

Up till now, NFS:XNA has been largely a tech-demo.

Right now I'm adding some simple playability - being able to finish races and get back to the main menu to choose another race are two things i've added tonight :)

Monday, November 24, 2008

Latest NFS:XNA updates

I've been a bit quiet on the blog lately, but doing lots of work on Need For Speed.

Latest stuff:
  • 7 cars
  • 16 tracks
  • Car dashboards
  • Car/environment sounds
  • Fence/grass/gravel collision detection
Got a bunch of little things to do, but the next big thing will be some kind of radial/motion blur.

Obligatory screenshots -

Car selection screen:

Vertigo Ridge track:

Burnt Sienna track:

Alpine open-road track:

Monday, November 3, 2008

Chase camera for fast-moving objects

Chase cameras are great for creating a feeling of realistic motion. For NFS, it means you can see the side of the car as you turn, and as the car accelerates and brakes it changes distance from the camera.

The problem with a fast moving game like this one, is that the chase camera can start to get too far behind the object at high speed.

Simply reducing the springiness doesn't work, as then the camera won't swing round the X-axis enough.

I've used the Chase Camera sample for my camera, and added an extra ZStiffness property. This controls how much the camera tries to keep up with the moving object.

You can download it here :)

Sunday, November 2, 2008

I was way off the mark...

Damn. I got the wrong info from somewhere about dynamic audio and XNA - there is NO support for loading audio at runtime through XNA 3.

That was the main thing I've been looking forward to :(

Of course, if you don't care about running on the xbox, you can use any audio engine accessible from c# (fmod, wmp etc)

Tuesday, October 28, 2008

New chase camera

Just finished a chase camera that can be moved around with the xbox controller.

And yes, the rev counter works :)

Monday, October 27, 2008

XNA Vehicle Physics

I've tried several different physics engines for XNA:NFS.

I tried JigLibX first, as it had the coolest vehicle demo, but after a considerable amount of pain getting it integrated, it was difficult to get the vehicle to behave in the same way as the demo. And once it got to a certain speed, it started to rock side to side, with no obvious way to stop it.

Up next was BepuPhysics. This has a pretty basic looking vehicle demo, but was quite easy to integrate.
Basically you define your terrain (from a list of vertices), give it some properties like friction and gravity. Then you create a Vehicle, attach some Wheels and hook up a button press to wheel.Accelerate();

Getting it running initially only took a couple of hours - but trying to figure out values to make the vehicle behave correctly still had me tearing hair out days later.

The problem is that its all a very fine balance of forces. For example, one bumpy part of the track was pitching the vehicle backwards and forwards and looked ridiculous. The solution? Make the suspension softer to counteract the bumps. But making the suspension softer caused it to wallow/float around the corners, sometimes tipping over. The solution? Increase the sideways stiffness, and give the car more mass to stabilise it. This then pushed the softened suspension down too far. And so it went on, round and round.

After almost quitting the whole project, I saw this post which is a simple 2d vehicle physics class. Using it as a starting point, I've ended up writing my own vehicle physics. Granted, it will never be anything as good as what Bepu/JigLibX could produce in the right hands, but it means I can choose which corners to cut and focus on making it a fun experience to drive.

Demo coming soon :)