Hey everyone! I wanted to give you an update on the development of Shapez 2, our current plans and more! https://store.steampowered.com/app/2162800/shapez_2/ [h1]News[/h1] [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 [url=https://www.linkedin.com/jobs/view/3558505254/]Senior Unity Developer[/url] as well as a [url=https://www.linkedin.com/jobs/view/3560738970/]Community Manager[/url]! 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 [url=https://www.twitch.tv/videos/1781808539?t=01h23m40s]exclusive alpha gameplay stream[/url] 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! [url=https://www.twitch.tv/videos/1781808539?t=01h23m40s][img]https://clan.cloudflare.steamstatic.com/images//43169810/2d8a6730ffdc2375fbd9ff2cc4cca5ecedee985a.png[/img][/url] We've also updated the [url=https://store.steampowered.com/app/2162800/shapez_2/]Store Page[/url] with current Screenshots from the Alpha! PS: We are currently not looking for more alpha testers, but follow the [url=https://store.steampowered.com/app/2162800/shapez_2/]Shapez 2 Store Page[/url] to get updates when we do! [h1]Devlog[/h1] [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. [url=https://clan.cloudflare.steamstatic.com/images//43169810/cbe8eb745333631c1b93088667af6540347558c7.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/cbe8eb745333631c1b93088667af6540347558c7.png[/img][/url] 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! :)) [url=https://clan.cloudflare.steamstatic.com/images//43169810/64131877dd0d158817cb386ce84e4a5a30d1f6fe.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/64131877dd0d158817cb386ce84e4a5a30d1f6fe.png[/img][/url] [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 [url=https://shapez2-belt-simulation.netlify.app/]here[/url], and also have a look at the simulation code [url=https://github.com/tobspr-games/shapez2-simulation-visualizer/tree/main/src]here[/url]! 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. [url=https://clan.cloudflare.steamstatic.com/images//43169810/ad07cef40b0339e90f7e6a4bad1251cfb1b8ef3e.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/ad07cef40b0339e90f7e6a4bad1251cfb1b8ef3e.png[/img][/url] 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: [url=https://clan.cloudflare.steamstatic.com/images//43169810/e56869313092ef7a17e9c4181f88ce1697a3356a.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/e56869313092ef7a17e9c4181f88ce1697a3356a.png[/img][/url] However if we look at the graph using the time as dimension from left to right, it looks like this: [url=https://clan.cloudflare.steamstatic.com/images//43169810/adabc140781cf2d2620f904011516faf3e0d7bdf.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/adabc140781cf2d2620f904011516faf3e0d7bdf.png[/img][/url] If you look at the visualization (again, [url=https://shapez2-belt-simulation.netlify.app/]link[/url]), 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!): [url=https://cdn.akamai.steamstatic.com/steam/apps/2162800/extras/StorePageGif_v1.gif?t=1681034330][img]https://cdn.akamai.steamstatic.com/steam/apps/2162800/extras/StorePageGif_v1.gif?t=1681034330[/img][/url] For example, splitters can sometimes still have overlapping items: [url=https://clan.cloudflare.steamstatic.com/images//43169810/b3c15449737eb8c00d40fd680bdbd2efb592cd42.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/b3c15449737eb8c00d40fd680bdbd2efb592cd42.png[/img][/url] 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! [url=https://clan.cloudflare.steamstatic.com/images//43169810/7bf142d1713921a985f342dbfc1ec4dc066ce8f8.png][img]https://clan.cloudflare.steamstatic.com/images//43169810/7bf142d1713921a985f342dbfc1ec4dc066ce8f8.png[/img][/url] [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 & follow Shapez 2 if you haven't yet! https://store.steampowered.com/app/2162800/shapez_2/ ~Tobias