Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
its been a while since my last post. Originally, I just came back for a small improvement of one of my designs, but then that level 1000 post caught my attention and kept me busy for the last month. So I edited that design to my first post and will focus on the sequencer design here.
In case you did not see, IridiumMika created a machine that automatically switched between numbers after a given amount to automate not only the number generation but also the level progression! And my goal was to use some of his ideas and combine them with my own to create once again a nice and compact layout.
Sequencer
The first obstacle was finding a good way to switch between numbers. My main idea was using the output of an operator and block it once the amount of numbers has been reached. If the output is blocked it will no longer take inputs which will then continue to the next operator. For evaluation, I used dividers and their behavior of dividing by zero. In that case, I get 2 outputs: one that is counted and eventually blocked, and a second that continues to trigger divisions, whose value conveniently is also zero and thus can be done indefinitely. This allows me to release 30 single bits by one trigger bit.
The second obstacle was finding a good way to count numbers. In the end, I used the internal storage of operators. Each operator has a storage of 4 for each inputs and 2 for the output. And since the output consists of 2 inputs, that gives a total of 12 numbers. If I clear a block, that amount can be refilled and reactivates my trigger operator. For scaling, I chained my operators so that each output feeds 2 inputs, effectively doubling its value. So after 10 chained operators, it will take a total of 2^10 = 1024 inputs to get a single output. Together with the storage of 12 and the 24 lanes of the hub, I only need 12 chained operators to be able to set up numbers in a range up to 1 million!
For the MAM, I used my latest design: a combination of adding and shifting to get a compact size. Adding 4 bits and then shifting them by 4 appeared to be the best middle way between size and speed, and the required numbers were still very small. Only the 16 for shifting had to be calculated seperately.
Finally, for the duplication I used the approach of IridiumMika and set up dividers in a way to output two of the input values. To not exceed the maximum number value I limited myself to 30 bits and used the lower and upper half of my number for duplication. You cant use the original number right away because the calculation requires doubling the input bits and 31 bits are the maximum. To increase performance I did not combine both halfs after doubling but kept them seperated until I had 24 each and only combined them in the last step.
Here are some more detailed screenshots of my machine:
Infeed Collector MAM Duplicator Combiner
Sequencer with Zero Waste
Even though I really liked the design and handling, switching numbers was very messy! The single bits reached my MAM with different delays and the bypass funcionality caused calculations of lots of random numbers. In total I had about 10k numbers waste between two productions. I thought the main problem was the bypass function and replaced empty belts with zeros, but oh boy was I wrong! ^^
I did reduce the waste down to 3k, but the rest came from all the different operators and their internal storages, which got filled because of the different delays and then messed up the following numbers... The whole calculation itself also got streched out a lot so that the end of one number calculation was mixed with the beginning of the next number, even with a very long pause at the switch! So I began my long journey of putting evenly distributed inputs and outputs everywhere as well as extra storages to buffer the different delays.
It does not look so neat anymore but the results were truely impressive! An input stream of 30 values that was originally stretched to 80 is now stretched by only 1 or 2. And while even after 100 numbers the belt still used to have empty spaces in it, a full belt is now reached after like 5 numbers and in best cases even immediately!
The main layout is still the same, but here are the improvements I had to do:
Infeed Zero Generator MAM Duplicator Combiner
Single number MAM
Finally, I realized that I could use the 31st bit to alter the duplication calculation a little bit. I already converted the 2^15 for shifting into 8^5, but 6^6 works too since it uses part of the 31st bit and its numbers can be even closer to my machine! So I restarted a couple of times to find a map with a convenient distribution of numbers and built a single MAM based on duplication.
I think thats it for now and I can finally take a break. ;-)
Best regards, Balder