Ghost Scanner

by Optera

Adds a combinator reading ghost requests from the logistic network it's placed in.

Content
1 year, 2 months ago
0.16 - 1.1
10.7K
Circuit network

i Upgradable construction item to be detected, and Option to "enable/disable"

4 years ago

Do note this is posted under Ideas & Suggestion, not bug per-se.

First idea :
If i use upgrade planner (mod or vanilla planner), the "missing item construction" is popping up in the quick-bar tray, just like the way it did with ghost info; They use the same construction icon.
But ghost scanner didn't detect that "upgrade" construction order.

So i hope ghost scanner can detect that kind of construction order.


Second idea:
Pardon me of my ignorance how the mod work, i'm not coder in anyway, just a casual player.
What if the ghost scanner combi also have an option to enable and disable ?
This might confusing idea, since i'm aware they have an "On / Off" option.

The difference is, the On/Off is how to control the signal being sent out or not, just like constant combi.
Even when it's off, ghost scanner still consuming UPS since it's still "gathering" ghost info.

While, what if like i said earlier, there's an option to enable/disable ?
By disabling them, they stop gathering ghost info. So it doesn't matter whether the option is on/off.
Basically they act as the parent option for the On/Off.
Because they were not gathering anything, being inactive, they don't drain UPS.

What the use of it ?

I plan to use ghost scanner extensively, placing them in each my sub-base and every remote outpost.
But i don't plan to use it (turn them on) in every single base/outpost. Only when i needed, or in the case of remote outpost that's heavily attacked.
But i notice a mere of placing them in the world already consuming UPS, even when they were off, and even when there's no ghost whatsoever.

So, what if, they can be disabled completely ? Saving UPS.
That's the idea.

For the moment, i rebuilt / deconstruct when i need them.
But i do that a lot..really-really a lot, repetitively, just for the sake of saving UPS.

So,..an option to just toggle to disable/enabled would be great (IF that is even possible to save UPS that way)

Again, like i said earlier, forgive my ignorance how the mod work.😒

4 years ago

Both are good ideas to improve this mod.

I'll look into ways to implement those.

4 years ago

Really good to hear that 😍
Thank you, but i will also understand if it's not doable for any reason.

4 years ago

Getting upgrade item requests is next to impossible with the current API.
There's only two ways to get upgrade item requests. Either through brute force scanning all entities in a logistics cell and checking if get_upgrade_target() returns something, extremely slow.

The other option is to use the event on_marked_for_upgrade.
While I'd love to rewrite the entire code to be event based and have much less overhead, there are key events missing, roboport_power_loss or logistic_network_changed, other events don't even contain all information required: https://forums.factorio.com/viewtopic.php?f=7&t=74370
And it would only reverse the check if something is inside a network since entities have no reference if they are inside a logistics network range just like the logistics network has no reference to entities/ghosts inside its range.

4 years ago

So it's both a bug and a API limitation, bummer.
Ah well, but what about that enabled/disabled thing?
Is it doable ?

Every other ghost related mod that does scan things always heavy on the script usage.
But this mod seriously lightweight, given a player dont abuse it.
The enabled /disable thing would make this as light as vanilla.

This mod literally changed the way i played, no more running through the map again.
I built from map, a precise loading train will goes to a site, bots on site built it.

Well, there's that flip on/off thing. That's the only thing i must do manually.
Any idea how to flip remotely (preferably from map)?

4 years ago

I'll still have to look into reading the enabled status.

To remotely change combinator settings:
Copy the combinator, paste it next to you, change the settings, cut the changed combinator and paste over the original.

4 years ago

Haha, never thought of that, i always do copy paste setting,
Never thought of using it to retain the on/off things.πŸ˜‚
Thank you!πŸ‘

4 years ago

The on/off feature is available in v1.4.5.

4 years ago
(updated 4 years ago)

Double WHOAAA !
1st for the speed you put to make this suggestion. 😲

2nd Whoa is for the feature itself:
Just test it, now putting a tons of these (with off state) not even make a blink in script update !!! 😍
And i put 100+ plus !!!

Time to abuse this and complain later,..😁

Btw, i notice something cool.
(As a test, since i wont use it anywhere near it) i put 160 ghost scanner, then putting ghost.
Surprisingly, 24 of those is not reporting anything (they outputting something for a sec, then blank).

So basically there is an internal mod logic to prevent overwhelming request ?

So cool ! 😎

Thank you so much !

4 years ago

Ghost scanner 1.4.6 can find item requests from entities marked for upgrade now that Factorio 0.17.69 added my feature request https://forums.factorio.com/75132

4 years ago

Oh man, that's so great to hear, (i haven't test it yet, currently away from my gaming PC).
Thank you for filing a request and the dev for implementing it.

4 years ago

The on/off feature is available in v1.4.5.

i only started using the ghost scanner right now, and besides being nice in general, having this on/off feature is really great ! is this explained somewhere besides this thread? i was not aware of it until i started reading all old discussions, and also the changenotes only say "ghost scanners can be turned off like regular constant combinators" without mentioning that this not only shuts off the output but also the collection of data which is even more important for the UPS.

now, it would be even better if this could be triggered more easily somehow :-) of course, these are only MY simple ideas, and you are the mod author to determine what is useful and/or possible

the first simple method for this would be to make it compatible with (or work like) the "pushbutton" mod which not only introduces a new constant combinator that outputs its values for only a single tick when you hover over it and press "F", but also adds this "hover and press F" functionality to turn on/off normal vanilla constant combinators (can't this be added to the vanilla game? :-)
being able to "hover and press F" for this ghost scanner would be nice, either to turn it on/off, or to cause it to do ONE measurement and update its values once.

but even better: could the combinator read signals on the connecting wires and act on signals (maybe only virtual signals allowed to not mix this up with the item signals that it generates and sends) either having some conditions which enable the combinator (similar to the conditions on inserters and other items), or requiring a specific (new?) signal.
since the default should be to scan for ghosts (to not confuse users who don't use these signals), maybe a signal "G" could trigger the function, with "G>0" specifying an interval (in ticks) for scanning ("G=0" being "no signal G" and thus using the default from the mod settings), with "G=-1" to turn off the scanner's output, with "G=-2" to completely turn off the entire scanner, and "G=-3" to scan immediately ONCE only (needs setting to -2 and then -3 again to scan once again; can be done by setting G to -3 and sending a pulse of G+1 when a scan is needed)?

background for this wish: i built a forest with the "robot tree farm" mod and wanted to check how many seeds i need to plant. thus there are LOTS of ghost seeds (first small scale test with "only" 1500, later a multiple of that) and i need a pretty accurate result. but this check needs to be done only for one of several networks and ghost scanners, and only once (or very few times during a short interval) per growth cycle every one or two nauvis days (more rarely than my autosaves :-), and I'm willing to get stuttering (heavy drop in UPS) for a single tick once per real time quarter of an hour :-)

ps: capping the checks to 100 cost only 0.015 (in the F4 debug info), 200 was 0.025, 1500 (the exact number of ghosts) was 0.190 (pretty linear for the cap all the way from 1 to the number of ghosts), values above this suddenly were around 0.450 (of course, now checking the whole network in vain for additional ghosts), but then i was surprised when switching off the cap by setting it to 0: the time increased to 1.950 while i had expected it to stay the same 0.450 for any value above 1500, including when having no cap ?!?!

4 years ago
(updated 4 years ago)

Reading Signals also is quite costly. For comparison over 75% of LTNs time is spent reading from circuit network.

Use in game debug info performance numbers with a grain of salt. A background task from the OS can change them more than moderate changes to mod setting.
To get consistent numbers run the same save multiple times with --benchmark "%SaveFile%" --benchmark-ticks 36000 and take the median.

New response