what counts as 2.5d vs 3d?
Basically, Neither wolfenstein or doom have z co-ordinates. Wolfenstein fakes it by scaling a column depending on how far away you are from it, so if you're 10 units away, it'll draw a column with most of the pixels in that texture, but if you're 100 units away, it'll draw 2 pixels of colours in the texture. Wolf3D also cheats by hard coding that data, so for each step you take it'll add a couple pixels to the column, but they're all pre picked until you need the entire column in which case it just draws it anyway.
Doom does it a little differently, instead of a list of tiles, it's several linked lists that reference each other.
When you load doom's map and type the cheat "iddt" twice, it'll show the entire map, even the stuff you can't see, and also all the sprites in the map, and that's all the engine actually sees at all times, just those lines and those things, but like wolfenstein, each line has information that decides what can or can not be seen, and how much texture to draw or not draw for that matter, then how dark it is, and if it also plays a sound or triggers a monster or changes the offsets.
Steps in the doom engine for example, look complicated, because you have to define each step seperately and it's offsets will be two sides, which tells the engine "I do not stop this ray" and the ray will hit each line, query it and keep going until it hits a full wall, then it stops and fires the next ray.
Quake which is true 3D, is similar, but what it does differently, instead of hitting a wall and calculating the height that way, each brush has x,y,x co-ordinates. So instead of saying "estimate this" it just draws the face it can see with the texture and lighting data in the brush. (This is grossly simplified to the point that it's completely wrong, but it's to contrast the difference between the three engines)
Is that clear as mud? Probably. If you're confused, tell me, if you understand everything I just said, well done. Because not even I do lol...
Also, technically, neither Doom or Quake are using rays like wolfenstein. Instead, it's searching a tree algorithm, jumping through each leaf and asking "am I visible?" if it's visible, it'll draw it, if it isn't, it'll not quite discard the data, it'll hold it in a buffer until it becomes visible, or if it thinks you're in a leaf that can't reach it, then it'll drop it completely. In order to do this though, each level is compiled into a model, which has that information baked in.
Carmack did a LOT of cheating, but he did it very well. Playing Quake for the first time when I was young blew my tiny little mind, because it should not have been possible with the toasters we were running then