Hacker News new | past | comments | ask | show | jobs | submit login
Unreal Networking Architecture (epicgames.com)
88 points by jbrennan on Jan 8, 2011 | hide | past | favorite | 12 comments



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.


Glad I'm not the only one. I learned to program making Unreal Tournament mods.

The replication model of the Unreal Engine remains one of the best I've ever seen. Nonetheless, as with anything involving a distributed system, it is very easy to make errors.

Even the original UT (version 400) had a serious error due to the ease of marking functions network transportable. The function to cycle maps was marked to allow the client to send it to the server. It was certainly nice having the ability to select maps on any server. :)


Link to those articles?


Checkout the Programming category (on the left frame) from 2000: http://web.archive.org/web/20001203052300/http://unreal.epic...

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... 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.


Thanks


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).


Just keep in mind -

> Last Updated: 07/21/99


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


By and large, this is still an accurate description of the networking architecture in Unreal Engine today which has been used in such recent games as Gears of War (2005), Gears of War 2 (2007), Borderlands (2009), Medal of Honor (2010), and indeed most Unreal-based games released since '99


While true, I'd say still very relevant. Even though home broadband has improved drastically since 1999, you also have to now consider mobile connections (while high-speed in large cities, they have sketchy service elsewhere, and usually high-latency).

So I'd say it's as relevant as ever.


Wow, thanks for the link!


Good, downvote positive feedback. Great idea.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: