For your question about not rendering blocks behind other blocks, this only works with a precompiled level, not dynamically created ones. So unfortunately you cannot have this done automatically with a level that is generated at runtime. The reason is, the calculations that determine what blocks are visible behind others are incredibly complex, sometimes taking a few days to compile a whole map. Obviously this is completely impossible to do effectively at runtime. It also only works with level geometry (I believe), not models or even map entities, so if you built a whole level from model cubes it wouldn't work anyway.*

*Don't quote me on this--I know it worked this way back in A6, but I'm not 100% sure anymore.