2025-3-2:
This was inspired by Tsoding's project of the same variety. Using the method famously implemented in Wolfenstein 3D, the game renders a 2.5D world using a ray marching algorithm to draw walls appropriately based on their distance from the camera. Perspective correct texture mapping is used to get the textures onto the walls. Ceiling and floor can also be textured but the performance hit was too big for now. Movement along xy axis with basic movement physics and collision is implemented. Everything was written in Typescript and rendered using Canvas.
Before taking it any further, I plan to rewrite the engine in C and compile with Webassembly so that I can do all of the rendering and then use Javascript to copy the framebuffer to the screen using Canvas. Since I feel more or less satisfied with this exploration of this technique I also plan to do the rewrite using the Doom's binary space partition instead of continuing with the Wolfenstein 3D method.