A game I made needed procedural levels. The actual game is very simple, but the maps are actually quite nice.
Techniques:
Coded in C.
Starting point is randomized, then a room is created with size randomized. A straight line is then opened up to a random direction with random lenght and another room drawn, this will be done X times. A way out of the level is placed at the center of the last room.
Theres some brains that stop the cave from expanding beyond the map perimeter.
The map is a 2 dimensional array, and as such it could be made into a tile based graphical game as well, replaced with premade 2D or 3D tiles.
Personal Project.
Learning point:
Tile based games need a reservation system which tells who is where. That way every creature and object can leave it's mark on the map which helps the system to connect different objects.