Battling the entire world in Opus Magnum

Battling the entire world in Opus Magnum

This is the story of “biggie vs the world,” an experimental challenge for the Opus Magnum community.

Background

The idea began a little over halfway through the 2022 tournament. Some competitors began openly discussing the idea of a different competitive format, one with more collaboration than the heads down hush-hush of a tournament.

biggieblog, bringing you a glimpse into the personalities on display in the Opus Magnum discord server

All of the participants are likely familiar names if you have read the 2022 tournament post, with isaac.wass being known there as mr_puzzel.

The weekly challenges are a separate event from the yearly tournament. Traditionally they begin in June and run for as long as there are still puzzles to play. One puzzle goes onto the site per week, with whatever structure the hosts and puzzle creator want. Nobody tracks a cumulative score, but the hardcore players still get fresh new challenges to focus on.

Haxton sent me a discord message before the weeklies began, and asked if I was interested in following through on “biggie vs the world”. I was.

Hard Puzzles

My goal was to design something diabolical, yet fun. I wanted both latency and geometry to come into play, without either one dwarfing the other as a challenge. A perfect score should be calculable, but not readily attainable (if at all).

My previous attempt to do something like this, ended up with the puzzle High Gloss Finish. This was the penultimate challenge of the 2020 tournament. My host solution was 45 cycles, and beat everyone except PentaPig. If you want to watch the results for that puzzle, you can find them here. PentaPig’s winning solution is shown below:

PentaPig cemented his 2020 tournament victory by blowing away the competition on this puzzle. Here is his cycle optimized machine.

Theory

Every cycles design can be broken up into a couple of fundamental numbers. The first, called N, describes how many inputs you need from any one source, before you can complete the puzzle. The second, L, describes how many steps have to happen from source to output, for the very last piece. If you can compute N and L, the cycle count of the design is going to be 2N+L+1.

For many of the most difficult puzzles, we still know their theoretical limits.

Example

Calculating N is relatively simple stoichiometry. For High Gloss Finish, you need to make 6 outputs with 3 air and 3 water apiece. Your only source of water and air comes from duplicating salt from the wheel. Those salts come 3 at a time from the large input, so you need 12 inputs. From those 12 inputs, you could purify 6 copper worth of metal, and combine with pairs of quicksilver from the small input to make the 6 gold. N=12 is both necessary and sufficient.

Calculating L is far nastier. To get those gold, our N=12 idea requires breaking 3 bonds, purifying 3 times, projecting 2 times, and then making 6 bonds. That’s so many steps, and the lowest possible L for N=12 is a whopping 17. The cycle limit would then be 42. But it gets nastier still – sometimes there are ways for a higher-than-necessary N, to result in a much lower L. In a very substantial writeup, I came to the conclusion that optimal cycles for High Gloss Finish was actually 36, with N=11 L=13 on the metal and N=16 L=3 on the quicksilver. Two different pairs of numbers, but both of them agree on the cycle count. 2N+L+1 = 36.

In Practice

Obviously these two numbers won’t place parts and program them for you. Whether such a theoretical number is possible, relies on the next stage of the solution design. This is where the big challenging puzzles remain daunting. Can you process an input every 2 cycles, while keeping the necessary moving parts moving?

Early in the game’s history I made a name for myself as the guy who could handle this step. I came up with weird tactics to put those theory numbers into practice. I wasn’t always perfect, but I did this for fun and some of my successes stood (or still stand!) as the best known solutions to challenging cycles puzzles. One that I am very proud of, a realization of N=18 L=1 on Explorer’s Salve by buffering vitae, is shown below.

Puzzle Design

All of the above context is relevant, to the puzzle I decided to build for biggie vs the world. I enjoyed the mismatched N and L for a theoretically optimal High Gloss Finish. I liked the creativity of the buffered vitae in Explorer’s salve. It was certain that no matter what I built, I was going to do my best to solve it well, and then hand it to the weekly hosts to reveal to the world.

On May 25th, a few hours after Haxton reached out to confirm my interest, I had designed the puzzle “Nightmare Fuel”.

The amount of input was identical to High Gloss Finish – a 7 atom and a 2 atom input. The output was bigger, but fewer atoms were consumed in the process of building it. Some quick calculations showed that N=8 was sufficient for the large input (“molten residue”). Every pair of inputs is able to provide 3 silver, and you need 12 for the 6 outputs. Counting latency, you needed L=10 on those metal to be able to assemble everything without conflict. The rest of the output could be assembled from the mors and fire and the air input (“thin air”). By design, N=12 L=2 on the air agreed perfectly with N=8 L=10 on the molten residue, for a theoretical 27 cycle solution.

I was open to reshaping or modifying this puzzle in some way, but I decided I needed to play it first to figure out if it was fun.

Early testing

I opened a document called “Nightmare fuel 27” and started brain dumping into it. I wanted to convince myself that 27 was possible, and come up with a list of all the freedoms I had in building it. But 27 was actually very, very hard.

I got discouraged and spent a week fiddling with disassembly processes for the molten residue input. Many of them were optimal up to the point where the first silver was created, but had no chance of achieving the perfect final bond to hit the theory minimum. They weren’t even close enough to convince me I could get within 5 cycles of minimum. I needed to stop thinking like a perfectionist, and have fun with it. Otherwise I would never have any solution, let alone a good one.

My first solution

During early testing, I noticed that I was having a hard time envisioning the assembly process. So I built a solution that was taking inputs only 2/3 of the maximum speed, to understand a method.

The good about this solution, is the latency from metal input to output. The very first silver is formed as early as it can be, in the top left. Every subsequent silver is formed 3 cycles later by the same glyph, which is operating at its top speed. The even numbered silver from that glyph move onto a multibonder and complete the output.

The bad about this solution, is pretty fundamental. I am committing to only making useful silver in one place in the solution, which means I don’t get to pull inputs at maximum speed, and those I do pull I partially throw away. It’s painfully obvious that I need to increase the throughput of my solution to get somewhere with it.

I could make a second pipeline that runs half as quickly as this one. I intended for the silver and pair of salts that go into the disposal, to become another pipeline which would match with the ungrabbed air. But the whole thing isn’t ever going to be a sufficiently strong cycles design. I built it to break my paralysis on this puzzle. So I never completed the second pipeline.

36 cycles

When I next sat down to play the puzzle, I figured I would use one of the perfect silver assemblies from my failed first idea, and complete it while throwing things away. It would be pulling inputs at maximum speed, which gives it an advantage over the previous solution, though it would still not be making use of all the material. I had hopes and dreams about what that material could become, but I needed the right starting point.

This 36 cycle machine was fun to build, including the wacky track loop that dodges so many swings. It made an output every 4 cycles, and the numbers say it is N=12 L=11.

35 cycles

Before I committed to my secondary pipeline, I redesigned this 36 from the ground up, targeting the perfect L=10. Even if I was using 12 inputs instead of the minimal 8, I wanted to find that latency. With a bit of effort, I got it.

Notice how the silver from the lower pipeline swings onto a multibonder, and is immediately part of a complete output. That’s the goal. That is how you get 27 (if you are building all of the other material usefully, which I am definitely not).

Odd-one-out

The reason I committed to these designs, even though they were throwing things away, is that it drastically simplified the problem space. I could use the convenient parts of the input (copper, mors, and 2 of the iron), to regularly build outputs. I could then combine all of the rest of the material in another pipeline, to make an extra output which brought up the “you win” screen far sooner.

If I believed 27 or even 28 to be achievable, I probably would not have kept at this approach. But, after being so daunted by my first attempts at 27, I relaxed my expectations. If I could odd-one-out this design, it would probably be a 31.

That did require getting that material all the way around the bottom of the solution to the output glyph..

32 cycles

When I figured out all the details of odd-one-out, my pipeline was just barely too slow. It landed after the 5th mainline output, instead of before it. In effect, that meant I was down to N=10 L=11.

However, this does demonstrate the idea behind the approach. Since we don’t need the air input right away, I can grab a few of the first available airs and set them up, eagerly awaiting mors and silver from the long pipeline. I even use one of them as a “wand”, strictly there for movement and never for output.

31 cycles

After some geometric tinkering, I was able to find a tighter bottom pipeline which did get an output in ahead of the mainline’s 5th. That meant that the output already being produced on cycle 31, was now the 6th, and I had reached the limit of this design.

I weighed the strengths and weaknesses here. It had perfect latency for the “simple” pipeline, the one that got to use the convenient parts of the input. It did the most it could with the less convenient parts – there was no chance of getting odd-two-out here and bringing it any lower. But at the same time, it was 4 whole cycles behind the limit. N=10 L=10 can’t compete with a good N=8 solution. If someone built a slick solution that actually used all of its material in the center, I would lose.

30 cycles?

I tried to simplify the problem further. I built the following custom puzzle, and solved it in 30 cycles.

This build was the second half of a proposed 30 cycle machine. It didn’t grab the top silver or mors until cycle 10, and the bottom silver until cycle 12. It was theoretically possible to make a pipeline for molten residue, the actual input, with available silver and mors at this exact time. I would need to route the inputs to glyphs on those positions with little or no wasted cycles. In fact, I only needed to solve the first 4 inputs, and the next 4 could follow 9 cycles afterward. It would be N=8 but with a single cycle delay, and then L=12.

I worked for a while on the molten residue side of this machine. But, I never got it to work. Mors was too difficult to generate at this timing. I lost the better part of the final week before the puzzle reveal, trying and failing to make this machine into a 30 cycle solution to the original. I decided that 31 was going to have to be good enough. And, importantly, I truly believed 31 was a good cycle count.

The World

On day 1, the world took a collective look at the puzzle, and immediately several people said “no thanks”. By design, this puzzle was at the edge of the comfort zone of even the most skilled cycles optimizers. People who play the game targeting different metrics, didn’t even bother. Those who did stick around, began discussing theory.

zorflax being the voice of reason!!

Several people independently confirmed that theory min is 27. A few had the idea that 26 might be possible, but this relied on an impossible combination of grabbed atoms rotating at the same time while bonded together.

never mind

Paralysis

Team “the world” was not diving in headlong to try to build things. I hoped to see more tinkering right away, but I think that everyone was hesitant. Even the more skilled players looked at who they had on their team, and figured they might as well wait and see what others did.

I don’t specifically blame them, since my own journey with this puzzle also began with an internal battle. All players including me, initially pictured the opponent as some perfect all-achieving being. If we can’t achieve perfection, are our efforts worthwhile?

I had the option to reveal my true cycle score to get the ball rolling. Maybe if they weren’t fixated on perfection, they could match or surpass my solution in a week. But I held my tongue and gave it time.

kaliuresis

A new contributor, kaliuresis, was the one to break the silence.

Similar to my 46, this design only prioritized latency. Interestingly though, it used the fire from the first molten residue as one of the air in the output, via duplication. None of my solutions ever used a duplication glyph.

The thread

By this point, discussion had moved into a well-named thread:

To counter the paralysis, which had still been the primary discussion topic, zorflax posed a separate challenge. Compete against him instead! He will make a solution in private, and instead of trying to beat “the concept of biggiemac42” they needed to try to beat “the concept of zorflax”. Hopeful that his own notoriety was lower than mine, this maybe would stir some people into action.

In parallel, not necessarily because of zorflax’s offer, fiesta0618 said he would put his “stake in the ground” to give the world a starting point.

Carrying the Torch

The next day, that stake was placed. Here is fiesta0618’s first shared solution, at 33 cycles.

Huge and expensive, but very deliberately attempting the thing I had avoided. This is an N=8 solve that routes everything through two central pipelines. The timing is a lot more ad hoc, and the latency comes to L=16, but a 33 cycle solution already breaks 3 of my own benchmarks. With fiesta’s effort, the world would not go down empty handed.

It didn’t stop here either, fiesta worked with this solution to save individual cycles, first 32 and then 31.

Remarks

This was 4 days after the reveal, with 7 days allotted. I had worked off and on for a month to reach my (cheaper, smaller) 31 cycle solution, which is the actual result accompanying my heavy reputation. The puzzle I had presented to the world, really called for an approach I never got working.

I was sweating, thinking that this solution might be near its limit, but if it wasn’t I was going to lose, maybe quite badly. But I was also thrilled, because I was learning. Nightmare fuel, as a puzzle, was getting a small group of people to think about cycles in a deeper way than I had been able to.

Well I say a small group, but was there anyone beyond fiesta even still working?

Rolamni

Sort of. There was perpetual wonder whether a big name was just going to drop a truth bomb and take away the thunder from fiesta’s gradual improvements. One top player who had already announced a high level of commitment this week, was Rolamni. However, in private, he was telling me about his own internal battle with perfectionism:

(shared with permission from our DMs)

They say that perfect is the enemy of good. I can absolutely relate to Rolamni’s perspective, but it makes me appreciate fiesta’s progress even more. Parallel to biggie vs the world, this challenge revealed a battle of people vs their own ideas of what they need to be able to do. The puzzle was perhaps deceptively hard, where one would not immediately cast aside 27 as impossible. For me, and for Rolamni, the idea of 27 took precious time away from the realization of any solve at all.

Then came the truth bomb.

Specht98

In a way, Specht is the group member who is always quietly thinking. This is his first discord message since well before the start of biggie vs the world. He said nothing about paralysis, nothing about the existing progress, nothing except this solution. With it, team world had officially won, in a multi-cycle blowout.

From the design, it is clear Specht was targeting 28. The molten residue waits a cycle before it is first grabbed, due to a requirement a full 26 cycles later for bonding the final air to the 6th output.

I studied this solution, wondering two things. How did it find such an elegant geometry for the initial disassembly? And would someone fix the air problem and realize 28?

How does it work?

The answer to the first question lies in layout magic. The mors and silver multibonder in each half of the solution, is in the perfect position.

These two glyphs may look very far from the output, but they are in a calculated position, exactly two maximum-length swings away from depositing the product. In addition, the mass of glyphs to their left line up with all the right spots on those glyphs, to enable a smooth flow from left to right. This is the kind of solve I dreamed of, but could not articulate.

At a high level, the fact that parts take up space, and arms have a maximum length of 3, does impose a practical movement limit. These high latency puzzles are up against a tremendous challenge, trying to find the sweet spot where everything fits, at the right distance from everything else. But Specht found that sweet spot. All that was left was the problem with the air.

The Final Frontier

The answer to the second of my two questions above, was a resounding yes. Although initially discouraged by needing to throw away his progress, fiesta0618 was the one to find the final cycle in Specht98’s design. On Thursday morning, a day and a half before the deadline, fiesta0618 posted this gif into the thread:

It’s a beautiful hybrid of the clean orderly layout on the left, with the “duct tape and zip ties” method on the right. The whole is greater than the sum of the parts. It also is a fantastic match for the puzzle’s design.

I built the molten residue input with the intention that you need an orderly pipeline to work with it. I didn’t find one that met the needs of the rest of the solution, but the intention was still there. Specht was the one to find it. However, the thin air input, with higher N and lower L, was always going to be a little more wild and crazy. In this solution it ultimately got the treatment of the vitae in the old Explorer’s Salve solution – buffered and provided on demand, used up just in time for the final output. Unlike Explorer’s Salve, there’s no obvious designated space to store that buffer, so the part in the middle has to do a chaotic dance.

Opening the Floodgates

The world saw the 28, and decided that was certainly the cycle count where it ends. Now anyone who found a way to save cost, which was the secondary optimization target, would be contributing.

We saw dozens of small cost improvements from Rolamni, kaliuresis, F43nd1r, coocoo52, as well as Specht and fiesta. The cost of 28 cycles dropped all the way from the initial 2600, to 2070.

The world had won handily, but they didn’t know it until the reveal stream. During the reveal stream, we also get to see what Zorflax built on his own..

Closing Remarks

I am happy to have created a good puzzle, and am battling a bit of shame about my performance. But even if I underperformed, I genuinely think my 31 cycles solve was good. Many solid players targeted lower and failed, with designs that would have ballooned into the mid to upper 30s when trying to salvage them. Specht found a magical layout, which I didn’t find nor could have found with my approaches. 28 became real, and then nobody had a second thought about how difficult, even astounding, it was.

Good job world, I’m humbled but also proud of you all.