Combinator scalability and maintainability

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

Delicon
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 16, 2020 2:21 pm
Contact:

Combinator scalability and maintainability

Post by Delicon »

Problem: Combinator creations are large and difficult to maintain, discerning functionality is arduous when revisiting their design at a later time.
Suggestion: Break combinators into functional groups, a bit like functions or classes in software.

I LOVE Factorio, I have been playing for nearly 5 years and I am still learning new things. My friends and I start a new multiplayer game about once a year and try to solve problems that don't need to be solved, in really interesting ways. I am thrilled for the Wube team and the recent 1.0 release, but I am bummed as well. I feel like they are ready to move on and leave Factorio behind. I know the chance of any new content is pretty slim at this point given the release, recent Factorio Friday posts, and the shutting down of Factorio Friday, but I thought I would give it a try and make a suggestion.

Combinators are a large part of end game design. They have two critical issues, they don't scale well and they are difficult to maintain. I think it's important to address the issues in that order, the lack of scalability makes them harder to maintain.

The physical size of the combinator, although understandable from a UI perspective, becomes cumbersome from usability stand point. They take up a large portion of space for very little functionality. This necessitates more and more combinators to accomplish simple tasks.

Examples:
  • Filtering N signals out of a circuit - N+1 combinators.
  • Subtracting red from green - 2 combinators
  • Multiplying red and green - 5 combinators
  • Addressable memory cell - 3 combinators
It's not uncommon to build creations that are 20 - 50 combinators for memory banks, TDM communications, CSMA communications, warehouse order processing, or supply train control. As I develop complex circuits, I have logical groups spaced out so I can more easily understand their purpose. I can end up with a field full of combinator groups and electric poles everywhere to facilitate the signals between them. That type of layout is great for development, but to use it in a real game, all those combinators need to be packed together as tight as possible (which is it's own challenge). Then blueprinted, shared, and used in game.

When returning to that circuit to modify it a week later, it is faster to rebuild the thing from scratch than to try and make sense of the block of mashed together combinators. At this point, I suspect someone will suggest that I save each creation in it's own development session. It's a great idea and I do that, except you once again have to pack together combinators after making a change. Even with the incredible Picker Dollies mod (everyone should have this), packing combinators is a non trivial task. More often though I need to tweak something right there in a live game. Leaving the game, loading my development save, making changes, packing combinators, is all time I am not playing with my friends.

What I am suggesting is a way to 'compile' a group of combinators together that are then represented by a single combinator. This reduces the overall space needed for physical combinators. It also keeps things in logic groups with names, maybe in this case I create a memory cell. I can then take a bunch of memory cells and 'compile' them together to make a memory bank. Understanding the functional design becomes trivial and components are reusable, for the same reason functions and classes work for software. It maintains the spirit of the combinator idea that is unique to Factorio and I don't think the space reduction is cheating. These are logical functions not an assembler, belt, or inserter. I can fit 4800 Processing Units in a 1x1 chest, but I need 2x1 to divide iron plate by two (I know, not a fair comparison since a train car can hold 200 train cars!) But still, I think it maintains the spirit.

"But there are mods for this already Delicon, go home.", says the masses.

Nope, there are not. Just because a mod exists, doesn't mean it's functional and maintained. I know Factorissimo2 and Circuitissimo have this functionality to some degree. Factorissimo2 only allows a reduced signal set to be used, a quote from it's FAQ, "This design is intentional, since transferring signals is very UPS expensive for technical reasons." Circuitissimo is alpha at best and as with any mod, at the whim of the mod creator's attention span. I think the idea of Circuitissimo is a great partial solution but will not be able to nest designs without again worrying about space and smashing combinators together into a block.

"But Delicon, you could make/take over/expand a mod yourself", says the masses.

Nope, I can't do that. That isn't a passion for me, any more than building my house with my own hands.

I think combinators are a powerful, deep addition to Factorio that have been ignored for a very long; it's time for some love.
Last edited by Delicon on Mon Aug 17, 2020 6:30 am, edited 2 times in total.
User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12889
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Combinator scalability and maintainability

Post by ssilk »

Delicon wrote: Sun Aug 16, 2020 5:07 pm I think combinators are a powerful, deep addition to Factorio that have ignored for a very long; it's time for some love. Also it would be incredible if there was a combinator that used the red and green wires as separate operands, red divided by green or red % green, could you imagine the possibilities?!
So if that’s your suggestion then I need to join it with existing. :)

I make a golden bridge.

List of things that should be changed with circuits/combinators:
- possibility to handle red and green wires separated in combinator.
- enable moving combinators around (picker dollies)
- enable circuitissimo-like reduction of a number of circuits into one entity, while having more than just a comment on it, how it works
- a timer combinator; creates pulses every n ticks or turns off after n ticks when triggered.
- kind of debug-mode; reduce speed of a circuit, see values in wires/combinators changing
- get rid of red/green wire and power cable, they have zero game value and block your inventory, instead make them free and use with keyboard shortcuts.
( https://mods.factorio.com/mod/WireShortcuts )
- ... add own ideas ....
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Delicon
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 16, 2020 2:21 pm
Contact:

Re: Combinator scalability and maintainability

Post by Delicon »

ssilk wrote: Mon Aug 17, 2020 5:43 am
Delicon wrote: Sun Aug 16, 2020 5:07 pm I think combinators are a powerful, deep addition to Factorio that have ignored for a very long; it's time for some love. Also it would be incredible if there was a combinator that used the red and green wires as separate operands, red divided by green or red % green, could you imagine the possibilities?!
So if that’s your suggestion then I need to join it with existing. :)
I guess I should not have been cute with that last sentence. It was meant to be like, 'and if a developer wanted to throw in a bonus feature!' I guess people tend to remember the first and last thing they read, I will remove it so the focus stays on the real issues, scalability and maintainability.
User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12889
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Combinator scalability and maintainability

Post by ssilk »

What I meant is, that this suggestion is not very clear. I leave it here, because it points to many more suggestions around combinators, wires and so on... :)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Oscar
Burner Inserter
Burner Inserter
Posts: 18
Joined: Sat Mar 14, 2020 5:10 pm
Contact:

Re: Combinator scalability and maintainability

Post by Oscar »

There is another discussion on a similar topic, could offer some interesting options that will solve at least some of the problems stated: viewtopic.php?f=6&t=79407

especially this mod which was mentioned in there: https://mods.factorio.com/mod/fcpu
Delicon
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 16, 2020 2:21 pm
Contact:

Re: Combinator scalability and maintainability

Post by Delicon »

Oscar wrote: Mon Aug 17, 2020 7:50 pm There is another discussion on a similar topic, could offer some interesting options that will solve at least some of the problems stated: viewtopic.php?f=6&t=79407

especially this mod which was mentioned in there: https://mods.factorio.com/mod/fcpu
fCPU fundamentally changes circuits by adding a processor. Although that does help with scalability and maintainability, it breaks from the spirit of combinators.

There was a game called Robot Odyssey from The Learning Company, only the old and insane among us will remember. You can play it in your web browser here. Anyway, as part of its Innovation Lab (a basic sandbox), it had a prototype chip that you went inside and laid out logic circuits. After you got the circuit working the way you wanted, you could burn/compile it into a single reusable/copyable entity. You could then use that compiled circuit in other more complex circuits and burn/compile those.

This method would make discerning functionality with a glance instead of an hour of concentration. It also reduces the combinator field you currently need to put next to complex builds down to a couple custom compiled functional combinators you created.
McDuff
Fast Inserter
Fast Inserter
Posts: 236
Joined: Sun Jan 11, 2015 11:09 am
Contact:

Re: Combinator scalability and maintainability

Post by McDuff »

An idea I had which would work to achieve this would be to let combinators have more than one operation. I had suggested a box layout similar to visual scripting languages before, but factorio already has a suitable kind of layout in the Rail Stop.

Below is a diagram of how it might look.
Untitled Diagram.png
Untitled Diagram.png (31.48 KiB) Viewed 5524 times
User avatar
eradicator
Smart Inserter
Smart Inserter
Posts: 5207
Joined: Tue Jul 12, 2016 9:03 am
Contact:

Re: Combinator scalability and maintainability

Post by eradicator »

Delicon wrote: Tue Aug 18, 2020 8:11 am After you got the circuit working the way you wanted, you could burn/compile it into a single reusable/copyable entity. You could then use that compiled circuit in other more complex circuits and burn/compile those.
Isn't that exactly what vanilla blueprints do except for the "make it physically smaller part"? And isn't that "make it smaller" part exactly what blueprinting a Circutissimo does? So recursion is all that's missing?

Just trying to understand what exactly you say is missing here. I've made some drafts of my own for a menu-based multi-combinator. I just drafted it because it sounded interesting, but in the end decided it's not interesting enough to me to put in the hours to make it into a fully functional and polished mod. To put it in your words "It's not my passion". Also I have my doubts about how well a "menu based" approach fits into factorio.
Author of: Belt Planner, Hand Crank Generator, Screenshot Maker, /sudo and more.
Mod support languages: 日本語, Deutsch, English
My code in the post above is dedicated to the public domain under CC0.
User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12889
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Combinator scalability and maintainability

Post by ssilk »

McDuff wrote: Mon Sep 28, 2020 2:47 pm An idea I had which would work to achieve this would be to let combinators have more than one operation. I had suggested a box layout similar to visual scripting languages before, but factorio already has a suitable kind of layout in the Rail Stop.

Below is a diagram of how it might look.

Untitled Diagram.png
McDuff, I like this idea, but I see that as not depending to this subject, it’s in my eyes completely different. Can you please make an extra suggestion out of it with a bit more explanation behind? :)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Delicon
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 16, 2020 2:21 pm
Contact:

Re: Combinator scalability and maintainability

Post by Delicon »

eradicator wrote: Mon Sep 28, 2020 5:25 pm Isn't that exactly what vanilla blueprints do except for the "make it physically smaller part"? And isn't that "make it smaller" part exactly what blueprinting a Circutissimo does? So recursion is all that's missing?
Recursion is part of it, but it's more about abstracting. It's why modern programming languages are human readable. We see a function called UpdateSteamLevelIndicator(). You don't need to understand the what the variables a, b, c, d, e, f, and g are doing in that function to understand what role it plays. If I did look in the function, there may be other functions like ReadSteamLevel() and ConvertSteamValueToPercentage(). Easy to understand what's happening there.

Circuitissimo accomplishes the same thing by packaging complex native functionality into a smaller unit, no new functionality being added. That unit can then be duplicated and incorporated into other designs. From a simulation stand point, nothing would change, it would be the same as if the combinators were laid out across a large field. The problem with Circuitissimo is that it appears to be abandoned and is a bit of a kludge because of the limitations of mods. That is not a criticism of the mod maker. I am the same way, something sparks my interest, I work on it until I can solve it, then it bores me.

Combinators are the best feature of Factorio, I also believe the worst. Scaling a combinator design is a nightmare, just look at any of the insane things folks have posted, FactoRayO v2.0 and First functioning programmable computer! for example. I know these are extreme examples, but I am sure everyone has a design that they came back to, even after a week, and found it easier to spend the time remaking it with a new feature than figure out what's going on with the old design.
User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12889
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Combinator scalability and maintainability

Post by ssilk »

Yes, that’s true. Building with wires/combinators is one of the big issues in Factorio.

The main reason for that is, that the readability of that stuff is really bad.

- in narrow places it’s often unclear, where a wire goes in/out, because of all the overlapping with poles and other wires
- if there are more than two combinators, then it is really quickly quite complicated to find out the functionality
- you easily make errors, because you cannot test what you build, especially
— timings
— behavior in low power mode
— behavior with strange input
- you cannot get a simple overview of what a complex circuit is doing...

And a lot of smaller things more.

I’ve made a suggestion about that: viewtopic.php?f=6&t=41176 Improve Basic Circuit Overview

And I mention it here, because I think this two things (overview/simple reading and grouping of components) are tightly hanging together.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
User avatar
Optera
Smart Inserter
Smart Inserter
Posts: 2920
Joined: Sat Jun 11, 2016 6:41 am
Contact:

Re: Combinator scalability and maintainability

Post by Optera »

I kinda agree yet totally disagree since the examples presented are so simplistic to me.

A timer or clock only takes 1 CC and 1 DC.
Filtering only positive N signals takes 5 combinators, positive and negative takes 7: viewtopic.php?p=447487#p447487

What combinators need is the ability to edit them from map view including changing up wiring.
Currently you have two options: go there yourself or cut-paste it next to you, change things, cut-paste it back (and figure out you missed copying one power pole essential to the rewiring).
Last edited by Optera on Sun Mar 14, 2021 2:31 pm, edited 1 time in total.
User avatar
ptx0
Smart Inserter
Smart Inserter
Posts: 1507
Joined: Wed Jan 01, 2020 7:16 pm
Contact:

Re: Combinator scalability and maintainability

Post by ptx0 »

Delicon wrote: Tue Aug 18, 2020 8:11 am fCPU fundamentally changes circuits by adding a processor. Although that does help with scalability and maintainability, it breaks from the spirit of combinators.
that's what your suggestion does, too, imo.

don't let perfection stand in the way of good enough.
Delicon
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 16, 2020 2:21 pm
Contact:

Re: Combinator scalability and maintainability

Post by Delicon »

ptx0 wrote: Sun Mar 14, 2021 2:30 pm that's what your suggestion does, too, imo.
Fair enough. But this suggestion doesn't alter the mechanics of the game. It will not improve performance of your PC. No new feature would be added that you didn't have before. It would basically package groups of combinators into a single unit and allow them to be named. The only thing that would actually change is the amount of real estate the combinators consume.
Optera wrote: Sun Mar 14, 2021 2:25 pm I kinda agree yet totally disagree since the examples presented are so simplistic to me.

A timer or clock only takes 1 CC and 1 DC.
Filtering only positive N signals takes 5 combinators, positive and negative takes 7: viewtopic.php?p=447487#p447487
Individually, sure, they are simple. But in a grid of 10x10 combinators, it's not so easy to suss out meaning.
Last edited by Delicon on Mon Mar 15, 2021 6:56 am, edited 1 time in total.
User avatar
ptx0
Smart Inserter
Smart Inserter
Posts: 1507
Joined: Wed Jan 01, 2020 7:16 pm
Contact:

Re: Combinator scalability and maintainability

Post by ptx0 »

well, i don't want to be negative, but i don't think this idea will be implemented - ever.

however, we can see how close we can approximate it with mods and then you could open a mod interface request if something is not doable.

https://mods.factorio.com/mod/ImprovedCombinator

https://mods.factorio.com/mod/advanced-combinator
Delicon
Burner Inserter
Burner Inserter
Posts: 17
Joined: Sun Aug 16, 2020 2:21 pm
Contact:

Re: Combinator scalability and maintainability

Post by Delicon »

ptx0 wrote: Sun Mar 14, 2021 10:44 pm well, i don't want to be negative, but i don't think this idea will be implemented - ever.
You and I both, but we can hope something comes along to make it better.
Calid
Burner Inserter
Burner Inserter
Posts: 5
Joined: Sat Jan 20, 2024 2:49 pm
Contact:

Re: Combinator scalability and maintainability

Post by Calid »

I was going to suggest the same idea, thankfully, found this topic.

Factorio needs circuit abstraction.

Huge bump.
robot256
Filter Inserter
Filter Inserter
Posts: 874
Joined: Sun Mar 17, 2019 1:52 am
Contact:

Re: Combinator scalability and maintainability

Post by robot256 »

Combinators in 2.0 will have a "comment" field that is saved in blueprints. They also support operations on more than one signal at a time (not just with the wildcard signals). I'm really looking forward to documenting my spaghetti.

And we have mods like https://mods.factorio.com/mod/circuitissimo yet
DarkShadow44
Filter Inserter
Filter Inserter
Posts: 351
Joined: Thu Jun 01, 2017 12:05 pm
Contact:

Re: Combinator scalability and maintainability

Post by DarkShadow44 »

As mods go, I like Compact Circuits the most.
Post Reply

Return to “Ideas and Suggestions”