Friday Facts #402 - Lightspeed circuits

Regular reports on Factorio development.
Post Reply
User avatar
Drury
Filter Inserter
Filter Inserter
Posts: 783
Joined: Tue Mar 25, 2014 8:01 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by Drury »

pleegwat wrote: ↑
Fri Mar 15, 2024 10:50 pm
I don't think radar signals are for people who are already using factory-wide signal networks. They are probably primarily intended at players who use circuit-wired rail blueprints "because", never use it, until at some point late in they find a usecase and then find out there are too many gaps in their network where they had to do a few meters of rail manually and their circuit network doesn't connect.
Yeah, it's a really funny use case. The feature for people who don't need the feature :D

jgilmore42
Inserter
Inserter
Posts: 34
Joined: Tue May 14, 2019 12:56 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by jgilmore42 »

Qon wrote: ↑
Fri Mar 15, 2024 8:18 pm
I made an assembly language for combinators to sidestep most of the issues that fiddling with combinators and wires manually creates: https://qon.github.io/combinassembly/
Some instructions: https://github.com/Qon/combinassembly
2D-layout is a planned feature.

Size issue kind of fixed: https://mods.factorio.com/mod/SchallCircuitScaling
Yeah, this just highlights that the issues I'm talking about (size, complexity, write-once being the only viable approach, no documentation method, etc) exist and are very real.

So thank you for your upvote?

And you're not the only one. Anyone who's tried to do anything even semi-serious with circuits runs into these problems. Even loading train with exactly the requested items is fraught with issues, complex, and not to be underestimated. Doable, certainly, but not in a clear or understandable way that is easy to correct, modify, or deal with later.

When dealing with circuit blueprints of any complexity, it's generally easier to re-do the whole damn thing than it is to understand, correct, or modify it. And your implementation of an "assembly language" level interface is a perfect example of this. Doesn't work right? Has bugs? Rip the whole thing out and re-do it with a brand new design from this external tool! Yay!

Even minecraft's redstone circuits are better - you can at least put signs up everywhere saying what's supposed to be going on. Can't really do that in factorio, except as a comment on the blueprint as a whole. No method at all to point to a particular input and describe why its there and what it's doing.

Don't get me wrong, circuits are useful as heck, and kinda make fun and challenging minigame for the programming/logic obsessed. But I really don't think that was the intention behind the design.

And I'm glad they're part of the game, they make many things possible that wouldn't be at all otherwise. Possible, but not easy!

PhanTomFoolery
Manual Inserter
Manual Inserter
Posts: 2
Joined: Sat Mar 16, 2024 12:27 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by PhanTomFoolery »

I really like this. However, I have one really quick quality-of-life changes that I would REALLY love to have implemented as someone who uses the circuit network a lot:
I think ctrl + clicking on a constant combinator should toggle its state (e.g. on to off). Constant combinators are great but the switch is really small in the ui and having to click on the model, then try to hit that tiny little switch, and then close it feels like a lot of work for what should just be clicking a switch. (The same could be applied to power switches as well, but I use them less). I know its a pretty minor change, but its one of those little things that I now can't not think about every time I have to use a constant combinator. With all the work being put into space age on UI/interaction, I think it would be a nice touch.

Cheers!

adam_bise
Filter Inserter
Filter Inserter
Posts: 360
Joined: Fri Jun 08, 2018 10:42 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by adam_bise »

Will the wireless transmission be limited to the radar coverage area?

wild_dog
Inserter
Inserter
Posts: 21
Joined: Tue Apr 19, 2016 8:07 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by wild_dog »

Tertius wrote: ↑
Fri Mar 15, 2024 2:45 pm

Currently, I don't see a compelling use case for use signal transmission by radar - the same as with far reaching wire. At least not globally from every outpost, since all signals from all connected outposts are merged, so you don't know what outpost sent which signal. You need to have some kind of outpost ID, then encode signals with that ID do be able to identify who sent what. All current ways for this are rather clumsy.
Here's a use case i have had:

I try to apply a rule that green wires are status wires, and red are controll wires, for some level of intercompatibility between BPs, and just a rule of thumb to intuite what things are doing. I've made BPs where outposts send what they have available for pickup on green to the 'central rail wire', and if they need anything to send that on red. So green is a 'the overall train network has this available' wire, and red is 'The overall train network is in need of these items' wire.

The red wire would be used to load up a supply train that would pass all outposts, and each individual outpost would only become active if they have outstanding requests, and only take from the train what is neccesary to fulfill requests.

It's not as efficent as say LTN, but it did work a treat in vanilla.

wild_dog
Inserter
Inserter
Posts: 21
Joined: Tue Apr 19, 2016 8:07 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by wild_dog »

jgilmore42 wrote: ↑
Fri Mar 15, 2024 5:44 pm
Wingysam wrote: ↑
Fri Mar 15, 2024 4:31 pm
Is there a mod that implements the radar feature in the current version of the game?
Yes. I don't know for sure which one, but the current modpack for "space exploration" has a uplink/downlink pair of machines with an infinite number of named channels. Not sure if they're available as a stand-alone mod, but it wouldn't surprise me.

They're used to coordinate among the different "planets" for what's required in various places.

Haven't played in awhile, let me update and look through my mods list... Found it: https://mods.factorio.com/mod/aai-signal-transmission
I've also used those to remote controll the sapce ships, since I designed my ships in a version where ships would clear current cirquit network signals on launch/landing, so you couldn't use a normal latch memmory cell to store the destination in your ships. I'd make a complex controller in 1 place, and just send command signals to and recieve status siganls from the ship; keep the logic and memory on 1 planet/surface even if the ship travels. After the update where the current state of cirquit networks WAS remembered, Erendel emposed a 1000 signals limit on that. Should be enough for anyone right?

Anyway, my overly complex remote controll system with multiple separate networks on the same ship, combined with long lists of signals for the complete cargo manifest, meant that that limit was exceeded regularly and crashing the game for me, so he upped/removed the limit.

Roxor128
Fast Inserter
Fast Inserter
Posts: 163
Joined: Sun Oct 02, 2016 9:48 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by Roxor128 »

Tertius wrote: ↑
Fri Mar 15, 2024 2:45 pm
From the FFF:
Image
That's almost exactly how my rail blueprints look like - could have been a screenshot from my current factory :D
I also added red and green wires "just in case a real use case pops up". I'm still waiting. The wires are everywhere but not being used.
I'm making plenty of use of them in my current game of Nullius. I've built a priority request and supply system. Two levels for requests and most supplies. Three levels for mines (where I want to build something (or the main supply base from emptying my inventory on expeditions), can be mined out by miners reaching under rails or around coastlines, and not in the way of anything). Stations switch off (set limit to 0) when they're satisfied or there's a higher-priority request for whatever they take or make.
Currently, I don't see a compelling use case for use signal transmission by radar - the same as with far reaching wire. At least not globally from every outpost, since all signals from all connected outposts are merged, so you don't know what outpost sent which signal. You need to have some kind of outpost ID, then encode signals with that ID do be able to identify who sent what. All current ways for this are rather clumsy.
That sounds like a huge headache to implement. The sort of thing that probably had to be solved to make WiFi work, come to think of it.

Qon
Smart Inserter
Smart Inserter
Posts: 2118
Joined: Thu Mar 17, 2016 6:27 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by Qon »

jgilmore42 wrote: ↑
Fri Mar 15, 2024 11:18 pm
Qon wrote: ↑
Fri Mar 15, 2024 8:18 pm
I made an assembly language for combinators to sidestep most of the issues that fiddling with combinators and wires manually creates: https://qon.github.io/combinassembly/
Some instructions: https://github.com/Qon/combinassembly
2D-layout is a planned feature.

Size issue kind of fixed: https://mods.factorio.com/mod/SchallCircuitScaling
Yeah, this just highlights that the issues I'm talking about (size, complexity, write-once being the only viable approach, no documentation method, etc) exist and are very real.

So thank you for your upvote?

And you're not the only one. Anyone who's tried to do anything even semi-serious with circuits runs into these problems. Even loading train with exactly the requested items is fraught with issues, complex, and not to be underestimated. Doable, certainly, but not in a clear or understandable way that is easy to correct, modify, or deal with later.

[...]

Even minecraft's redstone circuits are better - you can at least put signs up everywhere saying what's supposed to be going on. Can't really do that in factorio, except as a comment on the blueprint as a whole. No method at all to point to a particular input and describe why its there and what it's doing.
If you organize your combinators and know what you are doing they can be quite readable, especially with some comments so that you know what you are looking at.

My mod Signal Signs lets you put comments fairly easily next to combinators and IO. And combinassembly should also be able to add comments in its output as well in some future update. Though you don't have to read the combinassembly output combinator network that much, better to try to find bugs in source (though stepping through it can only be done in the output network of course). Maybe a simulator for the language and a debugger would be good to have? Though it wouldn't be able to interact with the rest of the Factorio world so it's of limited use.

jgilmore42 wrote: ↑
Fri Mar 15, 2024 11:18 pm
When dealing with circuit blueprints of any complexity, it's generally easier to re-do the whole damn thing than it is to understand, correct, or modify it. And your implementation of an "assembly language" level interface is a perfect example of this. Doesn't work right? Has bugs? Rip the whole thing out and re-do it with a brand new design from this external tool! Yay!
Well, the point is that the text source is supposed to be your way to edit, read and reason about your code. In Factorio you rip it out and replace with the new build, but that's just like a .exe file. It's not like C compilers modify an existing executable file when you change a line in your source.
So you are wrong about "re-do it with a brand new design", the design is in the source, which is iteratively updated like any other source code.

User avatar
Hares
Fast Inserter
Fast Inserter
Posts: 127
Joined: Sat Oct 22, 2022 8:05 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by Hares »

Tertius wrote: ↑
Fri Mar 15, 2024 2:45 pm
From the FFF:
Image
That's almost exactly how my rail blueprints look like - could have been a screenshot from my current factory :D
I also added red and green wires "just in case a real use case pops up". I'm still waiting. The wires are everywhere but not being used.

Currently, I don't see a compelling use case for use signal transmission by radar - the same as with far reaching wire. At least not globally from every outpost, since all signals from all connected outposts are merged, so you don't know what outpost sent which signal. You need to have some kind of outpost ID, then encode signals with that ID do be able to identify who sent what. All current ways for this are rather clumsy.
There are other use-cases for that.
Currently, with the buffer chests acting as a requestor for construction bots but being counted up towards the total logistics inventory, the only way to scale the base is to count up number of buffer areas and multiply it to the buffer inventory, so your materials supply will always be suffecient, thus the wiring must cover the entire megabase -- I talked about it in my Request: Add option to exclude buffer (green) chest inventory from the logistics network.

There are other usages for that, and encoding the signal is one you mentioned (or the lock-based system).
You can use it to measure the total resource reserve or production on outposts (i.e., you know you require 10 lanes of copper for 500spm, so you can measure your outposts capability to determine how much SPM you can afford).

catpig
Inserter
Inserter
Posts: 32
Joined: Sat Jan 21, 2017 11:01 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by catpig »

Excellent news! Really can't wait for the update+DLC. It's almost cruel to tell us all these wonderful things and not being able to play them ;)
And several of the suggestions in this thread would make it even better, of course.

@Qon: That looks like a great tool, I'll definitely keep that in mind for when I finally do something non-trivial with circuit networks.

User avatar
brunzenstein
Smart Inserter
Smart Inserter
Posts: 1068
Joined: Tue Mar 01, 2016 2:27 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by brunzenstein »

"To avoid this dilemma, we added a long requested feature of wireless circuit transmission using Radars."

I tried to replicate the clock combinator setting and could not figure out - pls anyone share the setting for the constant and the decider combinator for this clock or S/R latch

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

Re: Friday Facts #402 - Lightspeed circuits

Post by Nidan »

brunzenstein wrote: ↑
Sat Mar 16, 2024 11:46 am
"To avoid this dilemma, we added a long requested feature of wireless circuit transmission using Radars."

I tried to replicate the clock combinator setting and could not figure out - pls anyone share the setting for the constant and the decider combinator for this clock or S/R latch
That's just a simple clock, see the wiki

User avatar
brunzenstein
Smart Inserter
Smart Inserter
Posts: 1068
Joined: Tue Mar 01, 2016 2:27 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by brunzenstein »

Nidan wrote: ↑
Sat Mar 16, 2024 12:50 pm
brunzenstein wrote: ↑
Sat Mar 16, 2024 11:46 am
"To avoid this dilemma, we added a long requested feature of wireless circuit transmission using Radars."

I tried to replicate the clock combinator setting and could not figure out - pls anyone share the setting for the constant and the decider combinator for this clock or S/R latch

That's just a simple clock, see the wiki
No, it is not because it features only a single combinator and sets resets after 3 lights

Trig90
Manual Inserter
Manual Inserter
Posts: 3
Joined: Tue Feb 26, 2019 8:36 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by Trig90 »

brunzenstein wrote: ↑
Sat Mar 16, 2024 1:16 pm
Nidan wrote: ↑
Sat Mar 16, 2024 12:50 pm
brunzenstein wrote: ↑
Sat Mar 16, 2024 11:46 am
"To avoid this dilemma, we added a long requested feature of wireless circuit transmission using Radars."

I tried to replicate the clock combinator setting and could not figure out - pls anyone share the setting for the constant and the decider combinator for this clock or S/R latch

That's just a simple clock, see the wiki
No, it is not because it features only a single combinator and sets resets after 3 lights
Constant combinator: T=1
Decider: T < 240 , output: input count T
Lamps: T > 60, T > 120, T> 180


Or, the timer from the wiki
Image

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

Re: Friday Facts #402 - Lightspeed circuits

Post by Nidan »

brunzenstein wrote: ↑
Sat Mar 16, 2024 1:16 pm
No, it is not because it Features, Only a Single Combinator.
I was referring to this
radarclock.png
radarclock.png (54.55 KiB) Viewed 943 times
, which is described on the wiki, including a picture.
Addendum: Which Trig90 now copied here.

User avatar
brunzenstein
Smart Inserter
Smart Inserter
Posts: 1068
Joined: Tue Mar 01, 2016 2:27 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by brunzenstein »

Thank you I am 76 years and a little bit slow on Combinator settings.

gGeorg
Filter Inserter
Filter Inserter
Posts: 394
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by gGeorg »

Drury wrote: ↑
Fri Mar 15, 2024 10:58 pm
pleegwat wrote: ↑
Fri Mar 15, 2024 10:50 pm
I don't think radar signals are for people who are already using factory-wide signal networks. They are probably primarily intended at players who use circuit-wired rail blueprints "because", never use it, until at some point late in they find a usecase and then find out there are too many gaps in their network where they had to do a few meters of rail manually and their circuit network doesn't connect.
Yeah, it's a really funny use case. The feature for people who don't need the feature :D
Dury is right. Wireless network with one channel is either good for beta-testing testing or has very niche player usage.
Players who use combinators intensively, need more channels.

mrvn
Smart Inserter
Smart Inserter
Posts: 5709
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by mrvn »

Justderpingalong wrote: ↑
Fri Mar 15, 2024 12:11 pm
This one felt... surprisingly short.

One thing I will say however is that the simple addition of being able to hook radars into the wire network is GREAT. It should allow a full implementation of LTN, which I am glad for. However: I'd like to offer an improvement:

Currently, red and green circuits have a 'circuit ID'. What if we used this circuit ID to create distinct channels? Could be a simple if/else for both red and green. Either you use the circuit ID you're given as your channel, or you connect to a different circuit ID, of which you can copy/paste the numbers. Simple!
The circuit ID changes when you connect or split circuit networks. Would be horrible to program all receivers every time you play with the wires of the sender.

mrvn
Smart Inserter
Smart Inserter
Posts: 5709
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by mrvn »

The fact that radars will only have one channel per surface is rather limiting. This is how my rail blueprint looks like:
rail-blueprint.png
rail-blueprint.png (181.9 KiB) Viewed 901 times
Because I sometimes need to transmit more than red/green long distance so my rails have 2 channels.

So please consider adding channels to radars. You already have one channel per surface so I guess code to pick a channel is already there. Should be easy to extend the radar GUI to have a text field where one can set or select a channel.

Secondly if the radar only works on a surface what will there be to send signals to orbit and back? Or between planets?

Dial-up
Inserter
Inserter
Posts: 22
Joined: Sun Nov 12, 2023 2:02 am
Contact:

Re: Friday Facts #402 - Lightspeed circuits

Post by Dial-up »

kovarex wrote:I felt uneasy about it, because it goes against the coding principle of "write it when you need it"
that's why I adore this game so much as a player and hate writing mods so much, every time I try to implement something that goes beyond the "standard" I run into a whole bunch of problems, from partially implemented functions (or their internal logic that works only according to some conditions or only on specific prototypes) to the unavailability of some data when needed
and the saddest thing is that when I found posts on forums about my problems, the answers were something like β€œfew people need this function,” β€œit’s difficult to implement,” or β€œThat’s takes the time (e.g. startup or runtime).” but then, when the developers themselves needed it, it becomes (easily) doable, which to me looks...
but in any case, you can ignore this message, I’m writing mostly because I need to vent somewhere, well, we have different approaches to programming stuff (In my opinion), and in my opinion the current mod api forces us to resort to hardcoding some things or overcomplicating things

Post Reply

Return to β€œNews”