I jotted this down in one go, so it will ramble on a bit. You have been warned.

It is now exactly 2 years ago that SpaceChem entered my life.

As you may have guessed, I kinda like this game. In much the same way as Scrooge McDuck has
a modest amount of cash. As soon as I saw it pop up on steam's featured list, I knew this
was something for me.

This game has basically been my addiction for the last two years. I can honestly say that there
hasn't been a single day that I haven't had SpaceChem on my mind at least at some point. Steam
says I've played for about 330 hours, but I'm sure it's closer to 1000 because I work out most of
my designs mentally and/or on paper first. I have pages upon pages of level descriptions
(name, inputs, targets and features/buildings – basically what my mission viewer outputs),
design tryouts, reactor connections and their products, ratio calculations and fusion/fission
schemes. I've even drawn them on my hands when I didn't have any paper close by.

Friedel-Crafts, Misproportioned, Cyanogen, and a 2-rx plan for No Thanks Necessary.
Solved Cyanogen on the plane back from holidays.

Organometallics (top) and fission schemes for Not A Planet. I did it by reducing Ce
down to H via a feedback loop, which required a 56-counter. Oh, this game.

Pseudoscience:cearn. A hellish assignment made by Lanky just for me :). Also
various other missions (bottom) and fission schemes (everywhere).

Figuring out the Si3O4 splitter for KOHCTPYKTOP.

Notebook at work: Impostor and combustion Engine.

Pocket notebook with ideas for Solder Coarsening and Combustion Engine.

Overflow. Calculations for balancing out 1 N2 + 11 O2 to n NO.
Optimally, 14/33 of O2 should become N.

Carbon splatter. This can be balanced with a period of 216 inputs. I think … haven't dared to try it yet.

My own story

The moment I really got hooked was level 3.1:
‘Everyday Is The First Day’. For some reason, that was what made the game click
in my head. How to use waldo priority to do in/bond combos as well as make double-bonds in a
single cycle, how target shape is irrelevant and how effectively pass a molecule from one
waldo to another. I actually spent a few days just trying to improve on this mission to see
how far I could take it. I started with a
136/1/24 serial solution that I later
improved to 117/1/25) by tightening
the loops and improving the relaying, and then later scrapped the whole thing for a
104/1/42 parallel solution, which I
was very happy with.

And then a few days later I found the upload site
SolutionNet, and upon uploading noticed
that my 104/1/42 took the top spot – my first first place :D. Okay, so it only
lasted about a day because then Sahishar had noticed that you could start with a in/grab as
well rather than letting blue spawn its own carbon (a mistake that I never made again), but I
was still very happy with it.

Looking around the site more I found the impossible how cycle and symbol bests for the first
mission. That's where I learned the line/bouncer pattern, where reflect the waldo back the way
it came from, creating the shortest path possible; and the parked-waldo pattern, where you
just ‘park’ the waldo against the wall where it executes that instruction
continuously. Holy crap, you can do that?!? That truly opened my eyes to the depth
this game had. And then later came sensors, fusion, the careful interplay with multiple
reactors and dealing with stalls, ratio balancing, bonder priorities and flip flops (oh god,
the flip flops).

Proud moments

5.5 : ‘Exploding Head Syndrome’. I started by writing down variations on how
to get from H2 (1,8 or 10) to 2 Pu (94) + 25 H2 + 25 O2
with as little waste as possible, which culminated into two 7 H2O/24 H + 24 OH
splits, leaving only 2 loose hydrogen, resulting in
this solution.

6.6 : ‘Molecular Foundry’, improving my 2-reactor design. After an initial improvement from
3433 to 1798 cycles, I put a few screenshots
on my phone to improve during vacation. That ended up at 1647. Not too shabby for only 2 reactors.

8.5a : Ω-Pseudoethyne. This bitch of a mission is the stuff of nightmares. As
one redditor notes: "|<------You must be THIS AUTISTIC to solve this level------>|".
Now, since I am that autistic, it actually works out nicely.

Anyway, this one
has you sorting and disecting Carbomega molecules, usually inside a single reactor. I designed
my own carbomega splitter on paper, and it worked exactly how I envisioned it. I think I
danced across the room when I saw it work. How many puzzlegames do you know that elicit that
kind of reaction?

And, of course, once I realized how to use special elements for custom missions, doing the
reverse of this was the first thing that came to mind :).

Could be SpaceChem's tagline.

And then there's 4.6 : ‘No Need For Introductions’, in particular my 1-reactor
solution for it. When I saw snapdragon's
1-reactor Gas Works Park, I knew
I had to try some insane low-reactor stuff as well. Okay, first I just sat there mesmerized,
but after that I wanted to try something like this too. I decided on NNFI for a number of
reasons, one of which was that I could actually see how it would be possible. Completely bonkers,
yes, but possible with the right amount of patience and manual controls. I think it ook me
about 5 hours to build, and then another 4 to actually complete it once, because I kept messing
up on the controls forcing a restart. And, again, happy dance ensued after that.

The joy of SpaceChem

There are a few reasons why SpaceChem gives me a happy. There's the fact that it's basically
chemically-flavored symbolic programming with two threads, and later multiple cores as well.
Then there's the open-endedness of it all. In most puzzle games, everyone works towards the
One True Solution, but here you're just given the inputs and targets, and how you go about
turning the former into the latter is entirely up to you. So not only are you designing and
constructing a solution, you're creating your solution! Especially in the later
missions, every solution will be unique.

Nerdgasms

Then there's the sense of elation you get when you see your solution running. I've looked at quite a
number reddit and forums posts of people describing their experiences, and everybody is always
so proud of what they've made. Even if it's a horrible kluge of spaghettying waldos, there's
always that 'I made this' sense of acomplishment. Or, if you will, "This is my solution! There are many like it, but this one is mine!"

For example, there's
this for mission 3.1. Or this monstrosity.
Levels like ‘No Thanks Necessary’ and ‘In-Place Swap’ also tend to
produce the most marvellous contraptions.

One comment I saw on Penny-Arcade sums up the experience best:

this goddamned game. spend 20-40 minutes finishing a level and think "hey I'm pretty clever" only to load the next one and have the game kick you in the balls and whisper "nope, you're actually dumb as shit" in your ear while you're rolling on the ground.

But, oh, that moment of feeling clever feels so good!

This seems to be a common thought.

Depth

As mentioned before, the game also has a lot of depth, but you do have to dig for it. The
in-game tutorials does an adequatish job explaining what every instruction does
(though some wil disagree : I've seen enough posts of people not knowing you can move
start symbols or bonders, that symbols can change color or direction, and that molecule shape
doesn't matter), but it does very little in terms of hand-holding. Most things you have to
find out on your own. At first I thought bond+/- had to be issued while you were over the bonder
plates, but a little experimentation would show that to be false. The same is true with seeing
how simultaneous instructions work (i.e., red before blue), and how the output of one reactor
becomes the input for the next (the order and placement of the output is carried over to the
input). But there's more: not only is there waldo-priority, there's also a hidden order in
how bonders work, and even reactors have a certain type of priority. There's also a strange
quantum effect where you can have two atoms at the same place during in/fusion and fission/out
combos. And there's particle-smashing where you can just kill off atoms if you in/bond in
a certain way, but I'd count that as a bug.

But aside from just those mechanisms, there's a wealth of design patterns as well. Using the
different priorities you can in/out and (un)bond in a tight space, which allows for really
efficient designs. With the line pattern you can create fast and symbol-efficient relay
reactors, and the parked-waldo can help cut symbols as well. And when you get to flip-flips,
oh lawdy the things you can do with those. They're not just useful for simple counters like
2n, 3, 5, etc, but you can combine them inside splitter reactors to create really odd
output ratios, like 11:13 or 7:17. And yes, there are missions where that would be useful.

There are also a number of missions that make you use familiar things in different ways.
One example is sorting without sensors. This can be done using bonders (see
‘Nonsense’ and a number of Lanky's missions), or nuke-ops like in
‘Nobility’. That was one of the missions I took on holiday to solve, thinking it
would be a standard nuke mission, then I came home and noticed I didn't have sensors.
Damn you, GuavaMoment! There's even missions with nuke-unbonding now, and catalysts,
and special-element-fission.

Head-asplody challenges

There's also the challenge aspect. This game is hard, and if you have an optimizing
type of mind, it becomes even harder. In some cases, you can spend more time on a single
mission than on completing the campaigns of entire games. The addition of the comparison
histograms is also a stroke of evil genius. There's always the drive to make the best solution
you can think of, but that drive will become even stronger when you can actually see that
better solutions exist.

And you can also set your own challenges. You can go for speed, or for symbol-efficiency. A
number of people have gone for 1- or 2-reactor solutions in missions where it's theoretically
possible, but you have to really work at it. Missions like
‘No Thanks Necessary’, ‘Gas Works Park’ and
‘Precursor Compounds’. And, of course, ‘No Need For Introductions’
:). You can also try for 1-waldo solutions, or not to use sensors where they are
available, or even go for the slowest solution, like Guavamoments's
260110-cycle Of Pancakes and Spaceships.

You can also let others pick the challenges for you, in the form of a tournament. Last year
there was an official little tourney at PAX, and Guavamoment's Something Awful tournament.
This last one was just insane in both missions and solutions. This was around the time I
make my mission viewer, which allowed for a number of new things, like the use of the special
symbols and breaking the max-bond limit for input molecules. The things PseudoDude did
on some missions have to be seen to be believed. Look at
California Screaming, for example.
Absolutely crazy. I was also very, very impressed how people managed to make balanced solutions
for ‘Nightmare Factory’. I have sometimes called SpaceChem a celebration of human ingenuity,
and this tournament certainly showed it.

Edumecational, using Science!

The game also has great potential for education. Not really for learning chemistry (although
with all those fusion/fission levels I now know the periodic table better than I ever did in
school), but mostly in planning and problem-solving. Before you can even start, you should
analyze what you have and what you need to get, and how which steps would be necessary to
do it.

For example, for Every Day, you need to get two C's, triple-bond them, and then bond
two extra H's on each end. For Ω-Pseudoethyne, you need to split the Carbomega J,S and P
into C=Ω chunks, and make sure you use two H2 for each C=Ω. You can't
do a mission like that without at least some forethought.

It's great for learning how to debug problems. Invariably, something will go wrong somewhere,
and you have to sit down, figure out when it goes sour, and then try to fix it. It can be
a missing bond, or perhaps it the spaghetti mess you accidentally create an extra bond
somewhere; path-lengths may get out of sequence so that you get collisions later on; and on
production levels you will encounter pipeline stalls on both input and outputs or other timing
issues, and you have to look really carefully to spot and fix those things. You can learn to
create counters with flip-flops and create gates with sensors, which ties in with electrical
engineering. For nuke missions you will need to know the periodic table pretty well, and
know enough arithmetic to produce the right outputs.

And for my own purposes, figuring out savegame and the custom-mission format was a nice
flashback to decompiling old GBA assembly code. Ahh, good times.

So yeah, that's pretty much what SpaceChem means to me. This is the most mindbendingly awesome
game ever.
All hail Zachatronics.

Val and Scott were joking that "dihydrogen monoxide" was coming out of Lee County residents' taps.
That's another name for water.
But many who didn't know that thought it may be unsafe to drink.
That led to several calls at Lee County Utilities.

I had some time to play with the researchnet overview on an iPad the other day, and noticed just how cumbersome copy-pasting is on a tablet. It annoyed me so much that I made the mission viewer accept the code as a URL parameter as well. So now, instead of having to …

click on 'show code'

click and hold on the textarea

select 'Select All'

remove the on-screen keyboard

select 'Copy'

click 'mission viewer' to go to the mission viewer

click and hold on the textarea to be able to select 'Paste'

remove the on-screen keyboard, again

hit 'SEND CODE'

reload the researchnet page and retrace all previous steps because apparently you inserted or deleted a character on the gorram keyboard that popped up,

it's now more along the lines of …

click on 'show code'

click 'mission viewer' to go to the mission viewer, with code already inserted and submitted.

This should simplify things immensely. Note, though that the HTTP variables have a character limit that according to some sources may be 512 characters, in which case the bigger missions might not load properly. However, other sources sat it can be as large as 8000 for Apache servers and in testing it seems to work out, so it might be nothing to worry about.

This new feature also opens up the possibility of directly inputting a code without user intervention, using ?code=[CODE GOES HERE]. However, be careful with that, because mission codes contains plusses ('+'), which are normally read as spaces (' ') in urls. All spaces are converted back to plusses to be sure, but yo udo need to be sure there aren't any actual spaces in the url.

And at long last, I get off my ass and fix tonc's code for the arm-eabi ↔
arm-none-eabi change. Also fixed some other things in html and css, and updated the
PDF. I had to export the PDF via chrome this time, though, so it'll look a little different.
It also lost me about 60 pages, now where did those go all of a sudden …

This is an overview of all the current researchNet missions. I might spruce it up in the future – maybe use the proper type and difficulty pictures and show the level's mission details directly rather than just a code to put in the mission-viewer, but for how this will do nicely.