Thanks!
The maze generation is done by running a DFS to randomly explore “paths”. As a new square is visited, I “open” the wall between the last square and this new one. In the end, there will be a fully connected maze!
This is the relevant code: https://github.com/bfreis/trijam-304/blob/a6a61fe06bb7c677324c18f6bfe059fd363657f5/game/maze.go#L272-L360