One more Smart Furnace®

This board is to show, discuss and archive useful combinator- and logic-creations.
Smart triggering, counters and sensors, useful circuitry, switching as an art :), computers.
Please provide if possible always a blueprint of your creation.
XKnight
Filter Inserter
Filter Inserter
Posts: 329
Joined: Thu May 28, 2015 10:40 pm
Contact:

Re: One more Smart Furnace®

Post by XKnight » Wed Aug 31, 2016 11:18 pm

By the way, it looks like it is possible to control furnace block using 6 tiles instead of 7 (without constant combinator).
And this will make possible to fit power switch in 4-furnaces block, as a result furnace blocks might be activated in cascade way.

User avatar
MeduSalem
Smart Inserter
Smart Inserter
Posts: 1337
Joined: Sun Jun 08, 2014 8:13 pm
Contact:

Re: One more Smart Furnace®

Post by MeduSalem » Thu Sep 01, 2016 12:05 am

XKnight wrote:By the way, it looks like it is possible to control furnace block using 6 tiles instead of 7 (without constant combinator).
And this will make possible to fit power switch in 4-furnaces block, as a result furnace blocks might be activated in cascade way.
I'm already curious how this will turn out... because I can only think of one way to even make room for the 2x2 Power Switch inside the build... which would be using L-shape Chest/Inserter configurations... something like that (I did't connect the Power switches correctly... was just fooling around):
Smart Furnace 1.jpg
Smart Furnace 1.jpg (112.25 KiB) Viewed 2335 times
But I don't know how you'd manage to get the 3 required combinators in there... as you'd have only 4 tiles available for them.

Also with that you'd probably have problems keeping the furnaces synchronized within a block if you decide to partially switch off blocks within the same row... which is why I'm strongly thinking about making an entire row a single block. Would be less fine-grained, but better for controlling the power.

On top of that I don't even know if it is possible to get power in there without accidently activating anything you don't want to activate.

Maybe I'm just thinking too much inside the box again... :lol:

The more I think about the damn smart furnace stuff the more I'm annoyed that we can't use the Inserter filter signals themselves as Stack Size override. Would make everything a lot less f'd up. :roll:

XKnight
Filter Inserter
Filter Inserter
Posts: 329
Joined: Thu May 28, 2015 10:40 pm
Contact:

Re: One more Smart Furnace®

Post by XKnight » Fri Sep 02, 2016 8:12 pm

First of all, I've updated original post and there your can find answer on your question.
Current solution:
Image
MeduSalem wrote: I'm already curious how this will turn out... because I can only think of one way to even make room for the 2x2 Power Switch inside the build... which would be using L-shape Chest/Inserter configurations... something like that (I did't connect the Power switches correctly... was just fooling around):
Also, this solution is not applicable, because furnaces will be desyncronized (in first post I mentioned about desyncronization between top-down and down-top inserter's rotations, only left-right and right-left is synchronized).
Image
MeduSalem wrote: Also with that you'd probably have problems keeping the furnaces synchronized within a block if you decide to partially switch off blocks within the same row... which is why I'm strongly thinking about making an entire row a single block. Would be less fine-grained, but better for controlling the power.

On top of that I don't even know if it is possible to get power in there without accidently activating anything you don't want to activate.
Possible solution:
0) 4 x steel block, 2 x iron plates block, 2 x copper plates
1) calculate the best rectangle for 8 blocks: 3 x 3
2) switch blocks on:
Steel___Steel___Steel__Off
Steel___Iron____Iron___Off
Copper__Copper__Idle__Off <- last furnace block is necessary for previous row
Idle____Idle_____Idle___Off <- this row is necessary for previous row
Off____Off_____Off____Off
MeduSalem wrote: The more I think about the damn smart furnace stuff the more I'm annoyed that we can't use the Inserter filter signals themselves as Stack Size override. Would make everything a lot less f'd up. :roll:
In my opinion, this will make all things a very little easier, but most problems won't be affected.

User avatar
siggboy
Filter Inserter
Filter Inserter
Posts: 988
Joined: Tue Mar 29, 2016 11:47 am
Contact:

Re: One more Smart Furnace®

Post by siggboy » Sun Sep 04, 2016 2:02 pm

XKnight wrote:
MeduSalem wrote: The more I think about the damn smart furnace stuff the more I'm annoyed that we can't use the Inserter filter signals themselves as Stack Size override. Would make everything a lot less f'd up. :roll:
In my opinion, this will make all things a very little easier, but most problems won't be affected.
I came to the same conclusion when I thought about it a little the other day. It would make it a little easier to put the required amounts into the furnaces, but you'd still have to run an accounting and synchronization, so most of the hard problems that XKnight's setups solves so well would still need to be solved.

Maybe what would help is if the furnaces could also tell you about their current input buffer, then you could get rid off a lot of the external accounting in the controller circuit.

I guess it will be very difficult to build a better Smart Furnace solution than this one. It's really very close to perfect. It's also something that only very few players are able to design and implement.

In my opinion a smart furnace should not be as difficult to implement as it currently is. To make it reasonably easy, the furnaces need multiple input buffers and the ability to change the smelting recipe from the circuit network. That would make an actually optimal solution quite easy to implement for anyone.
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick

Zonk
Long Handed Inserter
Long Handed Inserter
Posts: 53
Joined: Tue Jul 12, 2016 12:05 pm
Contact:

Re: One more Smart Furnace®

Post by Zonk » Mon Sep 05, 2016 7:03 pm

The "Blueprint, controller" gives me a error on importing with foreman and killrogs

XKnight
Filter Inserter
Filter Inserter
Posts: 329
Joined: Thu May 28, 2015 10:40 pm
Contact:

Re: One more Smart Furnace®

Post by XKnight » Mon Sep 05, 2016 7:51 pm

Zonk wrote:The "Blueprint, controller" gives me a error on importing with foreman and killrogs
Perhaps, there are some problems with "classic" blueprint string mod in 0.14 (I suppose you are using this version).
Anyway, I've updated blueprint strings for "Killkrog's Blueprint Manager".

Zonk
Long Handed Inserter
Long Handed Inserter
Posts: 53
Joined: Tue Jul 12, 2016 12:05 pm
Contact:

Re: One more Smart Furnace®

Post by Zonk » Tue Sep 06, 2016 5:32 pm

Yeah using 14.x iam trying it as soon as iam home thank you

XKnight
Filter Inserter
Filter Inserter
Posts: 329
Joined: Thu May 28, 2015 10:40 pm
Contact:

Re: One more Smart Furnace®

Post by XKnight » Thu Sep 08, 2016 10:12 pm

Probably this is the last post before belt-based version.

The previous furnace block uses 3 combinators per furnace block: first to send input chests content, second to receive item type for smelting, third to send information about inserted items. I've noticed that first and second combinator has exactly the same configuration and this means they can be combined into one. After two hours of playing with bitwise magic these combinators were successfully combined, as a result new combinator is used simultaneously to decode orders from controller and to send input chests content back to controller.

Also, because this combining operation was quite dangerous I decided to perform heavy testing of this smart furnace system.
Testing system
During this testing I found two different bugs in Factorio which may cause furnace block desynchronization:
- in special cases sleeping inserter requires additional tick to wake up if its input/output chest (or furnace) is located in another chunk (this may happen if furnace grid is quite big).
- robot-based delivery may very-very rarely wake-up sleeping inserter and this unexpected awakening may reduce sleeping time by 1 tick.

Because I have a strong feeling that these bugs won't be fixed in the nearest time (and maybe they will never be fixed) I've prepared workaround for these issues. To solve problem with different chunks we have to be carefull with left-upper furnace block position, this means first block should be precisely aligned with chunk grid and only in this case all blocks won't have cross-chunk inserting. For the second problem solution is quite trivial: every second tick we override inserter's filter with wooden-chest and this doesn't allow inserter to sleep at all.

After that heavy testing was successfully completed and in 1 hour there were no descynronization at all.
Images
Also, I've made some quite interesting calculations:
Furnace: +20% productivity +370% speed
stone/iron/copper plate: 3.5 sec / (2 * 4.7 speed) = 0.3723 sec, 1.2 * 60 sec / 1.8617 = 193.3714 items per minute from one furnace.
steel: 17.5 sec / (2 * 4.7 speed) = 1.8617 sec, 1.2 * 60 sec / 1.8617 = 38.6742 items per minute from one furnace.
According to production statistic:
- 8.8k/m stone + 8.5k/m iron plate + 7.0k/m copper plate = 24.3k/m => 24.3k/193.3714 = 125.66 furnaces.
- 2.0k/m steel => 2.0k/38.6742 = 51.71 furnaces.
Total: 125.66 + 51.71 = 177.37 furnaces.
Precision: +-50 steel per minute => 50/38.6742 = 1.2928; +-3*50 stone/iron/copper plate per minute=> 3*50/193.3714 = 0.7757
(1.2928+0.7757)/180 = 1.14%
As you can see, even though we have changed requested items each 150-th tick we still have 177.37/180 = 98.5+-1.14% max theoretical efficiency of this system.

P.S. blueprints, update of the initial post, bug reports, and so on will be prepared only in a few days, because I will be in trip.

User avatar
siggboy
Filter Inserter
Filter Inserter
Posts: 988
Joined: Tue Mar 29, 2016 11:47 am
Contact:

Re: One more Smart Furnace®

Post by siggboy » Sun Sep 11, 2016 11:39 pm

XKnight wrote:Probably this is the last post before belt-based version.
I really think you have outdone yourself with this design. Kudos for going all the way just to shave off one combinator at the furnace columns. All the research and analysis, it's very impressive.

Maybe, if I find the motivation, I will make a full schematic diagram of the circuit and try to write an in-depth explanation, when you have posted the blueprints.

@ssilk: I think this deserves a sticky. It's outstanding.
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick

ElPresidente
Burner Inserter
Burner Inserter
Posts: 7
Joined: Mon Apr 25, 2016 12:29 am
Contact:

Re: One more Smart Furnace®

Post by ElPresidente » Thu Sep 15, 2016 3:42 am

Sorry guys, can you please explain this to me?

I cant quite understand the "smart" part of the setup.

I have used the smart furnace setup pre 1.13 and i was able to set max number of items in the logistic network.
So for example i had 40K set for all. One that was lowest was being smelted until either max 40K or other item was now lower.

Can I set similar thresholds here? I can only see that desired items will set some blocks to smelt different types of items but I cant work out how to set network wide thresholds to either stop or switch automatically.
I am sure its all very simple but its doing my head in.

Thank you!

Acarin
Long Handed Inserter
Long Handed Inserter
Posts: 94
Joined: Thu Sep 01, 2016 3:58 pm
Contact:

Re: One more Smart Furnace®

Post by Acarin » Fri Sep 16, 2016 2:41 pm

The first(!) major question that I have is "how do I identify a chunk boundary?", so that I can even begin to build be of these :-)

XKnight
Filter Inserter
Filter Inserter
Posts: 329
Joined: Thu May 28, 2015 10:40 pm
Contact:

Re: One more Smart Furnace®

Post by XKnight » Fri Sep 16, 2016 10:55 pm

ElPresidente wrote: I have used the smart furnace setup pre 1.13 and i was able to set max number of items in the logistic network.
So for example i had 40K set for all. One that was lowest was being smelted until either max 40K or other item was now lower.

Can I set similar thresholds here? I can only see that desired items will set some blocks to smelt different types of items but I cant work out how to set network wide thresholds to either stop or switch automatically.
I am sure its all very simple but its doing my head in.
I would say the answer on your question is a third level controller (where first one is used to immediately control furnace blocks, and second one is used to bind "desired items" to furnace blocks). So, you have to create your own logic which will convert information about needed items into "desired items".
For example: you have 1000/2000 iron plates and 500/1000 copper plates.
Possible different third level controllers:
- because we need 1000 iron plates and this value is bigger than 500 missed copper plates, we have to assign all furnace blocks to iron plates
- assign all furnace blocks in proportion "missed iron plates : missed copper plates" = 1000 : 500 = 2 : 1 (2/3 furnace blocks will be assigned to iron plates, and 1/3 to copper plates)
- use relative values for proportion = "missed iron plates / total iron plates : missed copper plates / total copper plates" = 0.5 : 0.5 = 1 : 1
- and many other controllers ...
Maybe this will help you (proportion of different items) viewtopic.php?p=185070#p185070

So the answer on your question: yes, it is possible, but this is a third level user-defined logic and you have to implement it according to your own preferences.
Acarin wrote:The first(!) major question that I have is "how do I identify a chunk boundary?", so that I can even begin to build be of these :-)
I am still working on that (honestly, not very productive due to lack of time), but at this moment information about chunk boundaries won't help you at all. The reason of this delay is one critical explanation from devs that turned everything upside down, and I am still rethinking the entire game.

P.S. Shift+Space shows chunk boundaries and pause the game

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 10469
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: One more Smart Furnace®

Post by ssilk » Sat Sep 17, 2016 11:15 am

Acarin wrote:The first(!) major question that I have is "how do I identify a chunk boundary?", so that I can even begin to build be of these :-)
Chunk boundaries can be seen if you switch on the grid in debug-mode (F4/F5-keys) or use pause (SHIFT-Space).
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

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

Re: One more Smart Furnace®

Post by mrvn » Thu Sep 22, 2016 12:11 pm

MeduSalem wrote:
XKnight wrote:Seems that I've missed the most obvious thing: instead of using 8 tiles per furnace (3 beacon + 3 furnace + 2 chest) I should use combined chests and this will give 6 tiles per furnace. Don't even understand why I did this thing for belt-based solution and forgot about robot-based.
Combined chests... as in one chest shared by two furnaces or something like that?

How would that look like... because I can't think of a way to make that work out of the box now.


[edit] Or wait... I might have figured it out, but I'd still like to see how you did it...
Anyone else wondering? I think the idea is to just mirror each other row horizontally and then move them closer together so the chests overlap (and become the same chest).

Wouldn't that also mean you use one row of beacons for 2 rows of furnaces?

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

Re: One more Smart Furnace®

Post by mrvn » Thu Sep 22, 2016 12:20 pm

MeduSalem wrote:
XKnight wrote:Nope, sorry :roll:. At first I had to check my assumptions and then post on the forum - it is my fault, somehow I forgot about electric poles and 3x3 beacon range. But, after trying this broken approach I managed to build smaller furnace block. Already updated original post.
Well I expected that solution... After fiddling around a bit myself I also got the idea that one could place the Furnaces in a zig-zag pattern... which then would allow the sharing of a chest by two assemblers.
If you set up the furnaces in zig-zag then you can put each chest in the middle of the free square and use it by 3 furnaces, not just two. In each row you have one request chest, one provider chest and one empty square in a repeating pattern. The other row is offset so each furnace has both a request and provider chest.

Can the empty square be used to the control logic or an extra beacon?

User avatar
MeduSalem
Smart Inserter
Smart Inserter
Posts: 1337
Joined: Sun Jun 08, 2014 8:13 pm
Contact:

Re: One more Smart Furnace®

Post by MeduSalem » Tue Oct 18, 2016 10:43 pm

A long time since I have last replied to the thread, sorry for that... I had some real life issues to deal with the past weeks and also the general burnout of playing Factorio... so I had to distract myself with other games.
XKnight wrote:Probably this is the last post before belt-based version.
Whatever happened to the belt-based version? Did it get buried somewhere and I just overlooked it?
siggboy wrote:
XKnight wrote:
MeduSalem wrote: The more I think about the damn smart furnace stuff the more I'm annoyed that we can't use the Inserter filter signals themselves as Stack Size override. Would make everything a lot less f'd up. :roll:
In my opinion, this will make all things a very little easier, but most problems won't be affected.
I came to the same conclusion when I thought about it a little the other day. It would make it a little easier to put the required amounts into the furnaces, but you'd still have to run an accounting and synchronization, so most of the hard problems that XKnight's setups solves so well would still need to be solved.

Maybe what would help is if the furnaces could also tell you about their current input buffer, then you could get rid off a lot of the external accounting in the controller circuit.

I guess it will be very difficult to build a better Smart Furnace solution than this one. It's really very close to perfect. It's also something that only very few players are able to design and implement.

In my opinion a smart furnace should not be as difficult to implement as it currently is. To make it reasonably easy, the furnaces need multiple input buffers and the ability to change the smelting recipe from the circuit network. That would make an actually optimal solution quite easy to implement for anyone.
Well I thought several weeks about it and I still think that it would make things a lot easier if the Inserter Stacksize would be configurable over a circuit network signal. Because then you wouldn't even have to keep track of how much stuff you have already inputted into a furnace, since you can't overcommit a recipe in a furnace with the wrong amount of resources in the first place. If a furnace should do Steel Plates then the Stack Inserter would get the circuit network signal Iron Plates=10 ... and that would ensure that the Inserter would only grab 10 Iron plates in each turn no matter if a Stack Inserter could actually grab 13 items in one go. Same for Stone... The Stack Inserter would get the signal Stone=12 then 12 Stone is what it grabs in each turn. For Iron/Copper it could grab the full 13 because it wouldn't leave any residuals no matter the stack size.

That would basically remove the need for all the logic that keeps track of how many resources there are in the furnaces in each block, since you would never have to deal with residuals since there are none.

The only other thing you'd have to check upon is if there is actually really at least the specified amount of resources in the Requester chest and if not then just delay the inserter signal until there is... and that doesn't have to be done remotely with a central controller, that can be done locally on a per furnace/block basis.

All that would be left to do for the central controller is just determining the demand for each resource (as coming from your factory) in proportion to the total demand and then use that information directly to assign entire furnace rows (or smaller blocks but it wouldn't matter since that's just fine graining to deal better with proportions) to specific resources. It wouldn't matter if the furnaces aren't finished with the current recipe yet when the controller switches a furnace row to do a different resource... because it will just finish off whatever it is doing and the inserter would pick the new resource after that if the circuit signal is still present.

That approach wouldn't have to deal with any synchronization problems at all because it can perfectly work asynchronous as well since it doesn't have to be count-perfect and still have pretty much the same result. So it would just get rid of all the nasty and ugly edge cases and special cases that all have to be taken into account in XKnight's approach due to how count-perfect it has to be. I mean if you have to take chunk borders into account to make something work that's just where I draw the line. XKnight's implementation is basically like a high precision weapon that starts choking if there's only one sandcorn inside... You could never take it into a muddy swamp. The narrow range in which it is still working is just way too stingy for my personal taste. One tiny error and I would spend a day bug hunting because it's hard to figure out why something isn't working the way it should.

So using configurable Inserter stacksizes would be basically the easy and straight-forward way Smart Furnaces worked before the 0.13 stack size change ruined everything and before people became obsessed with making everything overly complex so that they only work under a very strict set of rules. I mean yeah, XKnight's implementation is awesome and I didn't think it was possible given the circumstances, but there are only like 5-10 people (If it even is that many) on the entire forum who could possibly dig into what he did there and that's indicating that it's way too complex for most people and for general usage scenarios.



That said, you have a point siggboy... with Smart Assemblers where a recipe could be changed with a signal from the circuit network a configurable Stack Size wouldn't be enough to deal with the problem... due to the way most recipes require more than one resource. In that case an internal resource buffer multiple recipes can share would be required as well to do it in an easier fashion.
XKnight's brute force method of overcoming residuals by counting until the amount matches up again wouldn't work for Smart Assemblers because recipes require all kinds of different amounts for each resource and you'd simply never match it all up correctly because you'd have to know the least common multiple FOR ALL resources combined a recipe requires and that for each recipe the assembler could possibly switch to... which would be just ridiculously complex to implement.
But for Smart Furnaces a configurable stack size would be pretty much enough to deal with the problems due to how it only requires 1 input resource for each recipe.
mrvn wrote:If you set up the furnaces in zig-zag then you can put each chest in the middle of the free square and use it by 3 furnaces, not just two. In each row you have one request chest, one provider chest and one empty square in a repeating pattern. The other row is offset so each furnace has both a request and provider chest.

Can the empty square be used to the control logic or an extra beacon?
I also found the solution where you could use the same chest by 3 furnaces, but that would mean that furnaces become interlinked with one another in a strange way where it just doesn't result in a self-contained, repeating pattern, which is basically required for XKnight's block logic.

User avatar
hansinator
Fast Inserter
Fast Inserter
Posts: 160
Joined: Sat Sep 10, 2016 10:42 pm
Contact:

Re: One more Smart Furnace®

Post by hansinator » Tue Nov 01, 2016 6:19 pm

MeduSalem wrote:A long time since I have last replied to the thread, sorry for that... I had some real life issues to deal with the past weeks and also the general burnout of playing Factorio... so I had to distract myself with other games.
XKnight wrote:Probably this is the last post before belt-based version.
Whatever happened to the belt-based version? Did it get buried somewhere and I just overlooked it?
I'm waiting for it, too. In the meantime I have taken up the task myself.
MeduSalem wrote:
siggboy wrote:
XKnight wrote:
MeduSalem wrote: The more I think about the damn smart furnace stuff the more I'm annoyed that we can't use the Inserter filter signals themselves as Stack Size override. Would make everything a lot less f'd up. :roll:
In my opinion, this will make all things a very little easier, but most problems won't be affected.
I came to the same conclusion when I thought about it a little the other day. It would make it a little easier to put the required amounts into the furnaces, but you'd still have to run an accounting and synchronization, so most of the hard problems that XKnight's setups solves so well would still need to be solved.

Maybe what would help is if the furnaces could also tell you about their current input buffer, then you could get rid off a lot of the external accounting in the controller circuit.

I guess it will be very difficult to build a better Smart Furnace solution than this one. It's really very close to perfect. It's also something that only very few players are able to design and implement.

In my opinion a smart furnace should not be as difficult to implement as it currently is. To make it reasonably easy, the furnaces need multiple input buffers and the ability to change the smelting recipe from the circuit network. That would make an actually optimal solution quite easy to implement for anyone.
Well I thought several weeks about it and I still think that it would make things a lot easier if the Inserter Stacksize would be configurable over a circuit network signal. Because then you wouldn't even have to keep track of how much stuff you have already inputted into a furnace, since you can't overcommit a recipe in a furnace with the wrong amount of resources in the first place. If a furnace should do Steel Plates then the Stack Inserter would get the circuit network signal Iron Plates=10 ... and that would ensure that the Inserter would only grab 10 Iron plates in each turn no matter if a Stack Inserter could actually grab 13 items in one go. Same for Stone... The Stack Inserter would get the signal Stone=12 then 12 Stone is what it grabs in each turn. For Iron/Copper it could grab the full 13 because it wouldn't leave any residuals no matter the stack size.
I agree, so I made a contraption that will let you set the stack size when picking up from belts using just one constant combinator:
viewtopic.php?f=193&t=35380
MeduSalem wrote:That would basically remove the need for all the logic that keeps track of how many resources there are in the furnaces in each block, since you would never have to deal with residuals since there are none.
No, because if you limit the stack size there is no guarantee that the inserter won't pick up less items if there are not enough to pick up within time. You still must account for this or else the smart furnace will stall at some point.
MeduSalem wrote:That approach wouldn't have to deal with any synchronization problems at all because it can perfectly work asynchronous as well since it doesn't have to be count-perfect and still have pretty much the same result. So it would just get rid of all the nasty and ugly edge cases and special cases that all have to be taken into account in XKnight's approach due to how count-perfect it has to be. I mean if you have to take chunk borders into account to make something work that's just where I draw the line. XKnight's implementation is basically like a high precision weapon that starts choking if there's only one sandcorn inside... You could never take it into a muddy swamp. The narrow range in which it is still working is just way too stingy for my personal taste. One tiny error and I would spend a day bug hunting because it's hard to figure out why something isn't working the way it should.
If you think this way you should stop using any eletroncics that containts microchips ;) Most of the technology we use today somehow fits into your description. However, we still use such complex things because all complexity is contained within small modules that have a clean interface and don't expose this complexity to the outside world. If the circuit or blueprint always works and has a clean interface then you don't need to care about its complexity until you want to fiddle with the system. XKnights smart furnace for example just works and anyone can use it without completely understanding why it works. It seems to be pretty failure proof so no debugging is necessary.

User avatar
MeduSalem
Smart Inserter
Smart Inserter
Posts: 1337
Joined: Sun Jun 08, 2014 8:13 pm
Contact:

Re: One more Smart Furnace®

Post by MeduSalem » Tue Nov 01, 2016 9:29 pm

hansinator wrote:
MeduSalem wrote:That would basically remove the need for all the logic that keeps track of how many resources there are in the furnaces in each block, since you would never have to deal with residuals since there are none.
No, because if you limit the stack size there is no guarantee that the inserter won't pick up less items if there are not enough to pick up within time. You still must account for this or else the smart furnace will stall at some point.
I wrote exactly that in my previous post only one line after the line you quoted:
MeduSalem wrote:The only other thing you'd have to check upon is if there is actually really at least the specified amount of resources in the Requester chest and if not then just delay the inserter signal until there is... and that doesn't have to be done remotely with a central controller, that can be done locally on a per furnace/block basis.
Basically the check can be done with one combinator per Requester chest or so.


hansinator wrote:If you think this way you should stop using any eletroncics that containts microchips ;) Most of the technology we use today somehow fits into your description. However, we still use such complex things because all complexity is contained within small modules that have a clean interface and don't expose this complexity to the outside world. If the circuit or blueprint always works and has a clean interface then you don't need to care about its complexity until you want to fiddle with the system. XKnights smart furnace for example just works and anyone can use it without completely understanding why it works. It seems to be pretty failure proof so no debugging is necessary.
Factorio is a game. That's why there is a limit on how much fun it is to go on a bughunt in ridiculously complex contraptions. Or at least there is a limit for me. If I don't even understand what half the combinators are actually doing and why they are necessary then how am I supposed to find or fix bugs when they happen? I'm sure Xknight tested everything out, but strange things still may happen in weird circumstances like damaging some part of your factory or if you accidently connect a wire wrong. That's why I NEVER use any circuit network contraptions I don't fully understand or where I think that their complexity defeats their purpose. XKnight's Smart Furnace is an example where both is true as I don't fully understand certain circuit logic and I find it too complex for its own good. It surely makes maintenance of your factory a lot harder than it needs to be.

I ain't got the time and knowledge to dig deep into the black magic some people come up with to solve certain problems. I know that some people on the board basically nerdgasm about the possibilities the circuit network offers, but I'm not playing Factorio only for the Circuit Network. So I just draw the line at a certain degree of complexity where I think "nah, not worth the trouble" because it's not fun or practicable to me anymore. Let's not forget that the game is about factory building and logistics and not about electronic circuit engineering. That's why I just pick easy and practicable solutions over overly engineered ones. It's the reason behind why I'm currently staying with Iron/Copper Ore only in Smartfurnace and have dedicated setups for Steel/Stone because the hurdles the game throws in your way to overcome the Stack Size problem is just out of my league of enjoyment.

I can only explain it as such that I feel XNight's approach to be a whack-a-mole-game. For every problem that he fixed several new ones showed up that had to be considered as well. It's like a hydra where you chop one head off and 3 new ones regrow. I hate that kind of contraptions... because they basically only show that the game is lacking some central feature and the only way to overcome the problem is starting to game the system itself by abusing all kinds of weird tricks and weird side effects the progammers didn't think about.

You see, back before the Stack Size change... Smart Furnaces were straightforward and easy. They didn't even need a controller or anything alike to work. The only thing you had to do was to check if there are 5 Iron Plates in the chest for Steel for example. That's why I started using them... they didn't require one to be an expert in software/hardware engineering to understand how and why everything works. And as much respect as I have for XKnight's contraption I would never really use it in a playthrough because it goes far beyond that in complexity due how it requires a shitton of combinators to achieve the same count perfect behaviour that was possible before 0.13 ruined everything.

Also I don't like Copy&Pasting blueprint strings from the board because... what's the point in playing the game then if I don't come up with my own solutions. It's like the people who watch other people play games on Twitch or Youtube... what's the point in that? Rather play the game myself then... It's something I can't wrap my head around, but maybe that's because I'm getting too old already. I can understand taking inspiration from others but in the end I want to play myself to feel a sense of accomplishment. If I just copy&paste a solution to a challenge the game offers then I feel like some of my fun is spoiled/taken away.

kiguigui
Manual Inserter
Manual Inserter
Posts: 2
Joined: Sat Nov 05, 2016 10:26 pm
Contact:

Re: One more Smart Furnace®

Post by kiguigui » Sat Nov 05, 2016 10:30 pm

Hey Dude!,

great set-up! :) but it seems, the blueprint string of the controller is broken. Killrogs crashes the actual session an blueprint string says the string is not a valid format. Can you refresh the blueprint string in your posts? :P

User avatar
siggboy
Filter Inserter
Filter Inserter
Posts: 988
Joined: Tue Mar 29, 2016 11:47 am
Contact:

Re: One more Smart Furnace®

Post by siggboy » Tue Nov 08, 2016 1:26 am

MeduSalem wrote:If I don't even understand what half the combinators are actually doing and why they are necessary then how am I supposed to find or fix bugs when they happen? I'm sure Xknight tested everything out, but strange things still may happen in weird circumstances like damaging some part of your factory or if you accidently connect a wire wrong.
I don't think that this Smart Furnace is supposed to be a "practical" solution for general use, whatever that even means in a game such as this.

However, it is at the same time, an incredibly clever combinator setup that does solve an actual problem; as opposed to other, equally clever designs that are just toy designs (tetris game, very fancy digital displays, general purpose computers unless you actually use them to control the factory, and so on).

There are not many circuits that meet that criterion.

It's not relevant if it's easy to understand or easy to break if you don't know how to set it up, unless it is explicitely made to be used as a black-box. XKnight has never claimed that, he took the problem and solved it in the most complete way possible, for his own enjoyment, and then left it there.
Also I don't like Copy&Pasting blueprint strings from the board because... what's the point in playing the game then if I don't come up with my own solutions.
If the blueprint is a start, and then you improve on the design that you've copied, then I see absolutely nothing wrong with it. The game gives you enough opportunities to do just that.

Of course, if the original design is so complex that you could not possibly wrap your head around it, then simply using it without actually understanding it is not really satisfying at all -- and for much the same reason as you I wouldn't use such designs in my maps, unless I actually reverse engineered them to my satisfaction.

Also, currently the game is not constrained enough that it actually requires most of these clever setups. A "perfect" Smart Furnace is not required to run a mega-base for example, and neither is a train controller like the one that I have built.

These setups are "toys" that you can only really enjoy if you are deeply involved in building them, which would maybe not require that you design them yourself, but at least you need to understand them in detail.

Factorio would have to contain a lot more constrained, very specific goals in order to warrant high-end solutions. What I'm thinking of are things like extremely limited space (e.g. the "Tight Spot" scenario or a single Factorissimo building), or very costly resources that cannot possibly go to waste and so on.

In the current game, "good enough" does not even have to be very "good". The only goal that the game has (build rocket) is too easy to achieve, and most of the coded achievements also do not really require a lot of skill.

Even mega bases are a lot more reliant on organizational skills, discipline and stamina than on an ability to invent very complicated stuff.

Let me finish by saying that not everybody thinks like you. Quite a few people took my train controller and were more than happy when they made it work on their maps, and they never even asked for in-depth explanations in order to understand the circuit. That would not have worked for me, but apparently not everybody thinks like we do.
Somebody even asked why I don't turn the thing into a mod, basically solving the problem in a "cheap" way (that would be possible for a Smart Furnace, too, I guess).
It's like the people who watch other people play games on Twitch or Youtube... what's the point in that?
Two reasons, mainly:

1. Learn to become better at a game; it's very useful to watch players who are good at Dota, Heroes of the Storm, League of Legends, Hearthstone and so on. Many of these games are way too difficult to become really good at them without some guidance (unless you're a natural talent or a pro who spends most of your time in the game, and even the pros have teachers who help them improve).

2. Pure entertainment; good commentary and a personality are required on the part of the streamer/YouTuber in this case, of course. The game can become quite a background activity in some cases.

It could also be compared to watch any sport, really. I like to watch Snooker and Tennis, and I'm not proficient in any of these. It's not that different with competitive computer games ("e-sports").
Last edited by siggboy on Tue Nov 08, 2016 3:26 am, edited 4 times in total.
Is your railroad worrying you? Doctor T-Junction recommends: Smart, dynamic train deliveries with combinator Magick

Post Reply

Return to “Combinator Creations”

Who is online

Users browsing this forum: No registered users