Remove or Miniaturize Circuit Networks
Moderator: ickputzdirwech
-
- Fast Inserter
- Posts: 122
- Joined: Fri Jun 17, 2016 8:17 pm
- Contact:
Re: Remove or Miniaturize Circuit Networks
My thoughts on the matter --
1. IMO, while space is technically unlimited, there is an opportunity cost to it. One has to clear the space, it takes time to walk by it, and if you want to build in the middle of something else, you need to move stuff. Given that I don't see a compelling need to keep the "circuits eat huge amounts of space" mechanic, I am of the opinion that just because the player can use a lot of space for this doesn't mean they should have to.
2. In/Out combinators should stay two tiles. While they occupy more space, the UI benefits of having an "in" square and an "out" square outweigh the costs. The factor of two miniaturization gain is not big enough to justify the decreased clarity.
3. From a technical performance standpoint, a black-box system could allow a kind of compile-down. Once the user is done with that box, the entirety of its logic could be reduced to some compiled logic in a single entity. I have no idea how big combinator logic has to get to start causing performance problems, but this is a potential way of heading that off.
4. The wire thing is a problem. Non-disruptive relocation would be a very nice thing.
5. One interesting way of implementing something like this would be a system inspired by prototyping breadboards. The "black box" consists of a large (infinite?) grid of columns, each of which is a network. Each column is of limited length (breadboards are 5-long; 10 might work for Factorio). This way, the player just places combinators (virtual ones? real ones?) into this grid, which effectively auto-wires them based on the column of the input and output ends. Wire can be used to jump between columns when necessary. This turns the normal wiring system (lots of work, the only challenge is not mis-clicking) into a routing puzzle. Like the full game, you can evade the puzzle by awkwardly connecting things around, or you can put some effort and thought into making an elegant design where things flow in order. Additionally, since the majority of the wiring is just based on relative position, big pieces of a design can be easily copied and/or moved without changing their behavior.
1. IMO, while space is technically unlimited, there is an opportunity cost to it. One has to clear the space, it takes time to walk by it, and if you want to build in the middle of something else, you need to move stuff. Given that I don't see a compelling need to keep the "circuits eat huge amounts of space" mechanic, I am of the opinion that just because the player can use a lot of space for this doesn't mean they should have to.
2. In/Out combinators should stay two tiles. While they occupy more space, the UI benefits of having an "in" square and an "out" square outweigh the costs. The factor of two miniaturization gain is not big enough to justify the decreased clarity.
3. From a technical performance standpoint, a black-box system could allow a kind of compile-down. Once the user is done with that box, the entirety of its logic could be reduced to some compiled logic in a single entity. I have no idea how big combinator logic has to get to start causing performance problems, but this is a potential way of heading that off.
4. The wire thing is a problem. Non-disruptive relocation would be a very nice thing.
5. One interesting way of implementing something like this would be a system inspired by prototyping breadboards. The "black box" consists of a large (infinite?) grid of columns, each of which is a network. Each column is of limited length (breadboards are 5-long; 10 might work for Factorio). This way, the player just places combinators (virtual ones? real ones?) into this grid, which effectively auto-wires them based on the column of the input and output ends. Wire can be used to jump between columns when necessary. This turns the normal wiring system (lots of work, the only challenge is not mis-clicking) into a routing puzzle. Like the full game, you can evade the puzzle by awkwardly connecting things around, or you can put some effort and thought into making an elegant design where things flow in order. Additionally, since the majority of the wiring is just based on relative position, big pieces of a design can be easily copied and/or moved without changing their behavior.
Re: Remove or Miniaturize Circuit Networks
I absolutely agree. Space needed for combinators is very much an issue, because in many cases you need them to be close to the things they are controlling. Even though often you could, at least theoretically, work around that by drawing wires along power poles, and then put the combinators away from the machines, this is just extremely inconvenient to setup. It also makes blueprinted designs more difficult (or even totally impractical if they are to be tileable).British_Petroleum wrote:Yes there is plenty of space to build giant combinator setups in your factory, however then if you want to build things either side of this setup, you then have a really long boring work, whereas if you can miniaturize your combinator setup, it is now a short walkssilk wrote:I think needed space is not an issue, cause we really have enough space to create big circuits.
Also, and I've said this before, it's aesthetically not quite pleasing to have a jumbled mess of combinators all over the place. They are not like inserters and belts, where you can make nice, OCD-compatible designs, that look symmetrical and move in nice patterns. Combinators, if looked at from the outside, are more or less a random chunk of meaningless symbols and wires. We should be able to put that into a box and out of sight.
Amen to that. It's the biggest quality of life issue with non-trivial combinator designs.Zebediah wrote:The wire thing is a problem. Non-disruptive relocation would be a very nice thing.
Oh yeah, that's a great suggestion! I'd love to have something like it.Zebediah wrote:One interesting way of implementing something like this would be a system inspired by prototyping breadboards. [...]
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick
-
- Filter Inserter
- Posts: 285
- Joined: Thu Jun 09, 2016 5:56 am
- Contact:
Re: Remove or Miniaturize Circuit Networks
Weird idea has just struck my head. What if we put all those circuits underground? So all combinators are hidden beneath with power poles used as connectors and special hotkey that shows that underground layer and allows editing it (some ghostly combinator contours may exist during Alt mode when normal above-ground mode is on). This way combinators will retain their dimensions and complexity, but they will not interfere with real estate around them.
Re: Remove or Miniaturize Circuit Networks
That approach seems a lot more difficult to implement than having a blackbox for circuits. If there was a precedent for having underground structures you might be onto something there, but I'm pretty sure they're not going to add underground structures to solve the combinator problem. It also makes no sense from a lore point of view (why are circuits, that are supposed to be tiny, going to be dug underground?).
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick
-
- Filter Inserter
- Posts: 285
- Joined: Thu Jun 09, 2016 5:56 am
- Contact:
Re: Remove or Miniaturize Circuit Networks
Actually it should be pretty easy to implement because technically structures may have overlapping bounding boxes, it's just a matter of rendering and user interface to switch those layers. With blackboxes instead it's a very hard implementation because a lot of logics moves from the chunk entities into that blackbox internals. Actually not moves, but copies because inter-blackbox connections would have to obey same rules as connections between sub-combinators inside the blackbox.
Re: Remove or Miniaturize Circuit Networks
Hm. Putting all the combinator and wiring stuff into an own game.surface is indeed a good idea, cause it solves some of the problems (I mentioned above) in one simple step.
For example: This viewtopic.php?f=80&t=18153 Information-Layers (for map and/or normal view)
is then just a switch from one surface to the other. No special type of view.
In that surface you can also be in good-mode, which means, you have no problems with walking/reaching. And much more of the current issues are then - puff - gone.
But game.surface is yet not ready for this: what's needed is, is the interaction between the surfaces; that you can connect the wires of the control-surface with the real entities in the world-surface. And the game-overview (what you see is what you play), is a problem.
For example: This viewtopic.php?f=80&t=18153 Information-Layers (for map and/or normal view)
is then just a switch from one surface to the other. No special type of view.
In that surface you can also be in good-mode, which means, you have no problems with walking/reaching. And much more of the current issues are then - puff - gone.
But game.surface is yet not ready for this: what's needed is, is the interaction between the surfaces; that you can connect the wires of the control-surface with the real entities in the world-surface. And the game-overview (what you see is what you play), is a problem.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: Remove or Miniaturize Circuit Networks
Well, Factorissimo does it for entire sub-factories. It should be really easy to apply the same principle to circuit boxes, going from Factorissimo, if you can route wires from/to the sub-surface.ssilk wrote:But game.surface is yet not ready for this: what's needed is, is the interaction between the surfaces; that you can connect the wires of the control-surface with the real entities in the world-surface. And the game-overview (what you see is what you play), is a problem.
So that would certainly be a step in the right direction, as it would provide a blackbox for circuits, but it still does not solve the quality of life issues with the combinators (refactoring, rewiring, less than optimal UI, lack of circuit elements).
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick
-
- Filter Inserter
- Posts: 285
- Joined: Thu Jun 09, 2016 5:56 am
- Contact:
Re: Remove or Miniaturize Circuit Networks
Surfacing is another solution, but with many problems like inter-surface connection, and more importantly matching them to each other geometrically, so you're not in totally virtual space. I meant more of a layer type of solution, e.g. like grass with concrete and rails on top. Just allow combinators to overlap anything except other combinators and power poles. Then it just comes to a question of rendering this or that type of objects.
Re: Remove or Miniaturize Circuit Networks
My biggest issue with complicated circuit contraptions is the wire mess. I would like a feature that would allow to lay wires in orthogonal directions and bunch them tightly, but yet distinguishable.
As for miniaturisation I like the idea of placing contraptions on another surface or in the area like the modular armor interface not just for the sake of miniaturisation, but for the sake of the order. I like how belts and rails interact with each other so you have to place them nicely with the minimum of intersections and conflicting poits. Wires are purely virtual and there are few ways to "brush" them nicely. Players tend to reduce the size of contraptions by placing elements very tightly together and creating the wire mess as a byproduct. So this hugely impact the ability to expalin what's going on to others and the quality of sharing suffers a lot. If the space wouldn't be a problem (in fact this is more a problem of moving across the contraption, providing electricity and connectings far away points) then the readability of those contraptions could be increased drastically.
examples
Also I modified wires' PNGs for myself in order to make them more visible by increasing their thikness and changing green to yellow which is more noticeable on the grass. I'm considering to change red to cyan or magenta for the same purpose. That would be nice by default.As for miniaturisation I like the idea of placing contraptions on another surface or in the area like the modular armor interface not just for the sake of miniaturisation, but for the sake of the order. I like how belts and rails interact with each other so you have to place them nicely with the minimum of intersections and conflicting poits. Wires are purely virtual and there are few ways to "brush" them nicely. Players tend to reduce the size of contraptions by placing elements very tightly together and creating the wire mess as a byproduct. So this hugely impact the ability to expalin what's going on to others and the quality of sharing suffers a lot. If the space wouldn't be a problem (in fact this is more a problem of moving across the contraption, providing electricity and connectings far away points) then the readability of those contraptions could be increased drastically.
Re: Remove or Miniaturize Circuit Networks
Can you post your PNGs? I know it's very easy to modify them but maybe you can simply post your files here for us.hitzu wrote:Also I modified wires' PNGs for myself in order to make them more visible by increasing their thikness and changing green to yellow which is more noticeable on the grass. I'm considering to change red to cyan or magenta for the same purpose.
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick
Re: Remove or Miniaturize Circuit Networks
Sure. They belongs to Factorio/data/core/graphics folder. Also I made a little mod for myself to emulate a wire bus as a proof of concept. Basing my poor modding skills it is really simple and is nothing, but a regular power pole, but it is a flat plate on the ground and the wires also lay on the ground therefore this makes less mess with overhangs. It has no supply area field but the maximum wire distance is set by 16 tiles — the half of a big power pole. It costs 5 iron plates and requires no technology. Unfortunately I don't know how to rotate it manually therefore sometime wires swap and cross each other. If someone is interested in further development, I can make better graphics, but nothing else, since my skills are very limited.siggboy wrote:Can you post your PNGs? I know it's very easy to modify them but maybe you can simply post your files here for us.
Re: Remove or Miniaturize Circuit Networks
Nice work.
@Harkonnen604 now imagine:
- The cables and poles you see here are just the blended-in layer of the ciruits-surface
- The cables are not hanging, they are in nice orthogonal layout.
- No power wires. Only circuits/cables. The power for the combinators comes from above, like now.
- One button/key-press and all the grass, trees etc. is gone and you see just the wires, connectors (=poles) and combinators, plus shadow-like all the devices, that can be connected.
- You can move around in good mode and do all kind of wiring-stuff.
- You don't need cables. All you need is your mouse to zip the cables out of the end of the poles or combinators.
@Harkonnen604 now imagine:
- The cables and poles you see here are just the blended-in layer of the ciruits-surface
- The cables are not hanging, they are in nice orthogonal layout.
- No power wires. Only circuits/cables. The power for the combinators comes from above, like now.
- One button/key-press and all the grass, trees etc. is gone and you see just the wires, connectors (=poles) and combinators, plus shadow-like all the devices, that can be connected.
- You can move around in good mode and do all kind of wiring-stuff.
- You don't need cables. All you need is your mouse to zip the cables out of the end of the poles or combinators.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: Remove or Miniaturize Circuit Networks
I don't get the magic with wire sprites. Making them even more thik gives a very bad result — the ends are "roaming" around while rotated and vertical wires disappear at all.
-
- Long Handed Inserter
- Posts: 57
- Joined: Tue Apr 05, 2016 11:54 am
- Contact:
Re: Remove or Miniaturize Circuit Networks
Too long, didn't read.
BTW, why don't miniaturize it. Its a good idea. It could be like the power armor, a distributor box, and you put the circuit network items in it.
BTW, why don't miniaturize it. Its a good idea. It could be like the power armor, a distributor box, and you put the circuit network items in it.
TheDagmaar Mining Corp.
-
- Fast Inserter
- Posts: 120
- Joined: Wed Aug 10, 2016 2:53 pm
- Contact:
Re: Remove or Miniaturize Circuit Networks
just give us units programmable on C or C++.
Just kidding, but that can be fun.
Just kidding, but that can be fun.
Re: Remove or Miniaturize Circuit Networks
Why kidding? Sounds like a great ideaafk2minute wrote:just give us units programmable on C or C++.
Just kidding, but that can be fun.
-
- Fast Inserter
- Posts: 120
- Joined: Wed Aug 10, 2016 2:53 pm
- Contact:
Re: Remove or Miniaturize Circuit Networks
too hard to implement...
But let me give you another idea - next gen logic elements that have functions similar to train stations (maybe some more operators, brackets to group them etc). Maybe some set/reset things, clocks, memory cells etc.
That is the step in right direction imo, seems that its not hard to implement but is nice, allows compact usage and is easy to setup.
Sorry if i repeat someone idea didnt read whole topic.
But let me give you another idea - next gen logic elements that have functions similar to train stations (maybe some more operators, brackets to group them etc). Maybe some set/reset things, clocks, memory cells etc.
That is the step in right direction imo, seems that its not hard to implement but is nice, allows compact usage and is easy to setup.
Sorry if i repeat someone idea didnt read whole topic.
-
- Fast Inserter
- Posts: 153
- Joined: Fri Jan 06, 2017 1:54 am
- Contact:
Re: Remove or Miniaturize Circuit Networks
Mod implementation idea:
"Combinator compiler"
- Make an entity "Black box" 1x1 size.
- When you enter it - go to different surface (alike Factorissimo)
- Build there combinators in any way described in this thread, or just the usual way with unlimited space
When you exit "Black box" mod does this:
- it creates invisible entites over "Black box"
- The entites are inherited from all combinators, but invisible, its' circuit connection point are all overlayed, so it's just one point for player, but in fact it's, say, 15 entites.
- It wires this invisible entities just the same way they was wired on other surface
- To store all the data to blueprint "black box" entity should be inherited from "Programmable speaker". Why? Because I've just tested that this unique entity can easily store at least 1 Mb string long in its "alarm_parameters.name" property. And this property survives through blueprinting.
Benefits:
- No signal transfer though surfaces needed => No lags, same perfomance as Vanilla
- In fact this is just a cosmetical mod because this invisible things behave all the same as Vanilla, except that they are invisible
"Combinator compiler"
- Make an entity "Black box" 1x1 size.
- When you enter it - go to different surface (alike Factorissimo)
- Build there combinators in any way described in this thread, or just the usual way with unlimited space
When you exit "Black box" mod does this:
- it creates invisible entites over "Black box"
- The entites are inherited from all combinators, but invisible, its' circuit connection point are all overlayed, so it's just one point for player, but in fact it's, say, 15 entites.
- It wires this invisible entities just the same way they was wired on other surface
- To store all the data to blueprint "black box" entity should be inherited from "Programmable speaker". Why? Because I've just tested that this unique entity can easily store at least 1 Mb string long in its "alarm_parameters.name" property. And this property survives through blueprinting.
Benefits:
- No signal transfer though surfaces needed => No lags, same perfomance as Vanilla
- In fact this is just a cosmetical mod because this invisible things behave all the same as Vanilla, except that they are invisible
-
- Long Handed Inserter
- Posts: 77
- Joined: Fri Dec 29, 2017 1:50 pm
- Contact:
Re: Remove or Miniaturize Circuit Networks
I think the best approach would be miniaturisation like Factoriossimo but for circuits so that you can have 1x1 building and inside there would be eg. 20x20 space for combinators - you could call it "microcontroller unit". And I also agree that combinators should be smaller and logic gates should be separated from other combinators but nobody seems to agree with me.
- olafthecat
- Filter Inserter
- Posts: 476
- Joined: Fri Jul 07, 2017 4:37 pm
Re: Remove or Miniaturize Circuit Networks
PLS don't necro
Gonna start playing again with 0.16 build.
That's all.
That's all.