It's a very quick and dirty solution as I suspect dynamically creating a 2D collider, or generating a custom mesh a la Minecraft, would be a lot more performant (neither of which I had the time to research and implement how to do for a game jam). Essentially there's an invisible wall with a custom shader that's basically unlit yet can receive shadows. I generate two render textures based on this (one for each wall). When the game is started, it generates 88x42 cubes (that's what the loading bar represents: the generation of these cubes). Then each time you move a cube it reads each pixel in the render textures and either turns on or off a cube at a corresponding location in the world. Finally I do another render texture of these cubes and use that texture as a second material for the visible walls in the game. Just gotta make sure everything on that second render texture is pure black and you'll have what appear to be shadows on a wall that can be fully interacted with.
Edit: Also glad you like my crappy Russian accent, lol