It's a little brute force. I'll try to explain:
- Create a randomly sized square
- Pick a random wall tile
- Create another randomly sized square in the space next to the picked wall.
- Repeat this process until a number of rooms are made that don't overlap.
- Fill in each square room with different things. Some rooms become "hallway rooms", some are filled with random pillars, some have their centers filled in.
- To make the sand exterior I took each rooms center and created a circle with a larger radius.
The way the algorithm works is kinda like how you would draw a map in MS paint or something.