[ODE] Record and Playback

Marty Rabens marty at rabens.com
Tue Jan 27 16:17:30 MST 2004

Martin C. Martin wrote:
> That's funny, because that's how we did it on Star Trek: Armada.  And
> it's the way they'd done it before, on Dark Reign.

That does boost my confidence in relying on fp reproducibility.  Both
ST:A and Dark Reign were high profile games that had lots of people
playing network multiplayer for a lot of hours, and I haven't heard of
any serious problems with either.

> On the other hand, compilers offer options to save the results of all
> calculations to RAM, which forces every computation to its minimum
> number of bits, so that you don't get this.  In gcc it's called
> "--float-store," in MSVC it's called "improve floating point

Hmm, have to look into that.  Maybe that was part of my problem on the
RTS we did.

> In practice, relying on FP reproducibility & lockstep between machines
> makes for a lot of headaches.  Everything must depend only on state
> that's shared between the two machines.

Exactly.  I carefully designed all of the state management, etc. around
this.  I found the biggest headache was getting the other programmers on
the project to understand and work with this ("No, you can't just send
that data directly to the other machine over the network.  Only player
commands.").  One programmer referred to the whole reproducible behavior
concept as "voodoo."

> Our network programmer spent
> untold weeks (months?) sifting through logs, finding places where
> got out of sync.

Heh heh.  Been there, done that.  Except the untold weeks or months were
compressed into about 10 days of ungodly stress due to crunch time.  You
can see why this whole issue bugs me so much.

> You have to be very careful about using "float store,"
> and the fp precision/rounding modes,

FP precision/rounding modes - are these controlled via processor
instructions?  How/what do I do in this regard to ensure maximum
reproducibility?  Any info would be appreciated.

> and saying the system requirements
> are "Intel CPUs and 100% compatibles" rather than "Intel and AMD

So are some other CPUs simply doomed to have issues with network
multiplayer RTS's?  I've never heard of any particular brands/models of
CPUs having these kinds of issues.

Thank you very much for the feedback.  I really value any info that can
help clear up this issue. 

  Marty Rabens

More information about the ODE mailing list