4 ms·
Quake 2 had an interesting model format. It was essentially a set of OBJ mesh keyframes that get linearly interpolated between, for the smoother animation you s
by doomlaser 6y ago
Quake 2 had an interesting model format. It was essentially a set of OBJ mesh keyframes that get linearly interpolated between, for the smoother animation you see in Quake 2 character models when compared to Quake 1. MD2 was what it was called. One of the first things I wrote as a 3D game developer was an OBJ loader, and then an MD2 loader.
Carmack's code is something I've always admired. The system he figured out for a client/server networking model in Quakeworld for Quake 1 is still essentially the way most multiplayer games work now, as far as I know.
- Svperstar 6y agoTrue but games also added client side hit prediction which the Quake engine games never did. As late as Quake 3 if you were using a railgun you would have to lead your shots. There was the ZeroPing mod for UT then Valve put client side hit prediction in Counter-Strike. Was some controversy as people said it makes it easier to write cheats, I remember even Cliffy B from Epic Games wrote this blog post about how terrible it is but that is where games went and IMO its a lot better then 1990s netcode.
- dbandstra 6y agoThe Quake 1 and 2 model formats were very similar, the interpolation was a rendering feature. After the Quake 1 engine source was released in late 1999 the interpolation was quickly added by fans (although it wasn't as easy as it sounds, as IIRC the original Quake 1 source (not QuakeWorld) didn't track entities across frames on the client-side, so that had to be added first). The main difference between the two model format was how they encoded vertex coordinates. They both stored X, Y, Z coords as one byte each. But MDL (Quake 1's format) had a uniform scale/offset for transforming these into the final coordinate space, whereas in MD2, each animation frame had its own scale and offset. This seems like an upgrade but when combined with interpolation it could also result in a pretty ugly "vertex swimming" (jiggling) effect when you tried to portray subtle movements, like the idle anims for the player's weapons. One of the many things I admired from Quake is that there was a pretty uniform scale of detail to everything. There wasn't really anything that had higher polygon detail, texture resolution, or animation rate compared to anything else in the world. Everything looked very solid and consistent because of that. Quantized vertex coords was one of those tricks that seems restrictive but it didn't hurt them with the game they designed
- taneq 6y agoWhile we're talking about clever quantizing, we should mention the vertex normal encoding. In MD2 (iirc, not sure about MD1) each vertex normal was stored as a byte which indexed into a pre-established array of unit vectors which were more or less uniformly distributed around a sphere. It was a creative way to have good-enough per-frame normals in a tiny amount of space without forcing the engine to do any painfully slow per-frame normal generation (with the floating point division and square root which that entailed).
- deleted 6y ago[deleted]
- DominikD 6y agoOnly later ports of Q1 engine interpolated between model key frames. Initial release of Quake didn't. And it didn't matter given the resolution people were playing at. For the same reason the crude LOD for models Q1 had was more than enough for the time.