Combinator scalability and maintainability
Posted: Sun Aug 16, 2020 5:07 pm
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:
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.
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
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.