Breach: Done

This one was fun. Because this is my 20th Pyweek submission, I wanted to try making something special, though I'm not sure how much that shows. For example, it's my first submission with an actual in-game story. :)

Most of my Pyweeks consist of either doing something small in the last few days due to time constraints, or iterating through a number of bad or overly ambitious ideas throughout the week until I find an appropriate one (again, in the last few days). Luckily, this time I had a reasonable amount of time, and I figured out an idea early on that I stuck with throughout the week. I knew that I wanted to do a puzzle this time -- I just felt in the mood for designing puzzle levels -- and having my mind set on it was helpful. As usual, I did not implement everything I wanted to due to time constraints, but I implemented most of it.

The core mechanic is fairly simple: you move around flipping bits in wires in order to open and close doors and reach the breaches. A door is closed when it receives at least one positive signal (i.e. it receives energy), and open otherwise (i.e. no energy to power it up). A special component is that there are one or more paths that always need to be blocked by at least one door, because "you can't let him in here".

Creating levels was surprisingly time consuming. The reason is that I found it tricky to turn this puzzle mechanic into deep levels. I didn't want to add too much to the core puzzle mechanic because I like its minimality, and I like the whole concept of generating depth with simple rules. I might just not be good at puzzle design, but I often got either straightforward levels or "superficially complex" levels from this mechanic. That might be due to the nature of the core mechanic, but maybe someone can prove me wrong. :) Towards the end I did add another feature to try to deepen the mechanic a bit, and I hope the last four levels turn out to be more interesting.

I hope you find this game fun! As always, congratulations to all of you who submitted a game!

PS: Bonus question! Prove that it is possible to construct a level, using any element of this game, that computes any given boolean function. That is, given any n-ary boolean function f (say, expressed as a propositional formula), show that you can construct a level that takes n wires with inputs x1, ..., xn, and outputs f(x1, ..., xn) in a wire. For the sake of this question, ignore space and placement constraints (infinite space, a breach does not need a wall, etc.).