It seems like I've finished the basics of the my random dungeon generator for Salvage. The system is super simple but it gives me the sort of control I want out of a spaceship level generation system. As I've covered in more detail in my game design document, the levels are created using 9 x 9 tile sets which are created by hand, that are then translated into tile props unity game objects when generating the level. Here is a sample tile set script. (The 'W's are the wall tiles, the 'F's are floor tiles, the 'P' is a patrol point for the AI system).
The prefab tile sets that are hand crafted in script is a very similar system to the Spelunky method of randomly generating the world, but this system use the drilling method to cut a path to the exit because the system might cut into outer space!
As you can see from the tile set above, it has one single corridor entrance on the right. Essentially the system reads in each tile set edge and then tries to match with any other tile set that has the same edge so they can connect together perfectly, like a jigsaw. Simple really. There are several benefits to this method. It gives me very fine control over the content and also automatically guarantees that the entire ship is reachable without doing any sort of search algorithm. Also, the system allows me to create ship silhouettes:
I've only made a handful of ship layouts (and will probably make a few more before release) but already each of which give me a generated dungeon layout in the silhouette design that I wanted. This is the Freighter layout (above) which is currently my favourite. As you can see, the large main body is separated from the two parallel "engine" tile sets, connected with corridor tiles.
This is the Shuttle layout. It is smaller, and has double wing tips that will have weapons mounted on them. (Each layout with have a ship outline that will be hand drawn by an artists, when I managed to find one, which will help sell the idea that it is a ship). Also, those tiny black squares are actually crates which are laid down as the ship is build.
These warship layouts also show the region system I have implemented. Each part of the craft is given a region number, or code, which the AI use when patrolling, so they stick to their area and don't just wander the entire ship.
I'm very happy with how its all turned out so far. I hope you also like it....