So about 2.5 months ago I wanted to go back to basics and write a Wolfenstein3D clone or at least a similar engine. In about one night I got a basic wolfenstein engine running with wall textures and all. I experimented with a few ways of drawing the walls, first using the classic vertical stripes method. Then later moved to instead of drawing each individual pixel column to using the newer flash10 draw api. So I would find the two left and right edges of a visible patch of wall, and with one draw call to flash.display.graphics.drawTriangles method I got a nice wall.
The speed improvement was huge, frame rate would never drop below 60, no matter how far the walls were(and they were far)
Then later I got to wonder how hard it would be to render floor and cealing textures(plus Hugo kept nagging me about how the floor and ceiling were plain). So I tried using this method of floor and ceiling raycasting: http://www.student.kuleuven.be/~m0216922/CG/raycasting2.html
Tho it looked ok, it was just way too slow for flash. So I decided to turn the floor and ceiling to triangle rendering just like walls. Eventually replacing the wall raycasting scanning used to draw walls, to a type of occlusion finder. Where the rays would fill a dictionary of walls the ray hit then later rendering the walls as full cubes.
Once that was done... I figured it wouldn't be too much trouble to have the floor and ceiling have variable heights. So I did that. Then I added individual heights to each corner of the cells so I could have tilted floor and ceilings.
Well, 2.5 months later of tinkering and optimizing I think I got a nice tech demo I can post. Tho because of all the extra stuff the engine is doing now, It can't draw really far scenery like before, but I think its enough for a few types of games.
This particular map is generated(through perlin noise) at runtime when the clip loads, so every time the page is refresh there should be a different map.
Use W, A, S, D to move around. Tho there is no view tilt set up, the camera can look up and down(remember it is not a true 3d engine) using a hack
We are thinking of building a game out of this soon, so there will be more posts coming