Eh...I think you seem trustworthy enough for me to run it, especially since I'm hiding behind WINE anyway so it's very unlikely you'd design a virus to break out of it and I'm executing them in unique environments. =)
City3D seems to be following the same concept as I: use a grid so that map editing is easier. =) (It also makes rendering much easier when you use the right culling techniques).
I couldn't get CityMap or Test3D to run...just got "Program Encountered an Error" messages from WINE. =/ Probably just a WINE incompatibility or something.
CityMap looks pretty cool. I like the mega-block vibe it gives out. I noticed in your documentation you stated that you wanted to figure out a way to skip the polygons that are right next to each other when you have multiple buildings merged together. You could probably implement that just by skipping polygons that are adjacent to a filled cell.
Anyway, I've encountered a pretty annoying problem. The raycaster I use from lodev.org/cgtutor/raycasting.html calculates player position based on an X-Y vector. This is all well and good, and it makes the raycaster simple, but I'm having a hell of a time applying a proper glRotatef to turn the world around the player. Any idea how to convert that vector into an angle? I've tried a bunch of algorithms, my most effective one being player_direction_x*90, which allows the player to turn for awhile, but then suddenly starts turning back when (s)he should still be turning the same direction. I'll keep playing with it for now...
==================== EDIT ====================
Ah...figured out how to do it. 90+atan2(player_direction_y,player_direction_x)*180/ALLEGRO_PI. Does the charm. =)
Also turns out that I had to flip the entire level to make it render correctly. I think OpenGL uses the "correct" mathematical coordinate system instead of the one common in computer graphics. Worked that out...
One weird thing I'm getting is that the walls sometimes flicker. I have some theories as to how to resolve that...
Lastly, the weirdest thing...it runs at the same speed as the software renderer Vandevenne wrote. WTFH? Also, the raycaster only pumps the game from 60 to 70 FPS on my ATI card. What's the point when OpenGL is the same speed?! Glarf..!
Nonetheless, I'll blog about this all tomorrow. I think I'll stick to OpenGL, though, even though it runs at the same speed. The textured version might have different implications, and I'll be able to implement looking up and down without the dreaded y-shearing technique. =D (Plus, I <3 A5!)
The glass is half full. The glass is half full. The glass is half full...
EDIT 2: Forgot to credit Lode for explaining to me that atan2 returns radians that I need to convert to degrees. =)