Hacker News new | past | comments | ask | show | jobs | submit login
The DOOM 3 Network Architecture (2006) [pdf] (fabiensanglard.net)
217 points by yarapavan on July 9, 2016 | hide | past | web | favorite | 33 comments

I really cannot wait for Fabien's book on the Wolfenstein 3D engine to come out. I really hope that it does.

Is there something particularly special about Wolf3D that you are awaiting, or just his write up on it?

More his writing. He does a phenomenal job digging into old code bases and extracting the meaning from them.

The promise of a step-by-step illustration of the Wolf3D engine is very interesting to anyone that cut their teeth playing it.

Also to anyone interested in the history of the transition between 2D and 3D gaming.

It's totally a fetish of mine, this strange period we got from 93-97 in 3D gaming, from flat-shaded polygons to the strange pixelated quad-polygons of the Sega Saturn right up until we finally got something like Majora's Mask on the N64 that truly started to demonstrate its full power.

The developments and the history are fascinating.

Any feelings on Marathon on the Mac? I recall that game feeling quite groundbreaking in the semi 3d era.

I remember I showed it to my 80-something grandmother when Marathon first came out, on the ridicuously-overpowered computer used by the department IT guy who shared an office with my mom.

My grandma said, "It's beyond my ken." And she was an amazing person - taught high school math to disadvantaged urban kids (in the city - she commuted), and this was just a moment where I could see someone experiencing a whole new reality, and rejecting it for the effort it would take to accept it.

And that's not always a bad thing. My grandmother had no real reason to be familiar with what would become a huge industry and culture. But it was eye-opening to see that rejection happening.

That's really interesting that you were able to observe and understand that. I remember a few moments like that in my childhood when the internet age was dawning and not being able to comprehend how a person could reject something so marvel.

Now that I'm much older, I'm able to understand why someone might want to do that now. I wonder what it will be in my lifetime that I will be unable or unwilling to comprehend.

I have many feels for Marathon. Such an amazing series of games. And then the vidmaster community... I still remember when I completed the first level of Matathon 2 that way. So awesome.


I loved Marathon. The atmosphere was amazing and the story/setting is wildly intricate and intertwined.


Ahah, this one, I find particularly awkward.

My favourite 3D transitional console/games have to be the Sega Saturn. The PS1 and N64 both used proper triangular polygons, so they looked as we expect to see the average 3D game these days.

The Saturn's quad-poly setup made the games look particularly peculiar to the eye today, especially when the camera was focusing on close-up polygons. Some games looked absolutely beautiful (Sonic R comes to mind, Burning Rangers, as well...anything late in the system's development) while some games looked very awkward, especially compared to their PS1 counterparts (here's looking at you, Tomb Raider).

Back to Marathon, it's character sprites looked particularly 'pasted-on.' Doom's enemies, for instance, seemed to be designed to be less human-like perhaps so they'd look less shit in 3D (those demon-eye monster things come to mind).

Other than that, Marathon is just Doom II, graphically.

Marathon used a different system of level-building (portals instead of BSPs) that let you stack levels vertically, so it's actually possible to create a lot of nice architecture with some good view faking. Also, it's one of the few games with a good story, and maybe the only FPS.

There is one major thing missing for constructing a "modern" game with it, and that's scripting - the open source version has Lua, but I don't know if anyone's written anything amazing with it.

3rd party scenarios for Marathon were also oddly literary, like this one where you go back in time and save Leonardo da Vinci from aliens.


Gotta love that bizarre Saturn handling of things. Quad-polygons instead of tris, and it's not even polygons but (textured) sprites which are actually transformed into quad-polygons. Wonderful time.

How much of that was because the Saturn lacked true 3D processing hardware, opting instead for hardware that could better operate on 2D sprites?

You can find more information here: https://www.youtube.com/watch?v=f_OchOV_WDg

I can also recommend the YouTuber "Ahoy". Phenomenal writing and production, videos on Wolf3D, Doom, Quake, Half-Life

Is that going to be part of MIT's Platform Studies series? Seems a natural fit.

original Wolf3D wasnt all that optimal, later ports (apple2/snes) were modified to use BSP tree.

What does using a bsp tree gain you in this case? Wolf was all tiles so using a data format that reflects that makes intuitive sense to me. Bsp gives better occlusion culling maybe?

Dota2 interestingly enough just uses protobufs for network and replays I believe.


CSGO does as well.

Sending game snapshot state as deltas is pretty interesting as initially thought they were sending actual diffs of snapshot but they just mean they're not sending all state at once and from the bitpacking section it looks like they're using some kind of custom binary format. The reason they're deltas is that even though they're using UDP, deltas only work when you have the previous snapshot and so they require acknowledgement of the delta, something you don't get with UDP by default. Even the compression is custom.

Extremely small message sizes was really important to them.

As a web dev this kind of stuff blows my mind.

Exactly what I was thinking :)

this looks really great, are there any similar resources for people looking to unpack game networking protocols/optimization?

This is one I particularly liked. Age of Empires networking inner workings:


This is definitely a classic. A more recent but no less seminal presentation is David Aldridge's overview of Bungie's networking approach (and more broadly all modern FPSs): http://downloads.bungie.net/presentations/David_Aldridge_Pro...

The section here on GGPO is good:


It is the lock-step model but with state rewind, so that you get near zero apparent latency from your own actions (at the cost of animations from other player actions starting a few frames in). You occasionally see things like a successful hit from you on an opponent be rewound and applied to a block from him/her instead.

For co-op games where aren't you aren't closely interacting (like in riding along in a vehicle) it can be a near conflict free and zero latency experience.

You can use various levels of it, accepting a reducing a 100ms ping into a 50ms delay will get less conflicts than reducing it all the way to 0.

Here is a link to valve's short but nice overview of networking on the source engine:


Great video by Jon Shiring from Respawn about their network and game architecture for Titanfall (this is more high level than network code but still good info)


You might want to check out some of the research of Luigi Auriemma. I'm using his encryption/decryption algorithms for a halo combat evolved client.


The good well-known resources I knew of are already posted, so I'll just add one of my own [0].

[0] https://dmitri.shuralyov.com/blog/10

From the same place and somewhat related: http://fabiensanglard.net/doom3_documentation/DOOM-3-BFG-Tec...

Registration is open for Startup School 2019. Classes start July 22nd.

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