Tab Completion

I'm Tab Atkins Jr, and I wear many hats. I work for Google on the Chrome browser as a Web Standards Hacker. I'm also a member of the CSS Working Group, and am either a member or contributor to several other working groups in the W3C. You can contact me here.
Listing of All Posts

SpaceChem Bonders Explained

Last updated:

I just finished SpaceChem (a great, frustrating puzzle game!), and toward the end I looked up solutions to a few puzzles, but got frustrated that they didn't work for me. It always failed somehow at the "bonders", spots you can move around that will bond atoms together into a molecule. Eventually I got frustrated by an intermittent failure in a level, and looked up the details. Because it was hard to find the full behavior details of bonders, I thought I'd reproduce them here, to help spread the data.

Each bonder has a hidden "priority" number, which can't be determined except by experimentation. Each bonder is tested in priority order to see if it can affect a molecule bond. Once a bonder is chosen, it looks down and right only, checking for a second bonder in priority order as well. This continues through all the bonders.

So, when you hit a Bond+, SpaceChem first checks the 1 bonder: it looks down and right to see if the 2 bonder is there, then to see if the 3 bonder is there, etc. Once it's run through the list of bonders, it checks the 2 bonder: it looks down and right to see if the 1 bonder is there, then to see if the 3 bonder is there, etc. And this continues through all the bonders; at the end, every bonder link will have been checked.

The bonder priority is always the same when you start a level - if there are 4 bonders in a square, the order is:

1 2
4 3

If there are 8 bonders arranged vertically, the order is:

1 2
4 3
5 6
8 7

I'm not sure what the priority order is of the levels where there are only 2 bonders, or 8 bonders arranged horizontally.

Apparently, if you roll your mousewheel over a bonder it will change the priority, but nobody has any details on how this works.

(a limited set of Markdown is supported)