#Thread
1 messages · Page 1 of 1 (latest)
I...don't see the point of there being an empty signal on a wire.
Like, how do you define if a wire is supposed to have 0 of itself, vs nothing at all?
Also, technically speaking, an empty wire is always transmitting 0 of every possible signal ^^
This is why
always results in true ^^
but
always results in false
yes, this is a pointless feature that is more likely to confuse than help
No idea what a "dedicated 0 value" means.
that's the point of the poll. suppose we had a signal that can be not on a wire, or it can be on a wire but have the specific value of 0
how do you think having it like that would change circuits as a whole.
but you need to be able to make a case for what you can do with the feature that you cannot do without it, and currently the answer is nothing
and can you do anything more easily with the feature that you currently cannot, and the answer is again nothing
suppose we had a signal that can be not on a wire
whaaaat are you smoking dude, where are you supposed to be able to read the nothingness of a value then?
Like, how do you imagine that looks like? Just an assembler showing a random Coal in the tooltip with no number and no way to read/output/affect it?
you can already check if X value == 0
like set enabled if Fish = 0
or a decider combinator to output 1 green if Fish = 0
And, you kinda already can have 0 count values in a CC per signal type
suppose a constant combinator, that has settings of virtual-signal-x=0 and virtual-signal-y=1. if you enable it, suppose you were getting two actual signals on the output, x of value 0, and y of value 1.
just imagine if that was a feature that existed like that.
and if you were to disable the const. comb, it would output no signals at all.
that is the same as outputting a separate signal
Do you just...want the Y:1 on the wire with the X:0 for OCD reasons?
"I put it in the CC, I want to also see it on the power pole"
you can, yes. but it breaks in each. I don't really wanna reiterate the e tire discussion about it here. if you wanna read up, join the technicalfactorio discord, and read up the last three days of the combinators channel.
it's less of an OCD reason and more of a thing to make it more intuitive for new players. and work around a bunch of (yet unsolved) edge cases for arithmetic combinators in 2.0
The only case I see for this is:
CC: { X:0, Y:1 } -->
Arithmetic: Each + 1 --> Each -->
Wire: {X:1, Y:2}
Instead of just
Wire: {Y:2}
yep, that's one example.
The problem with that is it breaks so many other other circuit designs that rely on 0 / <0 filtering
Which is a much more important and useful usecase than this.
By your logic, you would have to make deciders do an actual check if they are allowed to actually keep propagating a "0" signal or not.
for filtering you have a dedicated combinator in 2.0. and no, in a lot of cases, it would not actually break anything. again, read up in technical factorio discord
we are not going to go join a different discord just to read the points of a discussion to defend a point that you can’t be bothered to defend yourself
ok so TLDR:
- things that can read an output to a specific signal will always output that signal, just at a value of 0 to whatever respectively
- things that can output multiple signals ("read contents" on entities) outputs only whatever they are actually containing
for conditions: (be that enable/disable conditions, or in a combinator) - in conditions comparing a range of values (lt, gt, lte, gte), treat null as 0.
- in all others that do direct comparison (equ, neq), treat null as null. that is, any number equ null -> false. null equ null -> true. num equ num -> do the actual comparison. num neq null -> true. null neq null -> false. num neq num -> do the comparison.
for arithm operations, you could universally apply: - for operations that do maths, treat null as 0. if the output of that operation is invalid, output null. (following this, we get: else, always output whatever is present on the input in any way).
- for logic operations, treat null as null. if any of the inputs are null, the output is null.
treat null as 0.
JS says no 
from that follows: if you don't ever use x signal, it'll always be null, and you don't have to care about it. further, there's ways to completely renove ("null out") a signal, in intuitive ways.
yep, "treat as 0" just applies to mathematical operations, and comparisons with a range. that is, 1 + null = 1
further, there's ways to completely renove ("null out") a signal, in intuitive ways.
Its called having to put down an extra DC just to do garbage cleanup/explicit checking, and no-one is going to want to be forced to do this.
I get where you are coming from, I really do. But this is one of those case where it _isn't useful, nor desireable.
in most cases you won't have the signal in the first place
Using !B isn't an answer to A.
Might be a fantastic thing to add in as a mod, however. i'm sure there's ways to coax the engine to force a nullish output of a signal type
nope, not possible as is... the engine specifically removes signals of value 0 from the map<signal, int32_t> currently
Then I'm probably not the best person to ask this, rather perhaps a direct email/forum post line of questioning and involve the devs. Just adjust your expectations that it may not be the most popular of ideas if you're asked to build some popular opinion/momentum behind it before the devs consider the proposal.
I....do see the appeal of having such a possibility, and the use is not lost on me. But its an adjustment that will currently break a lot of designs.
just join the technicalfactorio discord. we've been discussing it there for three days. WITH involvement of the devs (twinsen and boskid to be specific)
in fact, all of this came up due to the devs trying to figure out a good solution to how to handle (each[r] + each[g] -> each) arithmetic combinators in 2.0.
I have a use-case where I would benefit from a "forced 0" setting. I have a train unloader that looks to see if the contents of chests are empty, per wagon. To compensate, I added a constant combinator to set the values of Signals 1 - 8 to "1". Then in my decider combinator, I decrease by 1.