Combiner 2.0 Feedback

Post all other topics which do not belong to any other category.
Post Reply
Roflhouse42
Burner Inserter
Burner Inserter
Posts: 9
Joined: Fri Nov 10, 2023 7:28 pm
Contact:

Combiner 2.0 Feedback

Post by Roflhouse42 »

Loving the new changes so far to Combinator but I definitely feel like there are some key missing parts. I started thinking about how this will affect the design of train stops and think that adding a few different options could help a lot for new players. Also, additions to the Arithmetic Combinator and chests I am super sad to not see added.

Arithmetic Combinator or the Decider Combinator NEEDS to have at minimum support for Min and Max. Ideally it would have the clamp operator as well but at minimum please add min/max. To make a min operator you need two Decider and a multiplier. On top of that you need to hardcode the constant value in each or wire up a constant combinator to all three. Its complex and annoying and very error prone. Also you need to understand the wire merge/addition mechanic which merges the two branching signals back together. Its the most difficult part for a noob to understand when making train stops. Please add that functionality to the Arithmetic Combinator. Adding this alone would simplify train stops by almost half the complexity and number of operators.

Unloader stations/item request stations are annoying and hard to build. Please add additional functionality to make this better. Some useful tools for that would be for chests to emit signals around how empty the chest is such as number of empty slots or the number of selected items that can fit in the chest. AKA you select copper ore or 100 copper ore, and it tells you how much more copper ore is needed to full up to that amount (both a full chest or a constant amount). This would make calculating the number of missing items a stop much easier and automatic.

Also please add an option for the chest to output a constant value(aka 1 chest) so you can count how many chests are connected. A count of how many chests are connected at a train stop plus the stack size operator seems very powerful. Mostly i just want it to make sure that all my chests at a train stop are connected to a wire. I think this would make it much easier to build unloader stations and stations requesting items.

Next let's look at calculating the inventory at loader train stations.
Stack size is great, but for train stops, really not what you want. I imagine you would use the stack size operator to calculate the train capacity then calculate the # of trains. something like:
Input------------------------------------------------------------------------------------------------------->
Input->Selector(Stack Size)----------------------------------------->mul(items per train)->div(# trains)
Constant Combinator 160------------------------------------------>

This works and it is much better then vanilla because it offers a much more robust solution not needing to manually edit the constant combinator for item types but it also has a lot very complex wiring. I think it also has noob unfriendly features like the Constant Combinator is representing both the number of cargo wagons per train and number of stacks per wagon and it only works for stack based loading.

Alternatively, if we had Cargo Wagon Capacity as an option for the selector:

Input----------------------------------------------------------------------------------------------->
Input->Selector(Cargo Wagon Capacity)------------------->mul(items/train)->div(# trains)
Constant Combinator 4(wagon/train)----------------------->

I think is this much more noob friendly because all simplification of the constant combinator and it also it works for liquids. Also, when building this setup you are working with simple understandable intermediate values, Cargo wagon capacity, number of wagons per train, number of items per train. Selector could even offer a number modifier to the cargo wagon capacity so it would provide 4x cargo wagon capacity if you wanted to remove the need for a constant combinator and multiply.

A different approach would be to provide a more robust divide operator. This would likely be an additional option in the Arithmetic Combinator operators instead of a selector operator. Two useful examples would be converting a signal into the number of stacks of that signal or the number of cargo wagons of that signal. Both of these operators would be equivalent to dividing the signal by the Stack size or Cargo wagon capacity which make sense as an option when selecting the constant value of the Arithmetic Combinator's divide. The Arithmetic Combinator already allows you to select a constant or a signal value. This might be going too far in simplifying, however.

Example for Number of stacks in a signal:
Input->selector(Number of stacks in inventory)--------------------------------->div(# trains)
Constant Combinator 160(40 stacks per wagon * number of trains 4)->

This method saves only one multiply but simplifies the wiring significantly (only three wire connections). But only works for non-liquids. Note that you don't need to wire the original input into the div which is much simpler to figure out for a noob. I think this is going too far in simplifying but i though i would include it.

Finally, if we had Number of Cargo Wagons:
Input->Selector(number of Cargo Wagons)->
Constant Combinator 4(Number of trains)->div(# trains)

This is the simplest and works for both liquids and non-liquids. It is however probably too simple.

Conclusions on the Selector:
I think that the number of stacks per signal is not really in the spirt of the selector but if simplify is the goal it helps a lot. If it were up to me i think adding "Cargo Wagon Capacity" is a no brainer as it is very simpler to "Rocket Capacity" which is a function of the selector already and allows for a train stop to support both liquids and non-liquids very easily.

TLDR: Please add

"Cargo Wagon Capacity" to the selector and maybe even "Steel Chest Capacity"

min/max/clamp operators to Arithmetic Combinator or Decider Combinator.

Add option for chests to output a signal for empty space or missing items from chest.

Add option for chest to emit constant value for chest counting.

Nidan
Fast Inserter
Fast Inserter
Posts: 228
Joined: Sat Nov 21, 2015 1:40 am
Contact:

Re: Combiner 2.0 Feedback

Post by Nidan »

Roflhouse42 wrote:
Fri Nov 10, 2023 7:31 pm
TLDR: Please add

"Cargo Wagon Capacity" to the selector and maybe even "Steel Chest Capacity"
[...]
Add option for chests to output a signal for empty space or missing items from chest.
I'd put free/used/total slots into the circuit settings for containers (and train stops). Having selector modes only usable for only specific items begs the question of how modded variants could be supported. (I even feel "rocket capacity" is a bit out of place as there will certainly be mods adding higher capacity rockets; I'd have "item weight" instead and a rocket silo could output "maximum cargo weight".)
min/max/clamp operators to Arithmetic Combinator or Decider Combinator.
As already said, "select 0" is max or min, depending on sorting mode. Clamping would reduce 4 or 6 combinators and 2 ticks into one each, doesn't feel that worthwhile.
Add option for chest to emit constant value for chest counting.
Dunno about this one. If you had a "total slots" from above, would you still need this one? I feel capacity tends to be more important than the number of chests used. And in any case, you could calculate it by dividing the summed total by that of a single chest.

Freddy404
Burner Inserter
Burner Inserter
Posts: 18
Joined: Fri Nov 10, 2023 3:54 pm
Contact:

Re: Combiner 2.0 Feedback

Post by Freddy404 »

Skorj wrote:
Sun Nov 12, 2023 5:33 am
A related suggestion: please have an operation to output the total mass of the input signal, now that mass is a thing. The game knows stack sizes and masses, so it seems straightforward to have two new "special signals", like the "*" signals, that take the value of the stack size or the mass of each signal type on the LHS and use them on the RHS.
Nidan wrote:
Sun Nov 12, 2023 7:48 am
I'd put free/used/total slots into the circuit settings for containers (and train stops). Having selector modes only usable for only specific items begs the question of how modded variants could be supported. (I even feel "rocket capacity" is a bit out of place as there will certainly be mods adding higher capacity rockets; I'd have "item weight" instead and a rocket silo could output "maximum cargo weight".)
I agree it's a bit inconsistent for the new selector to provide 'stack size' but not 'mass' instead of 'rocket capacity'. If it were to provide mass, rocket capacity would be analogous to calculating container/train capacity from stack size. And the total mass would simply be a sum over the resulting signals.
Of course, as of the current announcement, one could still back-calculate the mass of each type from the rocket capacity, and then use that to calculate total mass.

I think it would be okay to have 'stack size', 'mass' and 'container capacity', the latter being slot count or mass capacity depending on container type. That would be enough to avoid hardcoded constants for load calculations, and not too much scope creep.
Of course, one could also use a (probably script-generated) constant combinator for this stuff in case one of the three doesn't make it into the game ;)

astroshak
Filter Inserter
Filter Inserter
Posts: 597
Joined: Thu May 10, 2018 9:59 am
Contact:

Re: Combiner 2.0 Feedback

Post by astroshak »

Quite honestly, I did not see any uses for my own personal playstyle for the new combinator. Then I got to thinking. I could use that in lieu of a balancer at mines.

Here’s how :
Each cargo wagon chest set goes to an Arithmetic Combinator, to be divided by the capacity of the wagon, with an output being a unique signal for this set. The new Combinator takes the lowest result of these divisions and outputs the result as L. Now, should something happen and somehow one cargo wagon chest set does not get its fill of ore, the train stop limit will reflect that.

Post Reply

Return to “General discussion”