1. shapez 2
  2. News

shapez 2 News

Devlog 003 - New Stacking Mechanics

Hey everyone!

As promised in the last devlog, I wanted to cover the changes and new mechanics regarding item stacking in Shapez 2!

However, I wanted to also quickly mention that we have a new logo for Shapez 2:

[h2]New Logo[/h2]

https://store.steampowered.com/app/2162800/shapez_2/

Let us know in the comments if you like it!

Devlog - Stacking
Please note: This devlog might contain spoilers regarding shapez 1, if you haven't completed level 20 yet.


[h2]Recap from shapez 1 - The old system[/h2]

In shapez 1, the stacking basically works like this:

If you combine two shapes, let's say, two halves, it will combine them on a single layer:



However, if you try to stack shapes that have overlapping parts, the right shape will stack "on top" of the other shape, effectively getting smaller:



The reason for the upper shape is getting smaller is making sure you can still read both layers.

It can get more complex quickly though - what if the shapes only partially overlap?
In this case, you will produce an overhang:



If you now try to cut this overhang, the right side "falls down" and gets bigger again:



Here for example is how you produce a shape that has a "floating" piece which is not connected to anything else (like in the logo):



Using this mechanic is required to produce the logo (level 20) shape - and it can be very unintuitive.
In fact, it is so unintuitive that we got hundreds of bug reports about "broken stacking mechanics" so far!

[h2]The reason to change[/h2]

When making a survey in the shapez 2 discord about the stacking mechanics, this is what we got out of 927 votes:

A) 31%: I have completed level 20 in shapez 1, and figured the solution on my own
B) 51% I have completed level 20 in shapez 1, but I looked up the solution fully or partially
C) 3% I stopped at level 20
D) 15% I stopped before level 20

Seeing that only 18% stopped at level 20 or before - it shows that this is really represents the core audience of shapez, having played the game at least for 10 hours +.

And yet, out of the 82% who completed level 20, effectively 62% had to look up the solution on the internet!

This showed us that the mechanic definitely needs a change, and this is what we did in Shapez 2.

[h2]Stacking in Shapez 2[/h2]

Our goal for Shapez 2 was, besides of making all buildings open, making the game more accessible. This also includes making all mechanics feel like a challenge, but not like a bug, and thus they have to be intuitive.

I'll simply show the exact same setup from above, but this time in shapez 2. (PS: There are alpha builds available in the discord, if you want to try it yourself!)

Again, if you combine 2 halves, it looks like this:



If you stack 2 shapes that have overlapping parts, it looks like this:



If you stack 2 shapes that only partially overlap, it looks like this:



So far so good - but what happens if you now try to cut the overhang?



As you can see, there is now a little animation showing how the overhang is falling down and resizing to its original size.

This also applies if you try to build a floating shape:



As you can see - the overhang now falls down as well!

This means that floating shapes, which are not connected to any adjacent shape, are not possible in Shapez 2 - are they?

Let me introduce you the new pin mechanic!

[h2]Pin Pushers[/h2]

To allow to produce floating shapes in shapez 2, we wanted a mechanic that makes more sense and also looks "reasonable" with the new 3D environment - having parts just float in the air would look weird and inconsistent.

Thus, we are introducing a new mechanic - the pin pusher.



It introduces a new "shape part" type (Short code: "P-"), that is a little different compared to the other shape parts. It effectively removes a whole quadrant and replaces it with a single pin.

Utilizing the pin, you can create floating shapes again:



This makes whole process a lot more intuitive. And you can produce some pretty .. interesting shapes! Notice how the right shape is actually the "a" from our new logo - a shape you can only produce in Shapez 2!



[h2]The algorithm[/h2]

The shape stacking logic has been created completely from scratch in Shapez 2. It now does an actual, physics based simulation of the shape (which is of course cached, so it's very efficient).

The first step is identifying "groups" within a shape. 2 parts of a shape count connected if:

- They are on the same layer
- They are adjacent quadrants (i.e. top right and bottom left wouldn't connect)
- Both are a "full" shape - that means, not a pin

A group is connected physically, so it means that when it falls down, all parts fall down by the same amount.

After identifying the groups, we run our "physics" simulation which basically applies gravity to all groups, until the shape is not changing anymore.

This might sound rather complex at first, but the behaviour is actually a lot more intuitive if you try out!

PS: Again, there are alpha builds available in the discord, if you want to try it yourself!

PPS: If you are interested in the exact details - you can find the C# Source here! We are always happy to get suggestions on the code, just like in shapez 1.

[h2]Further mechanics[/h2]

The floating shapes mechanic was a beloved mechanic from a lot of veteran shapez 1 players, and we are very well aware that the pin pusher mechanic simplifies the process quite a bit. Especially for those who love (hard) puzzles, there is now a gap.

However, don't worry - this is why we are introducing additional shape mechanics as well, such as crystals!

Be sure to follow the Store Page to get notified about new devlogs covering those mechanics!



PS: Did you notice all GIFs loop seamlessly? This was actually a lot of work! If you like the devlogs, let us know in the comments so we know it's appreciated :)

Have a nice weekend!
Tobias


[h2]Wishlist & Follow Shapez 2[/h2]

https://store.steampowered.com/app/2162800/shapez_2/



Devlog 002 - Cutters

Hey everyone again!

The response to the latest devlog was super positive, so I thought I'd try to give you more regular updates now! This devlog is covering the topic of cutters, rotationally dependent shapes and much more. Enjoy the read!

Why cutters are difficult


[h3]How it started[/h3]

Cutters have often caused confusing in shapez 1 already. Here's a quick reminder how they work:



Basically the right side of the cutter always outputs the right half of the shape, no matter the orientation.
There is actually a good reason to not just cut the shape in half like a wedge on a belt: It would break blueprints.

Imagine having a blueprint with cutters and rotating it - the blueprint would now work differently, being effectively useless.

However, we felt that this is still a suboptimal solution, since there were frequent "bug" reports of the cutter not working, which was due to a misunderstanding how it works.

For shapez 2, we wanted to revisit this mechanic, and here's what we ran into:

[h3]Making the cutter 'open'[/h3]

As mentioned in the previous devlog, one step to make the cutter more obvious was to make it fully animated:



However .. Besides of the animation & mesh being work in progress, I'm not sure this makes it any better at all to be honest. While the process is more visible - it's still very hard to determine how the cutter will cut.

[h3]Camera Rotation / North indicator [/h3]

Another issue is - while the camera rotation in shapez 1 was fixed, you can fully rotate the camera in shapez 2. In order to determine how a cutter will cut, you now also have to factor in the camera rotation. For example, if you revisit the gif from above - are you wondering why the cutter is putting the right side on the left belt?

This is actually because the camera is rotated by 180 degrees - the cutter is actually facing downwards.
To better show in which direction the camera is currently facing, we added a small compass:



As well as a small indicator (WIP!) on the shape:



[h3]Belt Relative Rotation[/h3]

At some point, there was the suggestion for belt relative rotations. What does this mean?
Basically, right now, all shapes always point upwards. This means that the cutter also always has to cut from top to bottom.

If the north of the shape would now be aligned instead towards the direction of the belt, the cutter could always cut in that direction, because even if you rotate the cutter, you'd get the same result.



While this would partially solve the cutter issue - it now introduces a whole bunch of other issues.
For example, as you can see in the gif, it's now extremely hard to predict how the stacker will combine the shapes, because they rotate on every belt corner. Which is, after quite an extensive discussion on the shapez 2 discord, we decided against it.

[h3]Rotation for Research Goals[/h3]

Another issue we ran into: In which direction would you actually have to deliver the shape into the hub?
In shapez 1, the shape had to be rotated in the correct direction in order to be accepted.

However, can you spot the issue on this screenshot?



Because the camera is rotated by 180 degrees, it looks like you would be delivering the shape in the correct rotation, while in fact you are delivering a shape that is flipped.

This lead to a lot of confusion - and even bug reports like "HUB is not accepting shapes".

To avoid this, we simply now allow the shape to be delivered in any rotation into the hub (However - if you are looking for a more hardcore experience, we are considering to add an achievement to deliver all shapes in the correct orientation! And probably also an option in the game creation settings, although probably not on the initial release).

PS: Did I already mention the artists are currently reworking the hub? Follow the shapez 2 store page to receive future updates!



[h3]Operation Previews[/h3]

Another improvement we made to make using cutters (and other buildings) a little easier: Whenever you are about to place a building, it shows you the predicted output:



[h3]Simplifying the onboarding / "Light" Cutter[/h3]

We've been really trying a lot to make the cutter easier to understand, however even with all the improvements, the cutter can be hard to understand.

Because the cutter is the very first processing building you unlock, we felt that it can quickly overwhelm new players.

Thus, we came up with a solution - A "light" cutter which only outputs one half of the shape, and trashes the other side. This avoids the whole directional conflict, has a much simpler animation, and is easier to understand:

(The mesh is a placeholder)


Later in the game, you can then unlock the full cutter as an additional unlock, effectively "flattening" the difficulty curve a bit, while you can still choose to rush it.

And the great thing is, the light cutter still has its use case after unlocking the full cutter: If you only need one half of the shape, it's more efficient (space & throughput) to use the light cutter.

[h3]Follow & Wishlist![/h3]

Be sure to follow Shapez 2 on Steam to receive notifications about future devlogs!

https://store.steampowered.com/app/2162800/shapez_2/


I hope you enjoyed the read, and stay tuned for the next devlog, where we will cover the new stacking mechanic in Shapez 2!

~Tobias


Shapez 2 - Devlog 001

Hey everyone!

I wanted to give you an update on the development of Shapez 2, our current plans and more!

News

[h2]Funding Secured[/h2]

Shapez 2 will be partially funded by the German Government via the "Computerspielförderung des Bundes". This allows us to produce the game with a much higher quality, more content and bigger team. We are super excited and extremely grateful that we can now produce the game with all the features & content we have in mind!

[h2]We are hiring![/h2]

Speaking about a bigger team - we are currently looking for a Senior Unity Developer as well as a Community Manager! If you are based in Germany and want to work in a small, super motivated team as well as having a huge impact on Shapez 2, please apply!

[h2]Alpha Gameplay & Screenshots[/h2]

If you are curious how Shapez 2 will look and feel, you can check out this exclusive alpha gameplay stream from Giantwaffle! We usually don't allow anybody to show the game outside of the discord, but we made an exception to get early feedback. Keep in mind this is a very early version of the game with still months of development to come, but we think it already shows very nicely in which direction we are heading!


We've also updated the Store Page with current Screenshots from the Alpha!

PS: We are currently not looking for more alpha testers, but follow the Shapez 2 Store Page to get updates when we do!

Devlog

[h2]Simulation Updates[/h2]

I wanted to give you a quick idea how the simulation works in Shapez 2, to also explain why the simulation performance will be up to 30 times better than in Shapez 1!

All buildings in Shapez 2 are represented via a concept called "Belt lanes". A belt lane has basically 3 relevant parameters: Current Item, Progress, Next Lane.
The lane then also has a "Belt lane definition" which stores parameters as the duration, speed, world position etc.


These belt lanes know about their next lane, so for the simulation, it is not relevant to which building a lane actually belongs - the simulation itself does not have the concept of buildings.

When you place or remove a building, a graph of those belt lanes is built. In order to make sure the simulation runs at full precision, we have to build the graph and compute which dependencies every building has. This results in a flat list, which is built individually for every island (thats what we call the space station platforms internally).

You can see an example of the update order here - as you can see, the buildings at the end of the chain are updated first, and the extractors are updated last. This is extremely important, since otherwise you would constantly have gaps between items on the belt (And it also means loops are less efficient - so don't build loops! :))


[h2]Belt Simulation[/h2]

To better visualize and debug the simulation graph, we have created a small tool for which we ported the main parts of the C# Simulation (since Shapez 2 is written in Unity) to TypeScript.

You can give it a try here, and also have a look at the simulation code here!

Basically the simulation works like this:
From the last lane (on the right) to the first lane (on the left), the simulation first computes how far the item can maximally progress (reading the MaxStep from the next lane). Then, it computes how much the item can actually progress based on the time elapsed, and moves it as much forward as possible. As a last step, it updates it's its own MaxStep property. You can visualize the property by checking the "Show max step" checkbox.

The computation of how far an item can progress can get rather complex, because there are two dimensions to take into account: Time and Distance.
An item can not progress faster than the maximum speed of the lane, which is the main limit of the throughput. However, items must also not overlap when being rendered, which is why between two items, we have to ensure there is always a distance of 0.5 units.

This sounds simple at first, but can get pretty complicated. For example, if you have two lanes which have a length of 0.5 world space units and a speed of 1 unit/second, it means an item needs 0.5 seconds to reach the end of a lane.
If the second lane has an item at 50% progression,it means it is at 0.5*50% = 0.25 units. if both lanes are directly connected, it means an item on the first lane can only move 0.25 units on the first lane as well, until it would intersect with the item on the second lane. This is what the MaxStep property basically stores.

However, there are buildings which have lanes that have a length of 0 units, but still a duration. Imagine the rotator for example - it has 3 lanes: Input Lane, Processing Lane, Output Lane.



The processing lane has a duration of 0.5 seconds by default, but it has a length of 0 world space units.
If we now look at the graph using the world space length as the dimension from left to right, it looks like this:




However if we look at the graph using the time as dimension from left to right, it looks like this:


If you look at the visualization (again, link), you will see that in the world length dimension the item just stops (and would rotate in the real game) whereas on the time dimension, it just continues to progress.

Depending on the complexity of buildings, this can be a pretty daunting task to get right, especially if we want to get all buildings to run at 100% precision.

[h2]Visualization of Items[/h2]
Another big problem is that we can not "hide" items, because all buildings are supposed to be fully open. In almost all other factory games, buildings are solid structures that have inputs & outputs, but they just "consume" the items and output others. Because shapez 2 is fully open, this adds a lot of new issues (but we think it is worth it!):


For example, splitters can sometimes still have overlapping items:


This is super hard to fix, because we can not simply "warp" the items, however we will cover this in another development log!

[h2]+3000% Simulation Performance[/h2]

You might ask why we are doing all these efforts to put the nodes into a graph structure. The main reason for this is that we want to make the simulation 100% precise at just 2 UPS (Updates per second).
This means that islands which are not currently in view can be updated at 2 UPS instead of 60 UPS.
Compared to Shapez 1 (and almost all other factory games) this is a huge performance improvement - to put it into numbers, about 30 times faster.

We've done some initial tests and it seems that factories with >1,000,000 buildings and thousands of islands are just fine.

However, we want more - and thus we're also building the simulation to support multiple threads. Because every island is it's own graph, we can update islands independently of each other, and then update the "shared" structures afterwards. If we use 8 threads instead of just 1, this means the simulation would in total be about 240 times faster than in shapez 1.

Realistically, we will hit other limits (like memory bandwidth), but in general you can expect the simulation performance to be at least magnitude better than in shapez 1, and probably also compared to other major factory games.

Of course, this is only the simulation - if you choose to select ultra-high graphic settings for example, the game can still run slow if you don't have an appropriate setup.

However, we are giving our best to make sure huge factories run perfectly smooth!


[h2]Graphic Requirements[/h2]

We've received a lot of questions about the system requirements with the all-new graphics. We know that one advantage of Shapez 1 was that it ran well with low requirements, and our goal is to make sure that Shapez 2 also runs on low end setups, which is why we will also include a "minimal" graphics mode which will make the game run very ugly, but also very fast. Tests have shown so far, that it should be no issue playing on an integrated laptop GPU for example, but we will keep you updated with definite stats closer to release!




That's it for today, and we will keep you updated on the development progress - Please let us know in the comments if you liked this technical insights and would like to see more!

And last but not least, be sure to wishlist Shapez 2 if you haven't yet!
https://store.steampowered.com/app/2162800/shapez_2/

~Tobias