In my opinion if a game seems to be 3D...it is 3D!
In reality Duke Nukem, Doom, Blood,... use raycasting tecniques...
From the viewer position the algorithm traces some rays; if a ray intercepts a sector (defined in a 2D map) the algorithm draw a vertical line on the screen with the proper height, texture, precomputed light,...
These games run so fast because they draw only visible pixels (100% of fill rate efficiency!) and use a simple texture mapping (z constant).
However they introduce great limitations: you cannot tilt your head (in DukeNukem it''s a 2D translation), you cannot have 2 overlapped sectors, you have vertical walls and horizontal floors, very enemy is a sprite (an image),...
These engines were improved over years but they are definitely out!
If you want to learn about the basis of ''real'' 3D graphics I must suggest you to see
http://pages.infinit.net/jstlouis/3dbhole/
that is a nice tutorial about software rendering tecniques (from vertex transforming to lightning with source code)
In my opinion it''s the time to use some 3D API like OpenGL

or D3D

but it''s important to know something about transforming matrix, texture mapping and so on...or you risk to be confused (but it''s not difficult to start).
You can find tons of articles on these APIs
Note : there is not anyone that can be say "I have learned everithing in computer graphics".