SpaceChem Mission Viewer v1.2

I made a small yet important update to the mission viewer yesterday : element substitution.

When I asked Lanky (the guy who's responsible for most of the new ResearchNet assignment) how he made his special-element missions, he said he had asked Zach to simply replace certain elements with the greek ones. After feeling a bit stupid for not thinking of that myself, I went along and added that option to the viewer. And then when showing this to Lanky, he suggested an any→any substitution option, so that's now possible as well.

Fig 1. Conversion settings for Ru→Ω, Os→Σ, and Hs→Δ (which is element 203).

It works as follows. There is now a “conversion bar”, seen in Fig 1. There are three types of fields here:

  • A conversion enable checkbox.
  • Search input-fields for the special elements Θ-Av. Av is the symbol for Australium.
  • A batch-converter field, where you can specify any-any conversions by entering search:replacement pairs.

The example from Fig 1 has 'Ru' for the Ω substitution, so any Ru's will be converted to Ωs. The batch string will be parsed into Os→Σ and Hs→Δ substitutions. As you can see, you can use either the element's symbol or number here – the special elements have numbers 200 through 204.


The conversion process will change both the elements in the molecule, and in the formula. At present, the formula substitution uses a simple text conversion, so it can get confused by single-letter elements, but otherwise it works fine. Only valid SpaceChem elements are considered, so you shouldn't be able create a mission code that crashes the game (I hope).


All in all, this change presents two interesting possibilities. First, the ability to create puzzles with special elements with relative ease. Second, the ability to break bond-limits. for example, you could change O-C-O into O-H-O using a 'C:H' batch. Not that anyone would be wildly Mad enough to use that as a target, right? Right?!?

Ahem, so yeah:

7 thoughts on “SpaceChem Mission Viewer v1.2

  1. I hoped you would ^_^

    But seriously, atom smashing? What the hell? I've seen you and pseudodude have fun with it, but I'm still somewhat baffled how something like that is even possible.

  2. SpaceChem probably only compares atoms that don't belong to the same molecule for collision detection. If they belong to the same molecule, then they obviously can't collide, right?

    I could see that being done to save CPU cycles. Otherwise, you'd have to compare every atom's position to every other atom's position, and that would bog things down even more on a production level.

  3. That's probably what's happening, yeah. It does make sense to ignore self-collisions because those obviously should never happen.

    The 'problem' (and I use this term lightly, as it has so often produced such amazing result) seems to be that collision detection only happens after all the other operations. For the moment, I'm thinking this happens:

    • red acts
    • blue acts
    • red/blue regrab atom at current position (it may have gone because of fusion, for example)
    • check end-game conditions
    • check collisions

    I'm sure there's other steps as well, but that seems to be it. For input/fusion, this means you can fuse the old atom and grab the new one (I've seen this happen) before the collision checks. I'm not sure at which point the max-bonds check will happen. For fission/output, you have something very similar, but you're still left with one atom. This is sorta-kinda an implementation of Planck time, I suppose.

    However, for input/bond, there should be two atoms, but for some reason one of them just ... disappears. Maybe at bond-time the game sets up a matrix with pointers to the atoms for easy reference, then bonding happens, and then the atoms are connected into molecules again. And when you have two atoms at the same place, the newer one just overwrites the old atom, making it vanish.

  4. Okay, yeah, and now that I scroll down just a little further on the SA thread-page I was on to find out who posted an operation order, I see that it was actually Pseudodude that came up with this:

    1. Remove bonds from fission target
    2. Split fission target
    3. Output
    4. Re-establish bonds on fission target
    5. Finally check for collisions

  5. From a responce to your post on steam forums I gathered that you have/had a version of the program that simply translates from base64 to json and back. Any change you could release that? I'd like to use it to test what happens if you make a mission with unconnected atoms in the input.

  6. This is probably a very dumb qeuotisn. But what are exactly seeing here? Atoms have no outside shell, right? And I assume the nucleus of the atom would be way to small to be seen. Is it whatever wave they're sending in the microscope interacting with the electrons and creating the illusion of a sphere? If so, does this mean we could not use the same technique with atoms with a small number of electrons? (say lithium for example)

Leave a Reply

Your email address will not be published. Required fields are marked *