How Spelunky's levels are generated

Thanks.