Keep it simple (stupid)
When working on a system or a certain mechanic, it’s easy to get so caught up in it you forget the one thing it’s supposed to do. Make sure that one thing works well and don’t lose track.
I had a lot of problems with this when finding the right system for a level select. I had iterated on many systems that all had certain advantages, but they didn’t convey their most basic function well enough. Most of the time players wouldn’t even recognize it as a level select. There were some of the options I went through:
A circular level select: This fit nicely with the style of the game, but players didn’t really get it. They would select a random level (mostly by accident) and replay that level without really knowing why.
A tree structure: This nicely isolated the trunk/basic level from the branch/more varied levels. In the branch levels players could pick another one when getting stuck. Problem again was, few players recognized it as a level select.
These level selects had some nice advantages, but they didn’t offer what was essentially needed. For Circles, the level select should give sense of progress and completion and offer a way to return to previous levels (to get the perfect dot). That’s what it should do best, and I lost focus on it.
A line: In the end, I cut the level select “screen”, and integrated it in the gameplay as a simple line top. When moving the cursor to the top, it pops down, shows your progress, and you could pick the level you want to play.