
Unreal Networking Architecture - jbrennan
http://unreal.epicgames.com/Network.htm
======
praeclarum
This is a fantastic article - as are most of the technical materials that Tim
Sweeney wrote way-back-when. The Unreal system was my first introduction to
the architecture of "real" object oriented apps and I refer back to these
articles from time to time as a sanity check.

~~~
jim_h
Link to those articles?

~~~
praeclarum
Checkout the Programming category (on the left frame) from 2000:
[http://web.archive.org/web/20001203052300/http://unreal.epic...](http://web.archive.org/web/20001203052300/http://unreal.epicgames.com/)

His article on the scripting language was also my first realization of the
power of DSLs.

I should also say that most of my learning came from studying the header files
in the SDK and imagining what the various implementations would look like. The
SDK is still available: <http://www.udk.com/download>

I even taught myself how to write a decompiler so I could see those
implementations. This taught me about the PE format, C++ name mangling, and,
of course, x86 assembler. Heady stuff for a 20 year-old. :-)

And then he posted this darned screen shot:
[http://stackoverflow.com/questions/2791787/what-was-tim-
swee...](http://stackoverflow.com/questions/2791787/what-was-tim-sweeney-
thinking-how-does-this-c-parser-work) and taught me about C++ metaprogramming.

And then this presentation: <http://www.cs.princeton.edu/~dpw/popl/06/Tim-
POPL.ppt> which made me spend months learning what these stupid Monad things
are and having to learn Haskell, ML, and Common Lisp in the mean time. (What?
C++ isn't the best programming language available?)

While some people learned to program by going to college, I learned by
studying _everything_ Tim Sweeney and John Carmack wrote (and practicing,
practicing, practicing). Mr. Carmack's release of old id source code is a huge
gift to the world.

~~~
jim_h
Thanks

------
mcs
The Quake 3 network architecture is also a fantastic read. Anybody wanting to
learn how to implement netcode should definitely read them.

The first time I implemented a UDP gameserver, they were invaluable resources
for the logic required if you don't already understand how it works.
(Selective msgs require acks, most don't, most don't need resends, etc).

------
disponsible
Just keep in mind -

> _Last Updated: 07/21/99_

~~~
vitovito
It's been maintained:

The latest version of that document:
<http://udn.epicgames.com/Three/NetworkingOverview.html>

How Unreal's content packaging relates to its networking architecture:
<http://udn.epicgames.com/Three/PackagesAndNetworking.html>

How the game state is replicated:
<http://udn.epicgames.com/Three/GameStateReplication.html>

How that packaged content is streamed to the client:
<http://udn.epicgames.com/Three/ContentStreaming.html>

And somewhat older:

How events are simulated on the client:
<http://udn.epicgames.com/Two/SimulationReplication.html>

How variables are replicated:
<http://udn.epicgames.com/Two/VariableReplication.html>

How functions are replicated:
<http://udn.epicgames.com/Two/FunctionReplication.html>

------
hermanthegerman
Wow, thanks for the link!

~~~
hermanthegerman
Good, downvote positive feedback. Great idea.

