I've been going back to build engine games recently and started to appreciate them more. I was a kid when I first played Doom and Duke Nukem. I never heard of Blood until recently so I've been really enjoying it. There's more than just the rendering and charm of the engine, it's the style of game play they have. Sure it's a simple run and gun shooting game but the way they are played is unique. Ion Fury managed to capture it and is one of my favorites. Doom 2016 and Eternal almost got it but barely missed the mark. It's about the maps, the enemy placement and the crazy hectic combat. Eternal has empty corridors and then an arena you fight in instead of rooms and halls filled with cunning enemy placement. There's nothing better than getting done with a big fight only to turn a corner and there's 5 expert level monsters immediately gunning you down.
It’s due to the technique used : *Y-shearing.* Heretic & Dark Forces also used it. True 3D needs to divide each coordinate by the Z to implement perspective projection, which is an “expensive” operation in computer performance terminology. It really only became feasible once graphics accelerators proliferated.
One thing to note is that "diving stuff by z" is also not "correct": the distance from the camera is not really the z coordinate on all points, and for large angular apertures the difference can be fairly drastic. The "correct" thing would be to calculate the actual distance from some point, but that would be even more expensive. This is actually quite noticeable on many "real 3D" games when you have stuff extending near the camera
It was less about graphics accelerators and more about floating point accelerators. Quake and Half-life were fully 3d, and while they could use a GPU, they both also had perfectly functional software renderers. The GPU just allowed for better resolutions and higher framerates.
@@user-sl6gn1ss8p It is once you transform the coordinates into camera space. You also need to do screen projections by the view angle & distance. Seems like you know math but have never actually implemented a 3D engine. There’s no need to do a square by the distance on arbitrary points. This is what they transformation matrices are for. So, yes, it’s “correct”. I’ve done it. You just don’t know what you’re talking about. Please stop trying to strawman me.
The funny thing is - we can achieve the "incorrect" look of Build Engine's "looking up" by using a tilt shift camera lens. The Build Engine does not simulate rotating the camera up or down like Quake does, but shifting the camera's frame up or down without changing the perspective.
That's something architecture photography uses a lot, right? :P They wanna make walls look straight instead of leaning because of some subconscious things, like the building might look like it's falling or something if it's pictured with 3-point perspective? :D Or is it just a stylistic choice?
and code . and some maths knowledge . and some computers . being in the right place at the right time with the right knowledge ; not something you can always have just by crying about it .
@@nil0bject are you talking about doom ? they had to solve the problem of displaying massive variations in the z axis in 3d, id were legends and everyone else had to play catch-up
Keep in mind it's easier to notice when you are directly playing the game. A perfect way to make sure you can see the difference is in fact to play the anniversary version of nukem 3d, as you can toggle between classic and modern cameras
Descent from 1995 was full 3D and was semi-playable on a 386 computer. It was more about optimisation and the features that the Duke team wanted to focus on, not the absolute lack of suitable hardware. Descent's mapwork was more ascetic, but on the other hand it had 3D enemy characters and some pretty solid effects. I also remember Quake running slightly smoother than Duke on my friend's 486, but I'm not sure what type that machine was exactly...
Yeah as an old Descent player I'm always enraged how people constantly ignore that it was released before Quake and had "actual" 3D rendering, even if the engine was limited to rendering indoor things... the only 2D sprites (apart from the cockpit view) were the hostages, weapon projectiles* (not rockets...) and powerups. Enemies were full 3D and even the player's ship was (in multiplayer) full 3D. Later there even was an official patch to utilize 3DFX Voodoo cards and Descent (+ Descent 2 and 3 - even though that one was Glide/Direct3D/OpenGL and a 32 Bit Windows game from the start) could use the Voodoo to its full potential, where other games still had 2D enemy sprites and no real vertical movement - their 3DFX patches (if they existed) where far worse.
The enemies had fast affine texture mapping; the levels were perspective correct but had a lot of jaggies up close; it’s been a while since I looked at the Descent source code, but I imagine they aren’t doing the perspective correction for every z distance. Super genius and optimised engine for sure!
This was the first game I ever tried to mod. Remember making maps then going to friends house on the weekend for a lan party and playing it with others. Used to make hugh pits that annoyed players... Where they would fall for a long time before being able to respawn. Remember vividly making sprites of mesh planes. Billboards is what I would say they are called today.
Btw quakes inability to display curvilinear or 5-point perspective is not due to its "perspective" but fov. Quake is not rendering 3 point perspective as it is not rendering one type of perspective as they all exist in a 3d space given it is true 3d. The only thing required to display curvilinear perspective is to widen the fov (which im sure is doable in quake), similar to changing from a long focal lens to a wider one, the nature of our worlds perspective doesn't change, just the parameters of the lens viewing it.
Fascinating video! I always thought games like DN3D, Dark Forces, Shadow Warrior, and other games with the ability to look up and down felt unnatural but figured it was the limitations of the engine and never put more thought into it.
I never had an issue with the 2.5D version and found it somewhat easier to decode visually; I suspect because our brains do an autocorrect before we're aware of the distortion from real 3D, but not so readily on a screen where it's actually a flat image.
What I find interesting about this progression of technology is how certain things now make sense about the old days - when I first got into gaming, I had a crappy 486 with 8MBs of RAM (upgraded from 4). I bought Quake... it wouldn't run. I remember something about "floating point" being the issue; my CPU at the time couldn't handle the calculations a true 3D game needed. Now, knowing more about the technology later in life, it all makes more sense. At that point in history, one of the biggest changes... was mathematical; it wasn't a matter of brute force, of raw computational power, but about the type of computation being done. The type of mathematics being done.
@@novemberbreed4669 I would have envied you intensely back then. Whatever my setup was, it was evidently impossible to get it running. I remember listening to the soundtrack (once I realised you could play the CD audio on a CD player), and staring at the manual, and the box, and fantasizing about playing it.
The more you learn about duke nukem 3d, the more you are amazed of the cleverness of its creators
Год назад
0:24 - There is no ROR in Duke3D, you've shown a sprite bridge. In Duke3d you can have 2 sectors intersecting if you can't see both of them occupying the same vertical space. The game with ROR was Blood, but it is kind of limited, you can have only 2 sectors using the portal rendering.
Wonderful explanation! An illustrator here: We need more points more farther we are. Very close, it's 1-point perspective. A bit far - 2-point. Up to fish-eye, 5-point, which is human eye vision.
Duke nukem 3d was not the last 2.5d fps, when quake came out, no one had ever seen anything like it and it took at least a year for developers to scramble and make their own 3d engine. There where plenty of 2.5d games released later in 1996 into 97 and some from 98. In 1996 you had duke nukem 3d, strife, Chex quest, powerslave, and final doom and it’s 2 expansion packs, and in 1997 you had blood, shadow warrior, chasm the rift, hacx, red neck rampage, and outlaws. There where probably less 3d games released in this time then 2.5d, I can only think of quake, quake 2, and turok.
All the same engines as Duke 3D & Doom; Build & idtech1 respectively. The only exception in your list is oulaws which used the Dark Forces engine & Chasm (that’s its own thing). Yes, all 2.5D, but with existing engines. The tech was still useful so we got more games using it.
System Shock came out in 1994, and its 3d was more proper. Its map was forced to a grid of 45 and 90 degrees, but player was free to look in any direction, lean left and right from the corner
So this is, essentially, the 2.5d version of the "pan and scan" technique movies used to adjust 16:9 movies to 4:3 TV screens back before widescreen TVs were a thing. Basically, how pan and scan worked was a "focus frame" that matched the TV's 4:3 aspect ratio was placed on the 16:9 movie frame, which the editor could move (or "pan") around the larger frame to focus on essential bits of action. Whenever the focus frame moved, though, it created the same unnatural and offputting feeling of looking up and down in Duke Nukem 3D as the perspective didn't shift as predictably as a real camera movement would have. This offputting feeling was made worse if the focus frame was panned at the same time as the camera was moving as the perspective shift of the camera often would move contrary to the focus frame panning - a very poorly edited movie using pan and scan could even trigger someone who suffers from motion sickness and, rarely, even epilepsy. There's a very good reason why many of the more prolific and artistic filmmakers of the day said pan and scan ruined cinema for home viewing... It's still very interesting to see that similar techniques were developed for games of the same era.
I didn't finish watching the video but I gotta correct you my friend. You need to aim up and down to effectively use splash weapons and the shrinker, also you need it to shoot at buttons to progress and to access secret s
Now that I look back at how this weird effect looked back in the day, It reminds me of how you scroll a pdf document with photos up and down lol. Its strange how they thought this could be a convincing solution for its time, it always looked weird but interesting.
I'm glad I watched this video. I already knew most of how it works, I think from a video by Decino, but seeing the screenshots stacked on top of each other to show that the camera scrolls was not something I realized!
Yeah, mouselook in Build Engine games almost feel orthographic. Though, an actual orthographic camera in an FPS would be impossible to use, unless it was a sniping game.
I remember making maps for Duke3D. Trying to make a swimming pool was complicated because of the fake 3D perspective. But before Duke3D and Quake. There was Descent, which came out a year before both games, in 1995. Which was also fully 3D and fully traversable in any direction, at any time. Since you are piloting a spaceship which has sideways, forward/backward and up/down movements. But this full freedom of motion was hard to control for many at the time with only a keyboard. This was prior to a mouse being generally accepted input device for FPS games.
The swimming areas required to recreate the flooded ones as the same size of the surfaces and the sector effector provided to link the two, just like a teleport. No matter where you draw the area. But the real issues came with mirrors. That was pretty tricky and buggy, especially on too large rooms, but the principle was just the same as pools.
9:16 Glad to see Marathon mentioned! Though I feel that you failed to mention that the Marathon games did not have automatic vertical aim. You had to carefully aim up and down, which was quite tricky without a cross-hair. Sometimes it was impossible because you could only tilt your head a limited amount or the illusion would be ruined. As far as I can tell, Marathon was the first game with mouse-controlled free look. Many still played with keyboard only for the first few years though.
As a former 3D game developer, something I’d like to clarify here is true 3D games don’t have perspective per se, they have projections. The reason straight lines must be rendered straight even though human vision is curvilinear is that you are seeing the game world through a flat monitor. The renderer’s job is to work out what colour light would come through a point of an imaginary rectangle towards a set of of imaginary eyes in the game world and set it to the corresponding pixel of the monitor that is in front of your real eyes in the real world. If anyone is interested in how all of this works, they should look at projection matrixes. It is all just matrix multiplication.
- It's actually a lot simpler than that and has nothing to do with perspective at all. Looking up or down in _Quake_ actually TILTS the camera up and down, but in _Duke 3D,_ it PANS the camera up and down as if the player is standing or squatting. - Ken Silverman made the Build engine then disappeared. He played around with voxels, but never kept up with 3D games.
This could likely be remedied by skewing the final rendered image in post depending on the "angle" of the player camera. Of course, it won't be perfect, but it would likely be noticeably more realistic than the vertical scrolling method.
This makes the texture fuzzy unfortunately. If you die in Duke3D you see a rotated view, which is fuzzy for the same reason. Another issue that you see with source ports of 2.5d games is that true perspective makes sprite based enemies look really weird when you look up and down. So Duke3D was never going to look good if you did that, and getting too fancy wasn't worth the effort.
Fisheye cameras dont produce "5 point perspective" .. they produce "sinusoidal perspective". This means the lines going to the vanishing point are curved .. they are sine waves, whose amplitude varies according to their variance from the three straight "horizon" lines that go thru the dead center of the image. Each of the three sine waves goes thru two vanishing points beyond the edges of the frame .. or at least far from the center of the image. A vanishing point near the center of the frame must have its next vanishing point beyond the edge of the image .. unless it is some kinda panoramic 360 degree type view. First demonstrated in the works of MC Esher (1898 - 1972) EDIT .. actually I think we are talking about the same thing .. I just never bothered to consider there are 5 vanishing points before .. usually Id add in a separate vanishing point per object in the drawing, to best suit its orientation :)
Nope. When you crouch/stand up, vertical lines stay vertical indeed, however you also shift the horizon line up and down. That's not the case here, otherwise you would see the top of the box when he looks up.
Duke wasn't support room above room, untill Shadow Warrior updated engine, who empliment some sort of portal effects (we got translussive water, upper flors etc) , but in duke 3d no room above rooms, what you see there, 0:20, is 4 stretched sprites that put together.
Quake wasn't the very first fully polygonal game, by the way. Descent had geometry and enemies fully polygonal and Terminator Skynet and Future Shock had the same but with 2D weapons and VFX.
0:26 I could watch a full video on how room over room worked in vanilla Duke Nukem 3D and how the level designers used those tricks to create an immersive world.
I kinds like the distorted perspective but that’s probably the nostalgia. I do think modern ports for Duke or Doom that use 3 point perspective look off too. Mostly because it makes it much more obvious the sprites arr just flat billboards.
I remember getting real sick trying to look up in down in 2.5d games back then, so I never really did.😆 Always thought it was a cheap gimmick till Quake roared onto the scene
Later on, DooM-Engine games can do the same look up/down, with the same limit, such as Heretic, and HeXeN. Still no slopes, or room-over-room abilities. HeXeN did bring in tricks to make sectors deform, like swinging doors, for example.
You actually can see 2.5d games using proper 3d perspective today. Most notably through modern source ports for doom. These source ports permit free looking and even full free aiming. One thing that does immediately become apparent is that the sprites really are 2d objects. The most extreme example is trying to look at them when they are directly below you on a ledge they become barely visible. The way the world is rendered also still looks a little weird. Though you can see why besides the hardware limitations of the time up and down looking wasn't utilized.
Yes, they squeeze as 2D points once you reach an upper point of view level. 2D sprites also show only one face, despite the Build engine could fake them in flat mode in order to make things like plants, trees or platform that allow you to overlap fake geometries. The engine always sees and classify them as simple sprites. I remember also that you were able to set their angle (eight-directional) from their "tail" on screen as a sort of indicator. Ah...good memories, what a glorious time!
I remember spending a lot of time with the level editor for Duke Nukem 3D, but I never published any maps. You had to plan and work around the limitations, which in a way had its charm. In a top view you would draw and divide shapes that would be your walls, doors, floor height levels, crates and so on. Then in a 3D view you could select areas and raise the floor and/or lower the ceiling. So you could never have a floor or a platform that you could be both under and above. To create a mirror you needed a secret room behind the mirror that was at least as large as the room the player would be in infront of the mirror. And you would just set a special texture on walls and ceilings to show the skybox so it looked like you were outside, but you are always in a "closed box".
I have to say, I never had a huge problem with how Build Engine games handled looking up and down. Like when someone pointed it out I was like 'yeah that is a bit odd' but it didn't hurt the game for me.
Quake wasn't the first 3D game, though. I remember playing X-Wing on DOS, which used true 3D graphics. Looking it up, it seems X-Wing was released in 1993, as opposed to Quake's 1996. I'm sure there were other older 3D games as well, though obviously the graphics would have been more primitive. This suggests to me that we knew how to do it before computers were powerful enough to handle something like Quake. Games less intense graphically than Quake could get away with using 3D graphics on less powerful hardware, though it wouldn't look as visually impressive. This also explains some of the weirdness in looking up and down in Dark Forces, which was a Doom clone.
One reason we knew how to do it is that more or less the same algorithms had previously been used for non-real-time rendering, e.g. for movies and TV. You can get away with quite a lot weaker hardware when you're willing to wait hours for a single frame.
Speed in general was the biggest roadblock. You could get away with having a dungeon crawler running at 10 fps, but a fast-paced shooter? They just needed the extra frames, so compromises had to be made.
you could have compared Duke Nukem with the software renderer vs one of the opengl renderers available in 25th anniversary edition or world tour edition, side-by-side. Instead of two different games.
I wonder how much heavier it would have been to distort the entire image so that when you look down, the top of the frame stretches wider, and when you look up, the bottom of the frame stretches wider...
You are an amazing youtuber! I’ve watched your playstation graphics video and this video and you have an amazing ability at describing these retro graphics
put in simpler terms, duke nukem is rendered as a long vertical screen, like on a phone. looking up and down scrolls that vertical screen up and down, making it fit in a rectangle monitor.
The doom engine did have looking up and down but only in Heretic and Hexen which both use the Doom Engine just modified by Raven Software. However the rendering of the modified Doom engine at the time in 1994 and 1995 had the same rendering as the Build Engine just without slopes and overlapping sectors. Hexen did have wavy effects in both Dark Crucible and Darkmare but still didn’t have slopes.
there’s a doom fork called Eternity Engine that recreates Build’s linked portal/silent teleport or room over room shenanigans as well. still no overlapped sectors to my knowledge though
I remember playing the Demo of DN3D more or less when it came out, and noticing that looking up and down looked *odd* but not really knowing why- it's so good to know why now!
No, it's really just a vertical offset value applied to the rendering. I am pretty familiar with the source code of the Build engine because I wrote an engine using the same rendering method, partially using Build as reference.
It's so strange seeing that effect. When I first saw it, I could have sworn the perspective shifted in the opposite direction to what it should, but in reality, my eyes are so used to seeing the normal perspective changes that I genuinely couldn't figure out what was going on.
You can see the warping of the edges of your vision if you make a C with left hand (or a backward C with your right) and move it close to your face at the very edge of your peripheral vision while staring at a fixed point. It's really weird!
It's not as dramatic as the example picture shows, as the 3-point perspective is essentially a huge oval. It just warps near the edges of our vision in a hyperbolic way
The weird sense of things visibly warping into that surreal "correct-ish" perspective shape is from shifting the aspect of the overdrawn pixels to fake the perspective via shearing (iirc calculated against the horizon in the case of Build). You can get this same effect emulated in EDuke32's 3D renderer (Polymost) by setting the console variable `r_yshearing` to 1. Set back to 0 disable. It works with modern Build games like Ion Fury as well.
I used to make maps in Duke Nukem, and I'm sure you couldn't do floors above floors. Not properly, anyway. In the example in the video, I think the platform was achieved by placing sprites I'm the right orientation with collision on. I hope I'm right, because I had to make lots of compromises in my maps.
You are right - I think some later iterations of the Build engine did support true Room-Over-Room, but every implementation in Duke3D was done using sprite based platforms. The editor was incapable of creating actual level geometry for multiple rooms that overlapped in a. useful way.
@@markdfox Yeah, I think I remember Shadow Warrior had a workaround, but I never made maps for that. I have a very faint recollection of it seamlessly teleporting the player to a different part of the map when entering a small secret room that was supposed to be above the main map. That could be a false memory, though.
Honestly, I don't remember issues with Duke Nukem 3D's way to do it (it was kinda weird, but generally felt okay, as if you're really just inspecting a flat photo or picture, or a page of text, so my brain accepted it fine, but Quake's way to di it, when teh camera rotates in one spot, creating something like the "fish eye effect", distorting walls and objects almost makes me dizzy. My brain just refuses to percieve this as "normal", because in real life when you look at things, you only clearly see that small area of the whole picture, much like in Duke Nukem 3D, and the rest of the picture is not so clear, so you don't see any distortions (also because they don't happen in solid objects), but when you "bow down" in Quake and the top end of the walls and boxes starts getting closer, as if they are falling at you, this makes me feel that something is not right, like if I'm very drunk and hallucinating.
I just want to throw in some nitpicks about the term "2.5D". It's not wrong but it's not 100% right either: While Doom and Duke Nukem 3D are indeed limited and employ a LOT of smoke-and-mirrors, they do in fact use 3D collision detection. For Doom it's used for bullets (hitscan tracers) and projectiles, as well as pathfinding for flying monsters. Duke Nukem 3D just has outright 3D combat, you can even jump on enemies' heads if I remember correctly.
00:25 Actually, that is NOT room-over-room. That bridge is composed of several solid sprites that individually behave as floors, ceilings, and walls. It's a very limited technique, as you must use the whole image of the sprite, and tiling it must be done manually with more sprites. The build engine couldn't do true room-over-room, but Shadow Warrior had a very convincing fake.
I like how you explain everything making it clear that they used tricks and stuff but still doing it with respect, like "yes, it wasn't true 3D but it was still ground breaking for its time"
@@NexuJin Descent might technically have true 3D graphics, but it's still a far cry from Quake in terms of level geometry. Everything seems to be based on a grid, kind of like a polygonal version of Wolfenstein 3D.
@@kveller555 The level of geometry of Quake was also why you rather run it on a Pentium, instead of a 486. Descent was a series of "cubes" interconnected. Hence lots of those tunnels, leading into some smaller or bigger spaces.
Duke 3D was a mix between polygon 3D Graphics and Bitmap Sprites. Sprites were 2D and used to for the monsters, items, weaponry and ammo. They could of allowed a true look up/down like Quake but things would of looked laughable flat.
Wow, I was just a dumb kid when I played it so I never knew you could use page up/down or the mouse to look around. I just figured it was like Doom and the vertical auto aim worked the same way haha