Tilt your phone to avoid enemies as you descend... The Layers!
This project was pretty crazy, not gonna lie, but I've learned an awful lot in the process.
The basic premise was for an endless game where you must tilt your phone to avoid enemies and reach the hole leading to the next layer, with more enemies being introduced as you progressed through the levels. The question that remained was: what would that progress look like? I cycled through ideas, from an exploration-based metroidbrania, to a roguelike, to a boss-rush game, and in the meantime kept myself busy by creating elements I knew would be in all of them, and made it look really good.
The problem was, in doing this, I was forced to keep my options open, meaning the scope ballooned exponentially as I tried to accomodate all possible eventualities and create systems around them. At a certain point, I had to decide enough was enough, and in so doing, I devised a method for building components and systems that would reframe it from the perspective of future developers working on the project:
1. What do developers (including myself) want to concern themselves with in order to set this up in-game?
2. What do those designers expect the code to do/work out for them automatically?
...And anything between those two questions I could expose with default values. Using this system, and finally deciding on a low-scope answer to my question of design, I built a system that could easily be expanded on within the reduced scope I picked, without funneling me down any particular route, and was able to create the (playable, though repetitive) demo below.