for the final of 6.087, the assignment was to just make something but to use an external library. i decided to set my sights way too high and use SDL to make a very basic 3d engine based on the vague memory of a video i had seen several years prior about making an incredibly basic 3d engine. i did end up using some of the #defines from his source code and looking through it definitely encouraged me to learn how to actually use realloc(), but at that point i had already made quite a bit of progress making a huge mess and i wasn't planning on untangling anything.
the whole thing ended up being a big incomprehensible ball of pointers and arbitrary functions. it might be possible to fix, but it's really not worth trying without just starting over.

some issues that never did get fixed:
- sometimes there will be random lines coming out of corners. not often, but it happens.
- if a tranistion between two cells is colinear with a wall, you can't pass through it, but i think that depended on which computer was running it???
- the map format is big and clunky and hard to edit and i don't much care for it

anyway here are the files, feel free to try them out, but try to understand them at your own risk.
the mess itself
the little map i made for it

note: you have to compile this with SDL2. and also math.h but most people who are compiling things don't have to download math.h

oh right, wsad to move, mouse to look, r and f to go up and down, and enter to exit

and hey, speaking of starting over, been recently trying to remake the whole thing but in c++ and to actually organize it well for the 6.096 final. as such, progress has been slow and things aren't actually very organized at all.
the new version is here (will be finished in one million years)