#Thread

1 messages · Page 1 of 1 (latest)

solar thistle
#

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 everything always results in true ^^
but anything always results in false

rotund tiger
#

yes, this is a pointless feature that is more likely to confuse than help

languid ether
#

No idea what a "dedicated 0 value" means.

red jacinth
#

how do you think having it like that would change circuits as a whole.

rotund tiger
#

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

solar thistle
#

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?

rotund tiger
#

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

solar thistle
#

And, you kinda already can have 0 count values in a CC per signal type

red jacinth
#

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.

rotund tiger
#

that is the same as outputting a separate signal

solar thistle
#

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"

red jacinth
# rotund tiger you can already check if X value == 0

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.

rotund tiger
#

nty

#

of course it would add a feature, but it doesn’t add new functionality

red jacinth
solar thistle
#

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}

red jacinth
#

yep, that's one example.

solar thistle
#

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.

red jacinth
#

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

rotund tiger
red jacinth
#

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.
solar thistle
#

treat null as 0.

JS says no trianglepupper

red jacinth
#

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.

red jacinth
solar thistle
#

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.

red jacinth
solar thistle
#

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

red jacinth
solar thistle
#

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.

red jacinth
#

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.

crimson gulch
#

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.