[MUD-Dev] Networking architecture overview

Amanda Walker amanda at alfar.com
Wed Oct 17 22:26:52 New Zealand Daylight Time 2001

Brian Hook wrote:

> So I finally called up a friend of mine (John Carmack) that
> really, really understands real-time networking and asked him to
> core dump on me how he has implemented his networking.  The answer
> is not what I expected, but it's a damn elegant solution.  [...] 
> There are no reliable packets of any kind.  In fact, there is only
> a single packet type -- the client's necessary game state.  The
> server sends sequenced game state updates that are delta
> compressed from the last acknowledged game state the client
> received.  This "just works".

This is a wonderfully elegant solution; and by thinking of the
problem abstractly (i.e., "I need to keep two machines' game state
in sync") rather than concentrating on the mechanics ("I need a
reliable sequenced data stream"), he was able to implement only the
type and degree of reliability he needed.  In effect, it's TCP at
the game state level, rather than the transport level, which is
extremely cool indeed.

> So this architecture basically obviates the need to even have a
> discussion about UDP vs. TCP and unreliable vs. reliable and
> out-of-order vs. in-order.  It's all unreliable UDP delta
> compressed against the last known state.  > Damn that's smooth.

Yes, indeed.  Very smooth.  A simple scheme that provides exactly
the sort and amount of reliability the software needs, with no extra
fluff.  This idea isn't, like, patented or anything, is it? :-)

Amanda Walker

MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list