Minigolf, Camera, A Blast from the Past, and Aidan
November 9, 2004
First, while you are still reading, I'm very close to having a test build of Minigolf available. If you would like to check
it out and give feedback email me at email@example.com. Feedback from kids, wife, husband, non-computer development types
would be great.
Here's a couple of screen shots:
On the Move hole
Since the conference in Eugene last month I have been working on fixing gameplay issues with the holes and
also creating a few more dynamic holes. The last few days I have been working on a camera system which
leads to the next section....
An automatic ball following system presents some interesting challenges because the ball can get itself
into some very tight spaces.
My first pass at this was very simple just to see how it felt - place the camera 45 degrees off of
directly behind the ball and looking down at a 45 degree angle. It checks ahead every so often and
if the camera's view of the ball is going to be blocked then it switchs sides. Here is a rough
top-down look at it:
This wasn't too bad - a little robotic feeling though. Since I was using the ball's forward
velocity to orient the camera, the pitch would vary too widely as the ball bounced - very
jarring on the eyes. I ended up damping the ball's z velocity quite a bit so the camera's
pitch only varied slightly. I may end up taking the z velocity completely out of the equation.
From here I went on to implement a system where I could define a set of camera viewpoints
relative to the camera and then automatically choose the best one. Here are top and side views
of where the camera would be relative to the ball:
Once a view has been choosen it stays with that view until it is blocked and then it finds
another best non-blocked camera view. This worked pretty well except for a visual-feel problem
when the ball bounced off a wall and reversed direction.
Right now the camera moves linearly from its current position to where it wants to be. When the
ball bounces off a wall the camera ends up passing over the top of the ball to get back behind
it and it just doesn't feel good.
If anyone is interested I can post this version of the code. I hesitate a little bit about posting
it publicly because at this point of a project sometimes expediency takes the place of elegance and
the code can get a little brute force and ugly. This code is a little ugly :^)
To get the camera code final from here I am just going to compute the camera offset from the ball
initially when the putt occurs and then only when the view is blocked. This will allow the ball
to roll towards that camera and the camera will not always be maneuvering to get behind the ball. I
think a less busy camera will feel better and it will only require minor changes to my current
Other solutions that I considered were using spherical linear interpolation instead of linear
interpolation to get the camera from where it currently is to where it wants it to be. I think
this would look and feel pretty neat. I also thought about building a path over each hole that
the camera was constrained to. The camera could move along this path and with a rule that it always
had to keep the ball in view.
I'm not doing either of these because while it would be fun to implement - shipping a product
sooner would be more fun.
A Blast from the Past
As Jeff mentioned at the conference there was an earlier version of a ball racing game back in
the mid-90s. It never got past the early design phase and the only thing that Marble Blast took
from it was the rolling ball concept.
For your amusement here are a couple of pieces of art from the design:
Kevin's concept art
Artist's slightly better version
Can you tell that I'm not an artist?
Aidan is my 5 year old son who has had some medical problems throughout his life. For those who
have been folling his saga, he is currently doing very well.
This summer his liver numbers started going up again. In September he had a liver biopsy and the
result showed that had EBV. He is on an anti-viral med for the next year because EBV can turn
into PTLD for guys like Aidan.
Basically, he is very happy and if it wasn't for the blood test you would never know that he has
some new medical problems.
Aidan likes Indie Games