[ODE] ODE in Myst V: A Postmortem

Shaul Kedem shaul.kedem at gmail.com
Wed Jun 22 22:25:27 MST 2005


Wow. This is awsome. I played URU and loved it (well, the physical
puzzles were a bit dodgy.. but then again, they were the first ever).

It's great seeing ODE in such a high profile game. 

Anyway Colin, if you may; is there going to be a linux version?

Thanks,
Shaul

On 6/22/05, Colin Bonstead <colin at cyan.com> wrote:
> Sorry, I wasn't really clear here.  I do run ODE at a fixed 100 Hz, but
> if more than 100 ms passes in a frame I'll clamp the amount I'm going to
> step total that frame to 100 ms.  So the ODE clock and game clock will
> move out of sync at that point.  As far as ODE knows though, every step
> is 10 ms.
> 
> At first I did try using a variable step, since that was supported in
> Havok.  It worked great until you had a long frame followed by a short
> frame, at which time contact joints would launch objects out of the
> world.
> 
> -----Original Message-----
> From: Adam D. Moss <adam at gimp.org>
> Sent: Wed, 22 Jun 2005 18:22:24 +0100
> To: ode <ODE at q12.org>
> Subject: Re: [ODE] ODE in Myst V: A Postmortem
> 
> Colin Bonstead wrote:
> > The main problem I ran into was with the instability of the ODE
> joints.
> > I run our simulation at a fixed 100 Hz, and clamp the per-frame delta
> to
> > a max of 100 ms (so we don't kill the framerate even more by doing too
> > many steps during a slow frame).  That works great on fast machines,
> but
> > on slow ones (ie dropping below 10 fps at times) the joints tend to
> get
> > unreliable.
> 
> If I understand you correctly, this isn't the recommended way
> to timestep.  You're running a variable 0ms<timestep<=100ms, right?
> 
> There are three issues with this.  The first is that an ultra-small
> timestep causes numerical instability, though there might not be
> fast enough machines around to see this much.  Secondly, a 100ms
> timestep is (as you've discovered) often too big for catching
> collisions while they're shallow and subtly-correctable.  Thirdly
> and most importantly, ODE is not happy with variable timestepping.
> 
> The third issue has an easy hack which mostly defangs it: add a
> smoothing filter which doesn't let ODE's view of the timestep vary
> by more than (for example) 3% from frame to frame.
> 
> The real solution here is to use a fixed timestep as far as
> ODE is concerned: accumulate time deltas each frame, then
> perform as many collision+simulation steps as can wholly be
> satisfied by the accumulator (which may be none, when the framerate
> is rather faster than the simulation update frequency).  Keep any
> residue for next time.  (This may be a FAQ, or at least in the
> Wiki somewhere.)
> 
> That's a little more involved if you want to do it really properly,
> because a 11Hz simulation with a 60Hz camera moving through it
> looks pretty jarring, so you'd need extrapolation.  But if you can
> afford a fixed 60-100Hz simulation then (IME) you can get away
> without.
> 
> Regards,
> --adam
> --
> Adam D. Moss   -   adam at gimp.org
> 
> 
> 
> 
> 
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>



More information about the ODE mailing list