It's taken about a year to get where I am, a few redesigns of how I wanted the core of the game to work (enemy generation and level style) meant I completely changed the process of generating both. I've now settled on something that allows me to make the game I wanted to all along, whereas my first iterations were compromises.
Whilst being a traditional wave-based twin stick shooter at heart, from the start I wanted to give the player some freedom to explore and feel like they were not just defeating screen after screen of enemies. The game is structured into map 'layers', which each comprise of a grid of rooms. A room takes up the whole screen and contains one wave of enemies. There is a wall around the room, and on clearing the wave of enemies a selection of routes forward open, allowing the player to move through a randomly generated maze.
In-game map showing an example empty maze. The player will not be able to see rooms of the maze until they have visited them.
To give the feeling of a richer environment, each room of the maze will have a few defining features, and will have an environmental 'zone' which determines the choice of scenery props and backgrounds.
I'm really excited that I've implemented the random maze system, as it gives the player a different challenge for every single playthrough! It will mean they'll never know where to hunt for the best items and powerups, adding greatly to re-playability!