Quantcast
Channel: achievement Archives - a blog by biggiemac42
Viewing all articles
Browse latest Browse all 13

Defeating Refined Bronze (and losing a cow bet)

$
0
0

This post will talk about the game Opus Magnum, the puzzle Refined Bronze, old and brand-new records, and a long standing bit of community lore.

Before I get into any of that though, I want to acknowledge the many new players who have joined this scene in just the first couple of months of 2024. It’s incredibly gratifying to see the game I love so much, getting this kind of attention. With you all in mind, I am going to write this post with absolutely no barrier to entry.

I hope that, even if the only connection you have to the game is by seeing animated machinery gifs on your Reddit feed, this post will be an understandable and enjoyable read.

Opus Magnum

Opus Magnum is the name of a video game. It belongs to a genre of “Zach-likes” that I find really unique and compelling. The term Zach-like comes from the studio Zachtronics, who made Opus Magnum in 2017, after previous successes with games like Codex of Alchemical Engineering and Spacechem.

Zach-like games are recreational engineering. They have the player design and build machinery with interacting parts. There’s always a point to it; usually it is framed as a puzzle and you have to build the solution. But calling it a puzzle game feels woefully incomplete. Zach-likes are far more open-ended than conventional puzzle games. Instead, I usually call Opus Magnum an optimization game.

The puzzles making up the story of Opus Magnum all relate to alchemy. In the universe of the game, the key to alchemy is the “transmutation engine”, a programmable machine that turns inputs into outputs. Depending on the inputs and outputs, you get a different challenge. Your task is to take a blank canvas that looks like this:

Then make your own transmutation engine, something akin to this:

I truly believe that one feature sets this game apart from its predecessors. When you complete a puzzle, making 6 of each required output (where 6 is Zach’s approximation for “infinity”), you get the option to Record Gif. This frames your solution in a perfectly looping gif, along with its scores.

That’s the game. See inputs and outputs, design a machine, then get a beautiful gif as payoff.

Optimization

For some, it may be enough to get a solution, record your gif, and be happy. Move on to the next puzzle. But these gifs are an opportunity to show off. The machine is an expression of how you, as its designer, think about the problem. The scores at the bottom confer a degree of merit to your accomplishment.

You may be motivated by aesthetic properties of the machine itself. You may be conforming to a self-imposed set of restrictions. In these cases, all focus is on the machinery.

Alternatively, you may want to make one of the numbers as low as you can. If so, the machinery is a means to an end. You are chasing a target. If you reach it, your gif shows the world how it was done.

Cost

First of the three scores shown in the gif is the machine’s in-universe “Cost”, in the unit G for Guilder. When scoring a solution for cost, the game counts each part that you place. Parts have an associated price, approximately balanced by usefulness, invariant from puzzle to the next. The simplest arm, with one gripper, costs you 20G. A glyph of bonding costs you 10G. The parts tray shows the price for each component.

When trying to make a solution with low cost, the player has to resort to the bare minimum. Low cost solutions tend to have a single arm, slowly playing through dozens or even hundreds of instructions. As an example, here’s a gif of my cost-optimized solution to Blue Vitriol, a puzzle that Zorflax released as part of the ongoing tournament. We’ve passed the deadline on this puzzle, so I’m not leaking secret info or anything. My goal is just to show the style of solution you get from optimizing cost.

The hardest part of cost optimization is the limited number of places an arm can reach. Within Opus Magnum’s hexagonal grid, a short arm has access to 6 neighboring tiles. Making the arm longer does not help, as it can only stop when directly aligned with an axis. So, cost becomes about figuring out which tiles you can get away with accessing “indirectly”, through building structures (multi-atom molecules) rather than placing atoms directly using the arm.

Cycles

The next score listed is “cycles”. The simplest explanation is that fast machines have lower cycles. But to actually determine the number, we need to revisit a remark I made earlier: “6 is Zach’s approximation for ‘infinity'”.

Limitations of scoring

Ideally, every machine you create in the game, would run forever with consistent behavior. But actually proving something runs forever, is remarkably difficult. There are plenty of examples on this blog for why that is:

..yeah. When a game is Turing complete, you can create designs that require sophisticated analysis to even predict what will happen on long timescales. Now, over 6 years after the game was released, we have community-built tooling that can weigh in on the long term behavior of all well-behaved solutions, and identify when a solution falls into the umbrella of “computation” so as to not bother trying. But in 2017, as the game was released, Zach took a simpler approach.

When you make 6 of each output, you win! Your cycles score is awarded at completion. Specifically, as you simulate your machine, it loops through the instruction tray, with each column of instructions taking one cycle to execute. At the point where you win, the game will have simulated some number of cycles, and that is your score.

Cycle 1 is the first cycle that any arm has programming. Once an arm reaches the end of its tape, it loops back to the first instruction. All arms’ tapes are padded using blanks to be the same length, running through their tape once per “machine period”. The highlight goes over whichever instruction will execute on the next cycle.

Cycles in practice

It’s certainly simpler to use a looping machine to make products. That way when you’ve written the instructions for one product, and reset back to your starting positions, the next follows automatically. It’s also more likely to give you a satisfying gif as an end product. However, true cycles optimization takes “simplicity” and “looping” and treats them as suggestions.

The goal is a low number for cycles. The method to get there is to win as early as possible. If you have to script every arm in the machine for the entire duration of the simulation, so be it.

Don’t get me wrong: cycles often just requires making clean loops. See my cycle optimization tutorial videos for the basics of throughput, latency and pipelining:

In the most extreme cases though, there is a deliberate goal to make exactly 6 products efficiently, and it comes through in the gif. For an example, here is my cycle-optimized solution for another prior tournament puzzle, Mist of Dousing by brookieoz:

In this case, I did include programming past the “win” cycle, in order for the machine to loop and the natural gif to look good. But when that is too difficult for any reason, it’s common to instead use a custom gif start and end cycle. In game, during gif recording, you can press F10 to bring up a hidden custom gif menu.

Area

Area is the third score shown in the gif. It measures the number of grid spaces that get covered at any point during the solution. Like cycles, it is measured when you drop the 6th product. In designing a solution to minimize area, the process often has a lot in common with cost – use the bare minimum (this time, of working space) and go slow.

It’s pretty normal for a better-than-average area solution, to also be better-than-average on cost, and vice versa. Cycles is the metric at odds with both. But at their extremes, all three metrics diverge into their own rabbit-holes of theory and techniques.

Area isn’t even my third favorite metric, because we’ve made up our own like Trackless Instructions or any of the many others covered in my record keeping post. It has its place in competition and many of the challenges inherent to area optimization are fun, but we’ve got a long road ahead so I will move on.

The Journal of Alchemical Engineering

The main story of Opus Magnum has only a few truly challenging puzzles. However, as the game reached the end of its early access period, Zach added new, more difficult puzzles. These puzzles did not need to fit within the storyline. He created a separate menu: The Journal of Alchemical Engineering.

All of the puzzles in the various chapters of the journal, include someone’s name as credit. Some of these names come from in-universe fictional characters. Other names are those of community members who Zach wanted to credit for sending him the puzzle.

On the third page of the journal, we encounter the 5 puzzles of “Secrets of Colvan Industry”.

This page is where we meet Refined Bronze.

Refined Bronze was designed by E. Wong, a community member also known as lightningstudios. Among all puzzles that shipped with the game, this specific puzzle has unparalleled notoriety.

The rest of this blog post will be about Refined Bronze.

Refined Bronze

Here are the inputs and outputs of Refined Bronze. The upper output is a repeating chain, the actual “Refined Bronze”. The lower is an ordinary output that consumes “tristabilized salt”.

Aside: repeating chain outputs

Opus Magnum has many puzzles with repeating chains; they all behave in the same way. One “monomer” is shown in the products tray on the left, attached to an ellipsis atom, the “dot-dot-dot”. When pulled out onto the board, this expands to be 6 copies of the monomer, still followed by the ellipsis. This entire product glyph must be placed in your solution, with the usual restrictions of not overlapping any other parts, but the additional restriction that it must have the ellipsis on the right edge. You can’t rotate the part (you can rotate the molecule itself that you place on it, though it wrecks your area score).

In the early days of Opus Magnum, the scoring for infinites was buggy. What would or wouldn’t count as complete depended on unfortunate things like whether you were stepping the simulation one cycle at a time with the “Tab” key or letting it play at speed. It could also be exploited, leading to puzzles completing without all the atoms present, or requiring additional nonsense atoms bonded to fill the location of the ellipsis.

Fortunately, these were all fixed, and now the rules for completion are more sensible. Cover the entire product glyph with the right atoms, bonded together as indicated. There’s no need to cover the ellipsis or any bonds that connect to it. You may also have other atoms bonded left or right of the product, but not above or below it. You progress from 0/6 to 6/6 by covering the leftmost monomers of the chain correctly.

A gif

Basically, the completion criterion encourages a solution that looks sort of like this:

Player GoodbyeGalaxy created the solution shown above, targeting a balance between cost, cycles, and area. He wanted to not specifically optimize one, but rather the sum of all 3. I modified it slightly so it’s not as good as the original, removing a tactic to reduce cycles by wiggling the metal chain deeper onto the output.

You can get lower sum; in 2022, ebonnov beat this by quite a lot. That said, I feel that GoodbyeGalaxy’s approach fits better with that taken for cost and cycle optimized solutions, which is where we are going.

Prepare for a little bit of alchemy language while I describe the process happening above.

The copper (🜠) atoms in the metal product come from taking tin (♃) atoms from the “Tinstone” input, and projecting them using quicksilver (☿) taken from the “Reactive Cinnabar”. It takes 2 quicksilver to get from tin to copper. Tinstone has 3 tin, Reactive Cinnabar has 3 quicksilver, so in making 3 copper you use Tinstone once and Reactive Cinnabar twice. To even out the ratio, there are also tin atoms in the metal product. Ultimately, Refined Bronze demands both inputs in equal volume.

All the while, each input contains enough material for one tristabilized salt output. From Reactive Cinnabar, you complete two bonds while separating the quicksilver. From Tinstone, you must complete all bonds as well as turn an elemental fire (△) into salt (⊖) using the glyph of calcification.

The process is clear, and we’ve seen a good implementation. Now what about optimization?

Cost

The first player to take a serious crack at cost optimizing Refined Bronze was Xavion. The very day that this journal issue released, Xavion weighed in on how it looked.

Taking the “bare minimum” approach, the first question is what we cannot solve it without.

You need to place a glyph of bonding to be able to create the outputs in the first place. You also need a glyph of unbonding (which everyone just calls a debonder), to be able to separate quicksilver, and a glyph of projection to be able to use that quicksilver to upgrade tin to copper. These necessary components total 40G.

You need an arm, which takes 20G if you get the fixed arm and no track. That brings you to 60G. But as Xavion says, there are too many components you need to use, and with our 2017 level of knowledge it seemed uncontroversial that you would need to add a couple of tracks to give the arm a chance to reach everything. At 5G per segment, two tracks would take you to 70G.

You would prefer a glyph of calcification for another 10G. However, that’s a luxury. The first major hurdle in cheapening your algorithm, is solving it without the calcification glyph. This means that any elemental fire you obtain, is now forced waste. Atoms that you can’t use, but must work around. They get in the way of atoms you want to use, but thankfully you have a bonder so you can make a waste stick. It is not pleasant to juggle a growing metal chain, a growing waste chain, and still make space to take apart these large inputs. But it is possible, largely due to the combination of bonder and debonder.

Lore

Today, the game has a nice feature: alt-clicking on an instruction in the instruction tray will fast-forward the game until that instruction next executes. This feature was added two days after Xavion finished Refined Bronze 70g. In some of the chat backreads, you can see Xavion lamenting how long it takes to simulate to the current point.

But, on November 2nd, 2017, Xavion posted the following to Reddit:

Streamable is finnicky, I was only able to view the associated gif with ?quality=highest in the URL. In the event that the video ends up lost, here is a still from it showing the layout and score:

In the comments, Xavion wrote:

I’m also not 100% certain that 60g isn’t possible, but none of the normal tricks seem like they’d work so whatever you did would be a horrible mess. Massive amounts of bonder/debonder abuse would be required to have even a hope at having things line up and it would probably make my already incredibly slow solution look fast.

Cycles

On the other front, I took a crack at cycles.

So long ago, that I was intimidated by even the idea of max throughput Refined Bronze..

I remember a little of the process. I determined that trying to output all of the salt would complicate things, making it too crowded around the output. Fortunately, salt was not limiting, so I could focus on getting the metal chain built and just let salt flow out as waste.

I built myself into a corner with where I made copper, and had to pass it through the gap between bond station and waste chain. Curiously, I built copper triplets and tin triplets on both the top and bottom halves of the solution. I needed 63 arms with 24 instructions apiece. The result came to 69 cycles.

I also got this screenshot of the histograms at the time. Looking at this, I suspect that the histograms of the day only accounted for 6 solutions total.

giggs

Later that month, a player known as giggs made an effort at Refined Bronze cycles. From an initial solution of 107 cycles:

Down to a 44 cycle monster a week later. This was the record on November 20, 2017 (according to the way the game counted infinites at the time, which sadly necessitated one awkward fire atom – can you spot it?).

This was also, by my counts, the first ever “good” cycles solution to Refined Bronze. But to many players (or spectators), a machine like this is a monstrous eldritch horror. So let’s get to know it a little better, talk about why I think it is good, and look at what specifically it can do to be better.

Movement tech and restrictions

To understand the challenge of fast (apart from “accept that you’re making a machine with a ton of parts”), we need to understand movement limits in Opus Magnum.

The game provides several different types of movements. You can rotate an atom or molecule about the arm’s base, or about the arm’s grabber. You can shift on track, which moves both the base of the arm and the contents of its grabber. Or you can extend or retract a piston, which achieves a similar movement to the track move but without the arm base moving too. Each arm has a maximum length of 3 tiles, creating a speed limit for single atoms of 3 tiles per cycle. However, there is no maximum speed for molecules – a large enough molecule can swing an immense distance in a cycle (example, the swinging metal chain in giggs’ solution).

There are collisions, often infuriating ones, whenever two pieces crash into each other. Only atoms and arm bases have collision, including with each other; the gripper itself is free to move unhindered. Collisions stop the simulation.

There are also errors whenever two arms try to move an atom or molecule in different ways at the same time.

This does mean that whenever an atom has to move from the gripper of one arm, to the gripper of another, it needs to spend one cycle at rest. These “handoffs” are one major way that solutions sacrifice cycles.

Another is travel time – if a solution is spread out too much, your atoms spend cycles just moving. Those cycles could be saved in theory with a better layout. But of course, with the movement limits, it must be the case that handoffs and movement through space are inevitable.

Latency analysis

Looking at giggs’ solution, it is at optimal throughput. Each input is being grabbed every 2 cycles, as fast as the game permits. The cycles that can thus be saved, come from reducing the latency – a word which means “number of cycles that it takes from when an input is grabbed, until its atoms become part of the output.”

giggs passes the metal atoms through the middle of the solution, giving them a far shorter route than my 69 cycle solution. It’s nearly mirror images, but the top half spends cycles on two sets of projection glyphs, meeting up with quicksilver that the machine extracted in parallel from the other input.

In all, the first monomer hits the product glyph on cycle 24. Each 4 cycles afterward, another monomer joins the chain, leading to the 6th on cycle 44. It outputs enough tristabilized salt in this time to have long since cleared that requirement, so when the metal chain completes, it gets its cycles score.

Theory

If we pretend there are no movement limits, how quickly could you beat Refined Bronze? How much latency in giggs’ solution is “extra”?

Getting the material

Well, in order to complete the metal chain, you need 12 of each input. Since you grab the first one on cycle 1, and each subsequent one 2 cycles later, you finally grab the last necessary pieces on cycle 23. If you hold the input by one of its tin and swing, you can break a bond on each tin on cycle 24. However, it means you cannot be holding any of the other tin. So once all its bonds break, another arm needs to spend a cycle to grab that tin.

Assuming you break all 3 of the bonds on every tin on cycles 24, 25 and 26, you can regrab on cycle 27 and then bond them to the right end of the polymer on 28. The tin you grabbed initially, would bond on cycles 27 and 28 as it needs more bonds. On cycle 29 you would thus have the chance to output.

Cheesing infinite product detection

But wait! There is a faulty assumption in just that outline. Because infinite outputs are allowed to have extra atoms to the left or right, you can leave some waste attached to your rightmost tin (and leftmost copper). Accounting for this, all 3 final tin atoms get to have one extra bond, saving one cycle breaking down the input. We could theoretically have a 28.

Of course, that’s if the 11th input also permits 28. It would need to become some other atoms in the product, and can’t use the same cheese of keeping its bonds. But, since there are other atoms of tin needed, and the extra debond/bond steps can happen on cycles 25 and 26 before everything bonds together, it’s theoretically possible.

What about quicksilver

And of course, the quicksilver coming off the 11th and 12th quicksilver input needs a home. There’s no requirement that it project specifically the tin from the 11th or 12th tin input. It could project a different tin, set aside earlier, perhaps already bonded to other tin, so as not to force our limiting tin to spend any cycles on a projection glyph. Projection glyph requires quicksilver individually as atoms, and they start with two bonds. This means we pick up the last ones on cycle 26, and project right before the final move to output on 28.

Reality is often disappointing

I might someday use mods which teleport arms holding atoms and disable collision checking, and show all of the steps for 28 happening. But in practice, you would need so many special cases, during a period where the assembly is at its largest, in order to save the final couple of cycles. And, importantly, the shape of the inputs is dreadful for optimizing movement. The atoms of metal that you want to be together, have atoms of salt and fire that you don’t want anywhere nearby, in between them.

If we return to giggs’ 44 with the above understanding, we can see distinct stages in the metal handling. The input tumbles through a disassembly station, and emerges as three bonded tin. In a theoretically optimal solution, that’s the whole thing, the output is there and it’s already connected. But because of size and the (sensible) build order, it then has to do a lot of moving, project to copper, and finally come together many cycles later.

It will get much tighter.

My next solution

I made a commitment during the month of November 2017, to make a wasteless maximum throughput solution to Refined Bronze. I hoped to also beat giggs on cycles, but but I didn’t have a good sense of how difficult the latency itself would be. Despite getting a little distracted, I finally sat down in early December 2017 and committed to it. I played probably 20 hours across 3 days, all on Refined Bronze. My skill was not at the level it is today; I was struggling but I was learning. I was pioneering.

This is what came out:

Unlike giggs who started with separating metal from salt, my approach was to keep things bonded together so they could move further faster. This became my signature style, which the community affectionately refers to as “biggiebricking”.

I tried my best to have everything flow from left to right in unison, with all sorts of reshaping and chaos along the way. But, in the end, it too was a 44. I had only beaten giggs on the tiebreakers, I didn’t move the needle on cycles.

It was nice to have a machine I could study though. Not only does the gif have all the feel-good rewards of a perfectly looping marvel of engineering, but I can understand things from it that I failed to understand during the design process.

I went through and traced the path of single input sets, without all the bustle of the neighboring inputs.

Parts of the route look very inefficient. There are lots of points where it is ‘just moving’. Part of this is necessary in context to avoid crashing at such high throughput. For that reason, the bricks hurt as much as they help.

Back at it again

February 2018, two months after my 44, I decided to commit to a redesign. I wanted lower cycles. I knew there was a lot left on the table, and more optimal movement was the key. But my attitude towards the puzzle was still “oh god not again”.

I was willing to make a poorly-behaved solution this time. One with a lot of waste, building the product in whatever order achieved the best cycles. And I made something much, much faster.

I got Refined Bronze down to 36 cycles on Valentine’s Day 2018.

Building the product “backwards” meant that I didn’t have a way to record a gif at the time. The natural gif created for this solution in-game is a single frame, as the design meets both the gif start and end condition on cycle 36. I uploaded the explanation of the solution to YouTube instead. But now that we have F10, I can see the loop.

Much like giggs in the 44, I opted to put the salt output in the middle of the Reactive Cinnabar processing pipeline. This allows salt to disappear out of the way.

Compared to the previous full throughput solutions, this was a lot smaller. That kept the travel time low, but meant that I had to be far more space-efficient in all the movement. The regions within the solution separated into “Arms-only” and “Atoms-only”, and almost every arm was on a track loop to allow multiple useful actions before it needed to let go.

As before, we can examine a single input set’s route:

Much snappier.

I do cost too

Somehow, three cycles designs in, I still enjoyed playing this puzzle. But for a change of pace, I decided to try 70G. With the skill I had developed in the preceding months, I didn’t actually find it that awful. Only a week after the 36 cycle machine, I finished off the fastest and smallest 70G known at the time. Important to keeping area low, I use all of the salt I could. Even without a calcifier, Tinstone contributes 3 salt, so it takes 4 Tinstone before I have a whole number of tristabilized salt outputs. The remaining fire chain is bonded to the metal chain, and only separates at the very end.

With most of the other active extreme-optimizers choosing other puzzles to focus on, these records went uncontested. Refined Bronze was basically “biggie’s puzzle.” Nobody we knew of was looking to compete.

2019 tournament

RP0, admin of the unofficial Zachtronics discord, launched the first ever Opus Magnum tournament in January 2019. This would pit players against each other on custom puzzles, optimizing for the various metrics. Among the entrants was one player known as PentaPig, who had joined the server in impressive fashion with a well-optimized solution to a Spacechem tournament puzzle a few months prior.

Two important things happened during 2019’s Opus Magnum tournament, pertaining to the story of Refined Bronze.

The first: PentaPig established himself among the new wave of extreme optimizers, with a focus in cost. He is good at this game.

The second: I wagered that I would eat a grape if someone got 23 cycles on the week 3 puzzle, Creative Accounting. I had struggled and only had a 24 at the deadline.

Despite missing the deadline, Alercah came through two days later, making a 23. She eventually even made a 22, the theory minimum for the puzzle. I paid my dues, and sent a video in the channel of the act. I ate my grape (I like grapes). But peer pressure from tubular and S.G.S had me put up a much loftier wager. On the spot, I came up with a ludicrous target for Refined Bronze, worthy of a much more spectacular bet.

If the community records fell to both 60g on the cost side, and 32 on the cycles side, I would eat a whole cow. Based on what I understood of the limits of the puzzle and of the game itself, this bet was safe.

Tomfoolery

For April Fools day 2019, I figured I would let people believe I was trying to make progress towards this target, posting a near-miss on cycle 32.

Eventually I “triumphed” and shared the following video:

It’s certainly making the right outputs, and doing so by cycle 32!

The April Fools joke was that the inputs were wrong. And to tie it together, I gave the puzzle a slightly wrong name. This is not Refined Bronze. It is Refined Bonze.

It’s amazing how much of a difference it made to reorder the atoms within the inputs. The right things are bonded together from the beginning, and separate cleanly from the waste. Compared to tens of hours for each quality design on the real puzzle, this took around 2 hours and was a fun way to get a few laughs.

Refined Bonze inspired several other mangled names. In Thorium mod, my wife always tries to reforge into “Refined Bongos”. I laugh a little every time I see the words “Refried Beans”. This puzzle has changed me. This bet has changed me. And the 5 years since 2019, have changed me too.

So what has actually been done towards this bet?

PentaPig takes down 60G

In July 2019, less than 6 months after I made the bet, PentaPig came through.

Let’s talk about 60G Refined Bronze.

A layout

Going from 70G to 60G means giving up the two hexes of track. This was something Xavion, me, and anyone else who tried, had cast aside as unreasonable. But gone was the luxury of reason. Either it is provably impossible, or it needs to be considered possible.

In Refined Bronze, you must be able to put a grabber on each of the inputs. You must be able to put a grabber on the tristabilized salt output. In order to accomplish projection, you must be able to put a grabber on one side of the debonder and on the quicksilver deposit side of projection. This totals 5 necessary access points. Add in one side of the bonder so that you can freely manipulate single atoms of metal, and you have used up all 6 possible angles for your arm.

Everything else is out of reach. You cannot reach the far side of any of your glyphs. You cannot reach the metal chain product glyph, but that is never necessary. Due to the infinite validation rules, as long as you have a chain of the correct height, only a correct section actually needs to be on top of the product. This can be far from your arm.

And of course, with no calcifier you still have to deal with waste.

A triumph

Xavion’s prediction was correct. PentaPig’s solution clocked in at 9259 cycles, slower than the original 70G and roughly 2.5 times the cycle count of my improved 70G. Everything is much more arduous with no access to the far sides of glyphs.

PentaPig also made the decision to bond all the waste in-line with the output, meaning that it grew on both ends. Every time he needed to modify the other end, it was a slow process of “stickwalking”, requiring specially scripted commands for every length. Not only was it 9259 cycles, it was 9259 instructions.

His 20-minute video playthrough of the solution is worth a scan. It’s absolutely one of the most impressive feats in Opus Magnum history. Even in the modern scene, few would feel prepared to take on this design. For PentaPig to pioneer the techniques and lead the way as the first to break down all the barriers, is nothing short of legendary.

Mikura apparently had the cycles record for years

On April 20, 2018, a Japanese player whose YouTube channel is called Games Mikura, uploaded a video. None of us in the discord community saw this video. Over two years later, on May 7, 2020, Shadowcluster ran into Mikura’s channel “randomly when procrastinating”.

Mikura is seriously skilled at cycle optimization. Among the videos on his channel, the community found several new-to-us cycles records. The particular video that shocked me, was where Mikura beat Refined Bronze in 35 cycles.

I had thought my 36 was the record, and wrote it into our community leaderboards where it had stood since February 2018. Two months later, it was beaten in relative privacy, by someone we didn’t know existed.

How it worked

I recreated his solution with a few minor optimizations, to familiarize myself with his approach.

Certain features resemble those of earlier records. Others are new, including the role of the tristablized salt output. The Tinstone that becomes tin, benefits a lot from being able to get that salt out of the way. Everything else somehow has room, and the reason is due to a key detail of the handling.

The Tinstone that becomes copper has a comparatively long travel distance, but it is carried at the end by a unique triangle track loop. In the center, an arm manages to perform 3 consecutive large rotations without violating the conditions of a period-4 track loop. This means the preceding and following actions are track movement (not grabs or drops), just so that the arm base isn’t blocking the next arm in line. I don’t have the exact solution file anymore that produced the gif above, but here’s that same loop on a derived solution to show what I mean:

By doing this, Mikura is able to set up a requirement for quicksilver to be in two well-separated positions, with some leniency on the timing to get there. That lovely swing through the arc and onto the multibonder provides a very achievable breakdown of the remaining problems.

Everything around it could perhaps be improved using the knowledge the community held. But the core idea, this magic swing, helped shape the overall layout and guide us to our next improvement.

May 10, 2020

It’s 3 days after we on discord watched Mikura’s video. I’ve figured out “most” of a 34 based heavily on Mikura’s layout. Grimmy, a fellow cycles enthusiast with a very creative approach to squeezing every last drop of performance out of a design, helps me out.

Grimmy put the excess salt within the solution to good use. In my incomplete 34, there is a cycle when every piece of the metal chain comes together, but no arms are holding it from the right direction to then move it. A reasonable person would take this opportunity to grab the chain with a new arm, losing a cycle to a handoff. But what Grimmy did, saves that cycle.

Wanding

Wanding falls under the umbrella of advanced movement tech in Opus Magnum. Instead of grabbing and dropping atoms or molecules to move them, you create a new bond to something you already are holding, and break it after movement. It is useful specifically when the moved object has multiple atoms, so it can spare one to form the bond.

Bonding happens in between movement phases, in contrast to grabs and drops which occupy the movement phase. Because of this, wanding serves as a 0-cycle handoff. While I made this surrender flare “gun” gif as sort of a shitpost, it does serve as a great demonstration of wanding:

The movement of flares down the barrel on the right happens without any grabs or drops. Every time the product moves, it breaks the bond connecting it to the wand on its left, and forms a bond connecting it to a wand on its right. It is not possible to achieve this movement pattern at this speed, without wands.

Constant motion for the sake of aesthetics is one thing, but making it actually save cycles is another. With Refined Bronze 34, our goal was to move our growing metal chain quickly, away from the bonders where it came together, in a direction no arms currently holding it could serve.

The 34 is real

I talk about the actual first 34 ever built, in this reddit post. However, for the sake of clarity I’ll use a cleaner version of it in this blog post, created later by iterating on the first design, to describe how wands help. See cycle 12 below.

At this point in the solution, arm 15 (holding copper) just finished its third rotate command in a row, and needs to do a track slide. The tin has simultaneously swung in from below. Fortunately, that track slide achieves bonds we need to make anyway between copper and tin. But on cycle 13 we would be stranded. Arm 15 cannot move the chain usefully in any direction.

Arm 40 comes to the rescue. Here’s cycle 13:

We’ve now bonded the chain directly to a salt, giving arm 40 the ability to rotate the product counterclockwise, down and out of the movement path of other atoms.

But you will notice, the resting point is not the product glyph. The resting point is on a debonder, so you could not ever place the product glyph here. How would cycle 34 have a valid product, if cycle 14 does not have the first monomer? This is where arm 41 comes to the rescue. After making 5 monomers in this way, arm 41 uses the entire rest of the chain as a wand.

The final wand

Here’s cycle 31:

On cycle 32, arm 41 swings it up to the bonders to meet the copper and tin triplets where they were on cycle 12.

Now with control over the entire chain, arm 41 moves on its track:

This position does let it swing the product directly to output. Salt wands were necessary to get this far, but the final wand is the chain itself.

Let’s look at the full thing. This is very much an F10-enabled gif, since the machine can’t proceed any further.

This was an absolute triumph of collaboration and community advancement – we had narrowed the gap from 4 cycles at the time I made the bet, down to 2. But each cycle would be harder than the next. We were already taking Refined Bronze into the realm of non-looping solutions with wand movement. How much worse would it get?

A Lull

Early 2021, the buzz around Mikura’s cycles machines had died down, and the cycle optimizers (largely Grimmy, who methodically went in and cleaned up a lot that I had left unfinished) had reached their limits on every cycles record they could dream of. At this point, Grimmy came up with a list of remaining cycles. There were 4 tiers, the lowest 3 of which were named in an ordinary fashion.

And then a special top tier:

Only 3 puzzles were declared hard enough to have their final cycles saves in Cow-eating territory. For Refined Bronze, the “final cycles saves” were all of the cycles after 33.

In hindsight, Refined Bronze is brutally difficult, but many of the issues come from making different parts of the machine agree with each other. This is something where there is an enormous possibility space. In contrast, something like Alcohol Separation 16 incurs a fundamental layout constraint that makes possibility space shrink to nothing.

Refined Bronze theory limit is 28. But if you build the product without extra salt attached, it grows to 29. If you alternate between building copper triplets and tin triplets rather than finishing with multiple tin, it grows to 30. If two limiting metal of the same tier ever bond together without including a third metal on a multibonder, it grows again to 31.

But by the time you allow yourself 32 cycles? It’s certainly horrid, you have all the same problems of maneuvering useful and useless atoms around each other. But the layout constraints come from size and movement, not strict perfectionism.

I say this now, but obviously in 2021 we took my word for it that Refined Bronze 32 would never happen.

Other cycles saves

Among the cycles listed, exactly one fell between early 2021 and the start of 2024. SpiritualShampoo finished off Alchemical Slag 35 in June 2023. By this time, we had a nicely integrated leaderboard-bot on discord, so the result was shared to much fanfare.

For those who want to see it in motion:

At least among cycles optimizers, the rest of the time since the Mikura-inspired cycles spree was spent having competitions on custom puzzles instead. There was plenty to learn and explore there. PentaPig and I traded tournament wins, cementing ourselves as top players. SpiritualShampoo and kaliuresis, both new as of 2023, certainly joined the conversation for contenders, but at time of writing the only people to ever win a tournament are PentaPig (3x) and me (2x).

These years cemented Grimmy’s list of cycle relative difficulty into the community’s perspective, quite likely compounding people’s fear of Refined Bronze. Despite being involved so heavily in the puzzle, I take some blame for it not dropping lower, earlier. The puzzle was scary, yes, but the idea of the puzzle, spurred on by my rhetoric, was even scarier.

Into 2024

Now we encounter the new Reddit wave.

At the very start of 2024, the highest voted post ever on the Opus Magnum subreddit was a “sigmar balls” meme, at around 300 upvotes. Not far behind it was an overlap glitch solution that was part of the topic of my first ever post on this blog. But this was roughly the level of attention the game was getting when the new year rolled over.

Suddenly, a new post received over 1000 upvotes. PentaPig was the first to point this out to the discord group.

Okay, suddenly my favorite game of all time was getting a bunch of new attention. This definitely played a part in me taking my attention off of the insular tournament environment I had grown used to. I got distracted in the best way possible. All the new players were looking at the game in the way it was released, unaware of community tools and resources. Just sharing gifs like all the way back in November 2017. But the extreme optimization community was far better than those days. It was the perfect storm. I wanted another go at Refined Bronze.

Unsurprisingly, I had gotten better at the game since 2020 when we made the 34. Part of it was due to my own efforts, but part of it was a change in perspective, something I credit to Specht98 and fiesta0618 who were able to outclass my own cycles effort in every way on my own custom puzzle. My targets got more ambitious, and my convictions about what was possible followed suit.

32 was on my mind, but at the beginning I was just tinkering. Refamiliarizing myself with an old friend..

How I think

If you’ve made it this far, thank you. This post became a dissertation on Refined Bronze. It’s likely too much for some, but since this is my space I want to say all that’s on my mind. I wouldn’t have it any other way. We will now get into the meat of the new records. More than just an overview, what follows will describe how I reached each decision along the way.

Obviously the first thing I do when I open a puzzle is place the outputs. They go somewhere random, I certainly am happy to move them later, but the game engine demands you place them before you can simulate anything. But then, the remaining blank canvas stares at me, and I need to make a first step.

I dropped down the Tinstone input, and made a period-4 track loop to grab it. Because the first way I think about this puzzle is in terms of period-4 track loops.

Period 4 track loops

The natural breakdown of Refined Bronze (from my cheesy arithmetic diagram before), leads to 4 pipelines, represented by arrows below. I’m glad the game makes gifs for me because I am terrible at making my own graphics.

Since each input is 7 entire atoms, there needs to be some distance between the pipelines themselves. Therefore, for each input, odd numbered inputs will go along one pipeline, and even numbered inputs will go along the other.

Grabbing input every 2 cycles (full throughput) in this alternating way, means that each pipeline is repeating its action every 4 cycles. This is what we call “period 4”, or sometimes I will use “pseudoperiod 4” to make clear that it is not actually 4 instructions per arm but rather some multiple. What’s important is that taken as a system of arms, it recreates itself after 4 cycles.

This difference between true period 4 and pseudoperiod 4, accounts for track loops. When arms share a track loop, each arm need only take the place of its neighbor 4 cycles later, rather than reset to its own initial starting point. This frees you from a rigid schedule of grabbing and dropping 2 cycles apart. This is the most fundamental way to avoid handoffs in Opus Magnum.

In a track loop, you run the risk of arm bases colliding with each other. The way to avoid this is to ensure that whatever your pseudoperiod, no arm ever has that many instructions in a row without advancing. This is why the three consecutive rotations in Mikura’s solution was unique, it was as many as could be done.

Testing the waters

You might recognize this video, I used it above as an example of infuriating collisions. This is the first thing I built for Refined Bronze in 2024. Each track loop obeys the period 4 restriction described previously. My goal was to break as many bonds as possible, then connect tin to other tin, regardless of extra salt. This effort led to getting boxed in, there wasn’t enough space and the angle of the piece was all wrong anyway.

Undeterred, I tried a different movement path.

As before, the tin all bonded on cycle 5, still each connected to fire or salt. But I liked this one a little better. The way that the salt and fire was positioned around the tin was just a little bit friendlier to possible next movements.

At the time, I was expecting to mirror this vertically about the Tinstone, so there would be a clone of this machine below. Arm 5 would be responsible for moving the pieces in the desired direction. But I changed my mind. Asymmetry was inherent; one pipeline needed copper while the other needed tin. So I decided that this was the copper pipeline, and I tried pathing it upwards instead.

This felt quite promising indeed. It had a large swing between the two quicksilver stations, like Mikura’s design. I simply assumed that I would be able to put quicksilver atoms into position on the cycle they were needed, an assumption I would need to reckon with later. I’d deal with the salt on the right when I knew what the Reactive Cinnabar pipeline actually looked like. On the final drop, I assumed other parts of the chain would be ready to bond, and I could handoff with 0 cycles downtime. Under those assumptions, this was a good start.

Assume less

By designing one thing, I had reduced the problem. What was once a blank slate with just “Refined Bronze” as a goal, now became a task to satisfy all of my previous assumptions. For one, let’s get some Reactive Cinnabar on the board and see if we can even reach those lower projection glyphs without colliding. The ideal position for Reactive Cinnabar would be roughly equidistant from both of the projection stations, with some distance to allow debonding.

Fortunately, that was possible. Grabbing the Reactive Cinnabar on the same cycle as the Tinstone (this is important), I could just barely get the quicksilver to projection in time. The critical components were two length-3 tri-arms that each carried an atom of quicksilver a large distance in 2 cycles.

I also found a solution for the salt that broke off from the tinstone next to the projectors. It relied on connecting a bunch of waste salt together and doing a large swing to clear the space in time.

Unfortunately, this pipeline had one big problem – one of the salts from the Reactive Cinnabar could only escape in the direction of the other (not yet built) pipeline. It would clog everything up, and really restrict how much space I could use. This is what collides in the clip above.

Still, what I had built so far was definitely the bones of a fast solution. I finally tried to imagine the rest of the machine, and get a sense of just how fast I was looking.

Pie in the sky

Given that this is cycle 8, what is possible. If I were to make a perfect Reactive Cinnabar pipeline to fill these projectors, then on cycle 9 I could be looking at copper on top of the glyphs to the left. Ok, pie in the sky mode, this is copper now:

If I were to make a perfect Tinstone pipeline to set a tin trio alongside this “copper”, I would also be able to use the other part of the multibonder to connect that tin trio to the rest of the chain. I would have things all connected by cycle 9, and 5 loops at pseudoperiod 4 later, the same would be true on cycle 29.

Connected does not imply complete though. There needs to be another set of bonds between everything. Fortunately, this can all be done by a different set of bonders. To visualize these sorts of pie in the sky circumstances without actually building perfect pipelines, I opened a custom puzzle.

Refried Beans

I made a custom puzzle called “Refried Beans” in which I could experiment with circumstances I had not yet put in the work to make reality. In Refried Beans, I bonded copper on cycle 29 to an otherwise perfect chain.

This helped me confirm that the remaining steps of detaching fire+salt from coper and completing all the remaining bonds, could be done in parallel on cycle 30. In theory, what I built could lead to a completed product that registers over the output glyph on cycle 31.

31 is really fast. It also quickly became apparent when I started trying to make this tin pipeline, that I was asking for something impossible.

I could not find a solution for getting the second Reactive Cinnabar disassembled quickly enough to project iron to copper, though I came quite close. I could not find anything remotely resembling a solution to getting 3 atoms of tin into position on the multibonder on cycle 8. Perfect movement couldn’t do it. On cycle 9 I could build the right thing in the wrong place, but on cycle 8 I was still bonding things together. So, this 31 was not going to happen. I had an idea though.

Out of order

The mathematically minded among you may have noticed: 31 is a whole three cycles faster than the record of 34. Three is, like, a lot. It’s more than two.

I grab the first Tinstone and Reactive Cinnabar on cycle 1, so the not-yet-built pipelines don’t get to start until cycle 3. Everything I was asking for was much easier, if I switch the order. It’s a net difference of 4 entire cycles when meeting the pipelines with each other, but the overall slowdown is only 2 cycles.

By making a solution that would be 31 if I satisfied ridiculous assumptions, I had also made a solution that would be 33 if I satisfied entirely reasonable ones. This felt a little icky, eating two cycles up front to make the record less daunting instead of experimenting with what just a single cycle of additional movement could give me. But it made a lot of sense at the time. 33 was, after all, a never-before-seen cycles score on Refined Bronze.

Any negative feelings disappeared once I realized just how much freedom I had bought for the remainder of the design. The extra 4 cycles I could spend pathing the other Tinstone pipeline, eliminated all issues of convergence. I redesigned the existing Reactive Cinnabar pipeline slightly so that all of its salts went to the exterior, now that I knew I could afford a less-idea input position for the other pipeline.

In the middle of the tournament

This was all happening during the ongoing tournament. I had finished my solutions for Blue Vitriol already, and the next puzzle Local Anaesthetic wouldn’t reveal for another few hours. I had much of the 33 built, and had not told anyone. Finally, I decided to hint to the discord that I was cooking.

And, well, it didn’t take long from that point before I found something that worked.

If you tilt your head 60 degrees to the right, you see exactly what I was working with previously. Unfortunately, the requirement for infinites to be pointed to the right, means these extreme solutions may need to all be rotated by some amount after you’ve already become familiar with the machinery in a particular orientation.

The lower Tinstone pipeline is unchanged, and the lower Reactive Cinnabar pipeline is very similar. Final steps are the same as in the Refried Beans 31 clip. The new pipelines are a further exercise in period 4 machinery, but I don’t consider them to be as worthy of deep study as they were a solution to a much easier problem. Plenty of pieces travel through empty space using the luxury of latency.

Notable though, is the way waste is handled in the top left. The waste that I break off of the metal chain as it hits the final debonder, bonds to waste already being processed by that pipeline and becomes a nice pinwheel as it progresses.

You’ll also notice that the final output is way way up top, in a really awkward place. Let’s talk about that.

Delivery wand

When Grimmy saved my adaptation of Mikura’s solution to get the first ever 34, they used the rest of the chain as the final “delivery wand.” That’s not strictly necessary. Things can remain bonded to an infinite product, so long as they are within the height of the chain itself.

I realized while finishing the design off, that it wasn’t validating. Looking closer at what I had built, there were extra bonds, coming from the multibonder. You can see these in the Refried Beans clip earlier.

I was completely oblivious to these. Amidst all of the chaos, I had overlooked it. You could place a debonder to fix this, but it blocked where I was expecting to put the output glyph.

No matter, this is the perfect occasion for a delivery wand. Using some of the extra salt, I snuck over and bonded to the far end of the metal chain. From this rotation point, I could easily make it somewhere new, where the product glyph would not clash with other components.

The waste was janky, the product delivery was janky, the input ordering was janky, I had thrown away all semblance of cleanliness.. but I had built a 33. The game said “Your machine has successfully created the desired products,” and the cycles score was a new record.

Having spent roughly 18 hours with this across 2 days, certainly it was time to stop.

Just kidding

I didn’t stop.

Ever since I improved from 44 to 36 on this puzzle, I had lamented how there was just no way to make it wasteless anymore. My 36 needed to drop tristabilized salt in the middle of the Cinnabar pipeline. Mikura’s 35 and the subsequent 34 needed the output in the middle of a Tinstone pipeline. Neither of these could handle receiving other outputs, leading to waste chains.

This 33 was different – every pipeline was moving its waste out. The tristabilized salt output was on the exterior of all the machinery. Ignoring for a moment the delivery wand, I could make a new fastest looping wasteless solution to Refined Bronze. So that was my motivation to keep plugging on.

And because I kept plugging on, I found some improvements along the way!

The Quest for a Looping 33

The following morning, I realized a change that eliminated the need for the delivery wand.

I had assumed from the beginning, that the most useful first bonds to make were these:

There was no reason though, that it couldn’t be these instead:

When accounting for the other triple and the rest of the chain all coming together, all bonds in both pictures are necessary. I prioritized the former because it is doing more to the piece I had actually built machinery for. Realizing this, and switching the order of operations, there was no longer a wrong bond later down the chain! As I put it in discord:

This was the first looping 33, but it shows some artifacts of a different goal. A leftover equilibrium glyph at the bottom. Complete tristabilized salt outputs in the waste chain, with no clear benefit. I was cooking.

The whole reason for any of this, came together roughly 4 hours later.

For the first time in 11 cycles, we could refine bronze at the fastest known speed, without waste.

I posted the original 33 and the wasteless/looping 33 to the subreddit, very proud of myself. Particularly with the wasteless/looping 33 I felt like I had redeemed the puzzle a bit. Many of the comments I see on my YouTube uploads and elsewhere about this puzzle are specifically annoyed about the waste. Of course, others are just overwhelmed by the complexity. I can’t do much about that. While solving it, I’m only focusing on one section, even one movement at a time. But when I finally have the thousand-foot view that comes with a completed solution, I crave the sheer scale of the final gif. It collects all of the components I spent my effort placing and programming, and shows them to me in coordination.

A less busy view

With the ability to loop, comes the ability to slow things down. Grabbing two inputs every 24 cycles instead of every 4, we can appreciate more directly what “out of order” really means here.

The first input set goes up and takes more time to get where it’s going. The second set goes down, follows a longer route, and cannot improve without starting from scratch.

Putting these pipelines in the other order, and making the shorter ones fast enough to keep up, was the way lower.

Break week

I already have a full-time job as a software engineer. Way too much of my previous week went to Refined Bronze instead. I expected to be committing a lot of time to Opus Magnum, but in the context of the tournament. I did not plan to be record hunting. It was as though I was distracting myself from my distractions. Maybe worth questioning. Among all of the positive reception, I did get at least one person asking me why I was even doing this instead of tournament puzzles.

The following week, I got my life together a bit. There was still time for some Opus Magnum, but I spent that time on the tourney puzzle Local Anaesthetic, leaving Refined Bronze behind. I did make a remark though, that “Refined Bronze 32 is the break week puzzle”.

It’s up to your interpretation how to read this section header. Perhaps I am referring to the tournament format, which already committed to having no puzzle from February 2rd through 7th. Or perhaps I am referring to how I only took one week break from Refined Bronze.

Either way, I returned to finish the job. Let’s get 32.

Throw away half the machine

I was back to pie-in-the-sky mode. Recall that I had found a path for copper, and built one of the two Reactive Cinnabar pipelines around it (with the two large tri-arms). This part could stay. But it was time to take another crack at the second Reactive Cinnabar pipeline. I had gotten close earlier. Whether or not I could succeed, spelled different possible next steps.

Through continued tinkering with the pipeline in the 33, I had cleared out most of the space between input and the left projectors. Only one diamond-shaped track remained, and some swing space for quicksilver. Importantly, all of the salt made it to the exterior without needing arms in this region to touch it.

It was in this position that I was supposed to fit a new pipeline, with 4 less latency than the one in my 33.

Magic

I spent a few hours exploring the possibility space here. Everything was still pseudoperiod 4, as a hard rule. However, I reached deeper into my bag of tricks. Specifically, I started looking into track loops with more than one grab instruction per loop.

These are finnicky beasts. Usually an instruction tape for a track loop arm begins with a grab, then follows a super precise set of actions until it gets to the drop. Then for the remainder of the tape, it just does whatever it needs to get back to where it started, completing the loop. Because the grabber end of the arm never collides with anything, there’s a lot of freedom in this part, helping enable some critical dodges. But in between grab and drop, the arm is moving some atom or molecule along a particular path, and that forces the position of the arm itself.

Merging two different “grab-actions-drop” intervals onto the same track loop usually just results in a mess. However, in really constrained spaces, when the desired motions allow it, these types of loops can save the day.

Adding in the pipeline I found, to the clip just shown, everything becomes much busier:

In green, I circled the original diamond track, now nearly lost amidst the pile of arms. Everything else needed to build around it. In red is the new section that is a magic track loop. It has 4 arms, so each arm takes 16 cycles to complete a circuit. During those 16 cycles, the arm first delivers a quicksilver to the projector circled in blue. Then it has one chance to dodge before doing another grab, this time to deliver a quicksilver from the next input over to the projector circled in purple. It does another dodge immediately afterward, then makes its way back around the left side to the beginning again.

In action

There are so many dodges and near misses in this, but it runs.

Unfortunately, it has to stash one salt in an awkward spot towards the middle. The other three make it out to the left though. I wasn’t going to worry about the last one just yet, because whether I could handle it or not would depend on what I did with the final tin pipeline. For now, I considered this a triumph. I had actually gotten it to work – both Reactive Cinnabar inputs could now successfully turn tin to copper from the odd Tinstone inputs!

What’s more, in a stroke of fortune, look at what happens on cycle 9 now.

That’s not just a near miss. That’s a perfect wand opportunity. These salt are in position on cycle 8, and an arm could feasibly use the salt as a wand to transport copper much further to the left with only one cycle spent on movement. I could also use that opportunity to ditch the fire and salt that are stuck to the copper, since the wand would be bonding to a different atom. All 3 copper could do something on cycle 9, making the 32 cycle target that tiny bit more reasonable to consider.

Where are we going next?

The copper is in empty space, connected to a wand that I can grab from any of many different angles. The possibility space is huge again. Remembering that the last time I worked with the remaining tinstone pipeline, I concluded “on cycle 9 I could build the right thing in the wrong place”.. now I just needed to find one wrong place where the copper could arrive on 10.

I plopped down a few candidate period 4 track loops, prioritizing ones that grabbed from tin, moved the right number of times, and dropped on a tile adjacent to one of the many places I could move copper. Eventually, one of them worked! At least as far as all of the tin was concerned.

Pressing 1 when the simulation isn’t running, shows you where atoms ended during the most recent simulation. Even though the copper crashed into a salt atom, it was going to the right place. The tin was ready. In principle, an arm could grab tin on cycle 10 while the copper swung in, and the result would be well on the way to Refined Bronze 32. The cow eating holy grail. But as I said in discord:

February 5, 2024

I slept on it. And the next morning, I had some ideas.

When I put these ideas into the solution, I had reduced the problem from “4 salts need to disappear per 4 cycles” to “2 salts need to disappear per 4 cycles”, a step in the right direction. I built a Refried Beans variant to capture this:

The big ideas were first, to grab the tin triple from the far side, swinging it even further away from the inputs and clearing space in the middle. This required a dodge through a track loop but was definitely manageable and beneficial. And second, to use the same salt that moved copper as a wand, to then move 2 of the problematic salts out of the machine, also as a wand. The wand action to keep everything in motion, kept showing up.

This design decision also led to the gif taking an entirely different orientation to how it was during the original design stage, and during its life as a 33. The pesky infinite product restriction, making me relearn my own design from every angle!

Help from Rolamni

At this point, the target was so close. You could absolutely mistake the gif above as the real deal. Folks on the discord who saw the gif felt like they could actually take on the remaining tasks.

I encourage collaboration at all times when it comes to public (non-tournament) puzzles like this one. It’s the reason that I felt completely comfortable handing off the 34 to Grimmy, and the reason I set up our community leaderboards without attribution. These achievements belong to the community, not to individuals. One player in particular often gives me some flak for this but I stand by it! We were all so close to Refined Bronze 32 being a solved problem! All we needed to do was get rid of these two output glyphs that don’t belong to the puzzle:

Rolamni, another top player, weighed in with a suggestion for the left one.

This definitely was a start. Taking a ride on the next available waste piece got this salt most of the way out of the machine, but it eventually collided in a new way.

It was truly wild to be working on such a project. By this point the screen was full of the most complex period 4 contraption I’d ever been a part of. I didn’t want to tear anything apart to be able to make progress. So when I saw this collision, my first thought was “it’s ok, there’s a spot to hand off that ‘A’ shape using another wand”.

In other words: the salt pair that served as a wand for copper, then as a wand for 2 other atoms of waste, itself needed to be wanded to escape.

Wacky waste wanding

It looks complicated, and by all counts is complicated, but at the depth I was in, a wand seemed “obvious”. That meant that after Rolamni’s suggestion this salt became a solved problem. Arm 55 does alternating pivots and rotates on every cycle to dodge all the crashes while whisking away that problematic “A” shape that arms 36-38 cannot rotate.

Just one salt every 4th cycle was left: the one that blocked the copper swing on cycles 10, 14, 18, and so on. Fortunately you could grab it as early as cycle 8, 12, etc, so there was plenty of time to handle it. Just not a lot of space.

Annoyingly, there were not many places you could even place an arm with access to the tile to grab it. Rolamni and I independently found the same way to handle every other salt, slotting it into the “A” shape from before using an arm that needed minimum 6 instructions before it could act again. It broke pseudoperiod 4, which at any other point in the process would have been a hard sell. But in this occasion, it cut the total number of salt we had to deal with in half, making it just barely possible.

The new arm got rid of salts 1, 3 and 5. We would need to stash salts 2, 4, and 6 inside the machinery. There isn’t much free space in the screenshot above, but any we could find, we had to try.

IT IS DONE

The two pistons on track right beneath the Tinstone input in the gif above, show how we stashed the salt.

It was a long time coming. And yet, it all happened so fast. 11 days between the first ever Refined Bronze 33, and the first ever Refined Bronze 32.

Much of that is due to that extremely strong original copper pipeline, meaning that for 33 I had knowingly sacrificed 2 cycles to make an impossible problem easy, when I might have been able to get away with only 1.

I mean this in the cheesiest way possible: this machine is my Magnum Opus. On a whim over 5 years ago, I made a bet that forever attached me to the idea of Refined Bronze 32. To be sitting here today, looking at a gif of Refined Bronze 32 and knowing that my dedication (and frankly, addiction) to optimizing in this game, helped make it possible, is surreal.

Now what? Well, after making 33, I wanted to do every variation on it under the sun. After making 32, all I wanted to do was write. I wanted to get this story out, as this seemed to mark its natural stopping point. But of course, you can keep optimizing..

Current records

With the effort of folks such as Grimmy, CommunistMountain, madmaster5000, and jinyou, we’ve made some more progress on secondary optimization. Here’s the current cheapest 32:

And here’s the most space efficient (as measured when the victory screen comes up):

There were a few breakthroughs to reach this point. Notably the giant meta-wand at the bottom is no longer needed. In the top right, the track loop dodging the fire atom is much simpler. In the center, there are a lot more salt atoms being stashed away because a different track shape opened up room to do so. For the lower area variation, Grimmy wisely chose to use the rest of the product to wand the final monomer anyway, not because of any glyph conflicts like in the 34 but simply because that rotation point saves area.

However, even if it wouldn’t win on cost or area, I wanted to see a looping 32.

Looping 32

I was rereading this post before publishing, making sure I hadn’t misspoken or missed anything crucial, and that I liked my wording. When it came time to pick the featured image, I didn’t have a clear favorite. I wanted a looping gif, and none of the 32s were looping. But putting a 33 as the feature image would be kind of silly.

So, out of sheer determination, I went back to the game and spent an hour trying to get looping 32.

I did it. Look at that amazing mess of track in the center, full of arms dodging salt.

Definitely the breakthroughs from Grimmy had already gotten most of the way there. It’s now a reality.

Someday I’ll manage the gross feed rates of all of these waste chains, and make a wasteless looping 32. But not today.

Slow view

With a looping solution in hand, I can once again show the single-input-set version:

Of all the similar gifs shown in this post, this one has the lowest latency. The snappiest movement to get from source to destination. Copper leads the charge, and tin is ready when it gets there. The fact that this pipeline not only exists, but doesn’t crash when pumped at the fastest possible speed, is a true feat of (recreational) engineering.

So, about that cow

Alright, I’m clearly in a bit of a dilemma here. I can’t distract people forever with machinery gifs. I did put some stakes (steaks) on this. While it is not possible for one person to safely consume an entire cow, inedible parts and all, it could be realistic to eat a cow’s weight in cow byproducts. I could seek out unique preparations of beef, including the less-commonly-eaten parts.

Maybe I could invite members of the Opus Magnum community to a huge community barbecue. That might be challenging due to the international nature of the community – many of the notable players are on an entirely different continent from me.

Maybe I could argue that my statement was not only not binding, but incoherent. I never bothered to edit the grammatical mistake, so the pinned message was actually

Hmm. If 60g and 32 cycles are both achieved for refined bronze and I’ll eat a whole cow

“A and B and C” evaluates to false if C is false, so this could be the same thing as “if false”. I worried that if I ever edited the message then the little “(edited)” text would forever cast doubt on what I may have actually said, so instead we live in a world where the bet may be literally interpreted as nonsense.

Perhaps I could take something I actually could eat, like a grape or a large quantity of chocolate, and give it the appearance of a cow.

I intend to make some honest attempt to abide by the bet, rather than just take it all back. But while I have a good understanding of the universe of atoms and machines that is Opus Magnum, I don’t pretend to be an expert in the much more complex system that is life. In many ways, I’m a completely different person than 5 years ago. I need to stay safe out there.

Thank you all

This has got to be my longest post ever, and I hope it was worth the read. If you want to learn more about the optimization community built around the game, definitely join the discord. If you found the game through Reddit in 2024, I hope you stick around, it’s worth every dollar and every minute you spend with it. No matter what you do, I hope it goes well for you.

I’ll be enjoying the rest of the 2024 tournament, as well as spending time with my other interests including my wife, family, friends, pets, music, and yes, games. My new years resolutions include to take more vacations and to get a specific Rachmaninoff piece back up to performance level. Somewhere along the way I’ll find room to make good on the cow bet.

Until next time.

The post Defeating Refined Bronze (and losing a cow bet) appeared first on a blog by biggiemac42.


Viewing all articles
Browse latest Browse all 13

Latest Images

Trending Articles





Latest Images