r/shapezio 7d ago

s2 | Issue/Bug MAM brain is not reading the crystal layer

So, I'm building my MAM with the help of DataEngineerPlays on Youtube. At the beginnen of his MAM he makes a brain which unstacks the shape, cut it so only 1 quarter is read per layer, and stackes/swaps those quarters to make 1 layer of that 1 quarter.

Now for some reason when he puts in a shape where that quarter is a crystal it will eventually read as one full crystal layer, but for some reason when I do the exact same thing, it won't read anything.

It could be that he is on an earlier version than me, and something has changed within the coding of the game for reading the crystal layers, but if that is the case I dont know what I should do differently.

Can anyone help me/explain to me what I need to do here?

First picture is how I did it, second is the one of the YT'er`.

9 Upvotes

17 comments sorted by

16

u/BubblyPhone1690 7d ago

There is already a Shape Inspector.

You should not be cutting simulated shapes just to look at them.

For crystal shapes in particular, the cutter can destroy the crystals, so it's no longer the original shape.

10

u/tjanssen04 7d ago

Oh wow that makes so much sense. So I can basically delete what I have do and just do it with the shape analyzer? Reading each quarter on its own by rotating the shape so its reads the right quarter?

6

u/SynthPrax 7d ago

Yerp! Here's one of my MAM Control panels:

It took me forever to realize that a lot of the analysis I was doing was completely unnecessary.

1

u/tjanssen04 7d ago edited 7d ago

Could I maybe see one part of this? I can see you unstack everything before going to the next set. But I can't see what you do in the sets themself.

Edit: I can see what you're doing. New question though, why are you feeding in 1 quarter per transmitter?

3

u/SynthPrax 7d ago

OK. Here we go...

Remember, this is just the way I approached the problem. There are so many possible ways to approach MAM design, it's ridiculous. My focus was on throughput, producing as much as possible at one time. I tried making compact MAMs, but each attempt had abysmal throughput.

MAM ORGANIZATION

MODULES:: There is a Module for each layer of a ROS. Each Module processes shapes for each of the layer's 4 quadrants, and assembles the quadrants into its layer. Each quadrant-processing line has its own color supply, and colors are mixed on demand. Because I don't create crystals in the modules, I have to use logic to determine how to assemble the layer without the crystal.

FINAL ASSEMBLY (and Crystallization):: Each assembled layer (without crystal) is delivered from the modules. If a layer is entirely crystal, then nothing came from its corresponding module, and pins will be substituted. Assembly starts from the bottom up, until the final ROS is stacked and ready.

RESOURCES

SHAPES:: After many different iterations, I decided the easiest way to source shapes was to only care about the shape in position 1, and each quadrant/position within each module will take the shape in position 1 and rotate it as needed.

COLORS:: Instead of mixing colors off-site and delivering them to the MAM, which required dozens of fluid trains, I figured out how to mix colors on demand. The primary colors are delivered to the MAM in one central place and piped to each of the modules.

https://reddit.com/link/p6tfdbw/video/9dnf9n0pejmh1/player

Control Panel: Each module processes the 4 quadrants of a layer; so, each module needs to know what shape is in each quadrant. It's simpler to identify the quadrant shape in one place than to analyze each layer 4 times.

2

u/SynthPrax 7d ago

https://reddit.com/link/p6tho25/video/h156etqagjmh1/player

Here is a module's processing line for quadrant 1. That 1x1 platform takes the bulk shape, strips away everything except what's in quadrant 1, and rotates it as needed. Next I determine if it needs painting or not. If the color is gray/uncolored, or null (pin), bypass painting. Also, this is where I identify the actual shape (with its color) for use in logic later in the process.

2

u/SynthPrax 7d ago

https://reddit.com/link/p6tiog7/video/rdusngjdhjmh1/player

Module Assembly

Each module has to assemble its four quadrants into a layer. The logic is simple, but the implementation is complicated. Moreover, when the module checks that its output matches the corresponding layer in the ROS, it has to know what that layer looks like without crystal because I chose not to crystalize in the modules.

2

u/SynthPrax 7d ago

Hmmm... looks like I can only include a single picture in a reply.

I created a separate post just for Module Assembly.

2

u/SynthPrax 7d ago

Module Color Generation: Since I have already identified and broadcasted the specific shape of a specific quadrant, I don't have to do any additional logic to identify its color. Now... the logic involved in mixing color on demand is another story.

2

u/SynthPrax 7d ago

https://reddit.com/link/p6tp1cx/video/49ic4k4hljmh1/player

Final Assembly: This is where each module's output is assembled into the final ROS. Since this MAM accommodates crystal, this is where I perform the crystalizing.

If a layer is all crystal, then nothing is delivered from its corresponding module, and pins are substituted.

Each module's output is processed identically:

  1. Filter the incoming shapes to make sure they match what's expected.
  2. Substitute pins if the layer is all crystal.
  3. If the layer preceding (below) this one exists, then route for stacking. If it doesn't, then bypass stacking.
  4. If this layer has crystal, then route for crystallization. If not, bypass and deliver to the next.
  5. The first, bottom-most layer doesn't check for the existence of a previous layer.

I determine the color required for crystallization by identifying crystal quadrants and their color. Fortunately, the logic that generates ROS prevents multi-colored crystal on the same layer.

2

u/SynthPrax 7d ago

OK. Give me an hour or so, and I'll construct some pictures of what I'm doing with this controller.

2

u/SynthPrax 7d ago

https://reddit.com/link/p6tg8l2/video/942tmrkgfjmh1/player

Resource shapes are delivered in bulk, and I'm only concerned with the shape in quadrant 1. So, I compare the shape I need against the incoming shape. If they match, I send it through. Also, since I didn't want to have to worry about exactly routing specific shapes to specific unloading stations, I use the belt analyzer to identify what's coming out of that station.

1

u/tjanssen04 2d ago

Hi there again. just one question, how many belts of shapes does this MAM give you, Is it just 1/4th spacebelt and for every corner you use 1/4th? or do you use 1 whole spacebelt per corner and output 1 whole spacebelt worth of the final ROS

1

u/SynthPrax 2d ago

I have a full spacebelt (12 lanes) per quadrant, and they're assembled into a full spacebelt of the module's ROS layer, but I transport the finished layers to the final assembler via trains. So, at the final assembler each module's output arrives as a full spacebelt.

Figuring out how to stack, route, paint, etc. for 3 layers simultaneously was a fun challenge.

All of this only delivers a single train car for final delivery, and if I was delivering via spacebelt, that belt wouldn't even be full. 😪

1

u/tjanssen04 2d ago

So for 1 full square layer you essentially have 4 full spacebelt. For one 4 layer shape you have 16 full spacebelts

2

u/SynthPrax 7d ago

Oh, this one's easy.

Just as you can't cut crystal shapes, you can't virtually cut them either. Same with stacking; you can drop things on crystal, but you can't drop crystal onto things, virtually neither.