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