Page 1 of 8

Ability to craft lower quality with higher quality

Posted: Wed Oct 23, 2024 9:48 am
by husnikadam
IMHO it should be possible to craft lower quality items with partially higher quality items.

Otherwise there is no automated use of higher quality items, unless you want to produce like quality science with the whole production chain having multiple quality tier recipe assemblers.

As every production chain which spits out quality items as a byproduct, will eventually clog as quality items buffer get full. So I can neither set up dedicated quality items production (without recyclers), nor use quality in main production and filter out quality byproducts without eventually clogging the system.

My suggestion is, that assemblers should accept any higher quality items for given recipe, (f.e. craft normal green chip using uncommon wire and normal iron). For this to work, recipes would need to accept different qualities of given ingredient at the same craft (f.e. 2 normal + 1 uncommon wire for green chip). I think it should work in automated assemblers, and shouldn't in manual crafting as you can't hand craft higher quality anyway.
Assemblers would need to be able to accept items of different qualities in the same input slot. I think the slot should display the total number of items + highest tier of some of the items.
Also, ctrl clicking an inventory should move all same quality infredients into the assemblers but not the higher quality ingredients. That should be possible only by dragging higher tier ingredients into an assembler

I hope my thoughts are somewhat clear. Otherwise, please provide suggestions, how to use quality earlygame efficiently without wasting chests of low quality products

Why is mixed quallity crafting not possible?

Posted: Wed Oct 23, 2024 1:19 pm
by Phoenixia
I might just be inexperienced but the quality early on feels a bit of a time sink that's not worth the time (without the recycler).
But the main pain point is that I can't craft items with mixed quality, so I am to beg the question, why not?

Mixed quality crafting could work as follows:

All rare: At least rare or better
2 rare, 1 uncommon: Uncommon or better ( Increased chance of rare weighted 2:1 )
3 legendary, 1 normal: Normal or better ( Increased chance of legendary weighted 3:1 )

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 23, 2024 5:03 pm
by Koub
[Koub] Merged into the existing suggestion to add the possibility to craft lower tiers products with higher quality components.

Re: Ability to craft lower quality with higher quality

Posted: Thu Oct 24, 2024 7:23 am
by VertebreakHER
Initially when I first researched quality modules and started putting them in machines I thought this is more or less how it would work, based on the word of FFF #375 and because I naturally assumed it would work in an intuitive way. I was very excited to see if placing them very early in a production chain (in iron and copper plate smelters) would seed a quality increase throughout various end products, but was disappointment to find out they simply clogged up existing setups.

The only viable ways to use quality early game are by making entire separate branches of production dedicated to each quality tier, discovering a way to control the recipe of assemblers through circuits and adding that to every single assembler, or using it only in end products. For as potentially contentious as the random element is, I would think it should allow you to leverage that for very lucrative results. But realistically until you get recyclers it feels more like a boring loot level roll, and rather than recyclers feeling like a clever way to exploit the system they're the only way to exploit the system.

My first thought was that there should be an "Any Quality" recipe setting that allows a machine to accept any level of quality, and determine the quality of the output based on the mix. But I like the suggestion of accepting a higher tier of quality for lower settings much more as it offers more control.
I think "Accept Higher Quality" should be a toggle alongside the recipe's current quality setting (possibly on by default?) so that players can keep the current heavily restricted input for setups designed to sort through quality.

There are two ways to handle mixed quality in recipes that I believe could be implemented with fair results. (It goes without saying that if every input has the same quality level, that will carry over to the output as expected.)
  • Each level of quality improves the chance of the output having a higher quality (the highest possible output being the highest quality item in the input.)
  • A machine will always output the lowest level of quality in the input, effectively wasting higher quality.
Option one is makes placing quality modules at early intermediaries more viable and "fair", but determining the quality level chance could perhaps be less performant?
Option two makes it much less likely for early intermediaries with high quality to produce useful results further down a production chain, its a lot more brutal and makes the change being proposed less viable in practice as you'd need much better luck to get a better end product. But it may also be easier to implement.

Personally, option one seems like the most ideal of the two I proposed. I am probably over-blowing any concerns of performance and difficult implementation and it would introduce much more satisfying results for players, especially since it plays nicer with using additional quality modules at mid-points in the production chain to help your chances.

I don't believe anything suggested here would be particularly overpowered as creating entire setups for managing quality or using recyclers will still be more consistent and therefore more powerful in contrast to quality's innate inconsistency. But it would definitely make quality modules feel like less trouble to work with in comparison to speed and production modules (which would be more sensible considering quality is unlocked very early into a playthrough.

Edit: Actually I'm thinking about it and determining a chance to keep higher quality based on mixed inputs should be relatively simple. If the number of inputs in a recipe multiplied by the highest quality level in the input, is divided against the total quality level of each input, you get a nice ratio to work with. Roll the dice based on that ratio, if the result fails roll it again for a lower quality level until you hit the lowest quality level in the input.

Re: Ability to craft lower quality with higher quality

Posted: Thu Oct 24, 2024 6:43 pm
by Alwego
+1

It's frustrating when you have so much shit in inventory but it's impossible to craft one stupid power pole, because each ingredients has other quality.

Re: Ability to craft lower quality with higher quality

Posted: Thu Oct 24, 2024 7:01 pm
by Ranakastrasz
Yea. I kinda thought/hoped that you could just feed a recipe whatever quality you wanted and either it would average or floor the qualities for the recipe. As in, it just works (tm)

Mostly I think you are best off qualifying up and filtering components like circuits and gears and then steel and crafting a small number of better items like powered armor or shotguns.... (Actually I think I need quality wood for that)

And quality quality modules naturally.

Quality modding red bullets and filtering them out for personal use, so you don't fall behind on the turret double dipping on damage.

Once I get to fulgore I imagine the recycler makes it way more controllable though. And you will be able to sort of tier down via abuse of speed modules, I think. But realistically it will probably act more like a void loop.

Re: Ability to craft lower quality with higher quality

Posted: Fri Oct 25, 2024 12:15 am
by Danjen
I can see both sides to it; as a player, it's annoying and you have lots of leftover scraps. Especially concrete and steel, which take a long time to break down and have multiple things left over. I have to make a dedicated recycler just for these due to the long craft time.
On the other hand, Fulgora's challenge is for scaling up with limited space, and dealing with logistics challenges. I could go either way on it, but I think I would prefer having a checkbox or whatever on an assembler that overrides and allows higher Q things to be used instead

If you use say, blue iron for making a normal quality iron gear, it should still output normal gears (because that's the craft target - it would only be overridden if you use a quality module)

Re: Ability to craft lower quality with higher quality

Posted: Sat Oct 26, 2024 6:48 pm
by Phoenixia
The following is relevant if quality isn't changed to accept mixed quality:
After reading the blog about quality I'd like to quote it.
--------------------------
"You don't have the recycler soon in the game,
so you can't really just recycle to get the best stuff,
the most common way how to start with the quality is to just insert some quality modules into production of final products,
which emits some higher quality products as a by product.
This results in a stage of the game,
where you pick the very limited number of higher quality modules, machines etc. made as a side effect, and you can decide what are the most important parts of the factory that need boosting."
And
"Later, especially once you unlock recycling, it can be a HUGE trap to try to get too high quality of too many things too early.
The cost is just too high, and you can easily realize, that 90% of the production of your factory goes into trying to get the legendary cool thing you want."
--------------------------
So without the recycler the different permutations will require separate factory for each quality level.
These tips would fit really well in "Tips & tricks", as some of these traps aren't well communicated or obvious.

Re: Ability to craft lower quality with higher quality

Posted: Sun Oct 27, 2024 12:59 am
by Stargateur
the problem is now we have all items * 5... I tried to put quality module into my factory to craft quality ingredient, but except from filling my coffer its feel useless. Also, epic and legendary are lock. So even try to start early with quality using clever logistic is not rewarding cause you can very easily brute force rare item with normal ingredient.

Put quality module on recycler should not allow to get quality ingredient on the contrary, it should LOWER the quality of items. It's too easy to brute force quality with recycler and it's too hard to craft quality material from normal production.

Disclaimer: I didn't finish my play-though yet and I'm still far from being expert with quality.

Re: Ability to craft lower quality with higher quality

Posted: Sun Oct 27, 2024 3:41 am
by VertebreakHER
I've been putting a lot more thought into this and why things were probably done the current way and I've realized there is a legitimate reason why machines were not given the ability to handle mixed results (although I believe its solvable.)

A very serious practical concern is that different quality levels are entirely different stacks of items. This means that once for example quality 2 is in an assembler, it cannot accept any more standard quality of that item. In the worst case scenario, this would result in an assembler not having enough quality 2 components to craft and then being permanently clogged by overflow of standard items. In this situation, the clog would be practically impossible to identify, especially in enormous factories. From this standpoint it is actually much better that assemblers cant accept anything other than a specific quality, because items will be caught on the belts instead of the assembler inventory and the clog can be spotted. So I can understand why things are the way there are, because otherwise without careful consideration quality could destroy a playthrough.

But I think there are possible solutions.

One proposal is altering the current quality system to allow for mixed quality stacks, so uncommon or rare or higher can be mixed in with standard quality. Personally even though I am suggesting this, I don't like this idea because how the mixed quality would be represented is annoying. It can't be represented by a basic array and would require a specific dataset like a dictionary. Probably very annoying to work with. There's the matter of how this would be handled by splitters on belts, which would generate huge headaches and massive throughput inconsistencies (a potential answer is making inserters only able to pick up non-mixed stacks and separated mixed stacks so mixed never goes on belts, but would be very annoying to manage proper implementation of this.) And how trying to represent mixed quality through the current UI would be clustered and confusing. This would basically be like trying to make item stacks on belts but ten times worse.

A second proposal which I think is much simpler and more practical is to just expand the input inventory of crafting machines to accept multiple quality levels, similar to how they have a dump inventory on recipe change. This would be much simpler, since no automation is able to remove from the input inventory of a crafting machine and inserters only insert as much as needed this caused far fewer problems. A possible issue is if players try to use this to place more items then otherwise possible into a machine, or if someone has a loader mod installed that has no concern for "need" over "greed". Trying to solve for that could be very problematic, but it also seems like not the kind of exploit that would offer many serious advantages. It may however cause throughput concerns if a machine is able to accept more items than normal.

Finding a non-janky solution is probably quite difficult but I do think there's a way!

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 4:18 am
by Zijkhal
I just wanted to suggest something similar, glad I searched for it first. My motivation came when I saw that if I put quality modules into my copper cable production, it clogs up the Green Circuit production, because the GC assembler can't accept quality cables, and I need quality iron plates to use those cables. This came as quite a surprise to me, because I just assumed that quality worked somehow along the lines of how I'm describing it below.

The way I imagine this working is that for recipes with multiple ingredients (for example, GC) we'd be able to use different quality inputs for each type of input material. Something like 1 uncommon iron plate, and 3 common copper cable. There would be no mixing quality in the input stack, ie all copper cables have to be the same quality. The output would be a weighted average of the input, relying on RNG. For this case, it would be 75% common, and 25% uncommon. If the assembler has a single quality module (for the ease of the example) the outputs would be the weighted average of the common and uncommon drop chances. ie, all common inputs would see 0.9% uncommon, and 0.1% rare output, and the all uncommon input case would have 1% rare output. (for ease, I'm assuming that higher rarity is not yet unlocked) Taking the weighted average, the result would be 0.99*0.75 + 0*0.25 = 74.25% common, 0.009*0.75 + 0.99*0.25 = 25.425% uncommon, and 0.001*0.75 + 0.01*0.25 = 0.325% rare.

If a quality step is missing, for example, 3 common copper cables, and 1 rare iron plate, the math gets trickier, because it would make intuitive sense to get uncommon results as well, not only common and rare. I think a viable approach would be to calculate the "average" quality, (3*1 + 1*3)/4 = 1.5, so 50% between common and uncommon. The simplest method would be to just output 50% common, and 50% uncommon items, although, it perhaps would make more intuitive sense to have a system that would enable rare items to be made as well. What comes to mind is something based on how different the average input quality is compared to each possible output quality: common, and uncommon are both 0.5 away, while rare is 1.5 away. Logically, that would mean that common and uncommon would have the same chance of being made, while rare would have a third of the chance of either common or uncommon. That would give a ratio of 3 part common, 3 part uncommon, and 1 part rare. so 3/7 = 42.857% common, same for uncommon, and 1/7 = 14.286% rare. I think that turning 25% rare input into 14%(ish) rare output, along with a healthy chunk of uncommon output is a fair compromise. Naturally, the numbers can easily be tweaked, this is just to illustrate my idea better.

It would be really awesome if the crafting machines could accept any quality if the input slot is empty, kind of like furnaces do with various smeltable ores.

What would be necessary UI-wise is to be able to select the input quality per input item, instead of per crafting machine, as well as the ability to select quality conditions instead of just a specific quality.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 6:18 am
by Doddler
Right now I'm trying to produce an iron bus out of rare iron plates and I've run into a really annoying issue: unlocking epic rarity now means I lose 10% of my entire rare plate production to epic. But I don't want epic plates, I want rare plates, I have nothing to pair the epic ones with and eventually I'll need to trash them to keep the loop from backing up. I'd have been way better off not completing the research at all, which feels backwards. I'd rather there were simply a way to turn those epic ones back into rare, or at least prevent hitting epic unintentionally.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 1:26 pm
by tovernaar123
+1 really hope this get added in some for or another, I would say add a crafting recipe that use the any quality logo and make it work as the others but allow mixing, and if mixed it crafts the lowest tier item that the inputs have.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 1:44 pm
by myridium
I agree with the OP's description of the problem. The different quality levels are annoying to deal with and pointless in early game.

I have a proposal:

Assembly machines currently buffer the ingredients they receive. They can store enough for the next recipe (usually) and a bit more. This buffer should be multiplied: one ingredient buffer for each quality level. An assembly machine with a 'mixed quality' recipe could then craft the recipe for any one of the quality levels, using whatever ingredients are available inside the machine. (In fact, this should be the default, rather than explicitly selecting a quality level!). This is a slick way to solve the problem, and it doesn't cause any issues with exploits from allowing recipes with ingredients of mixed qualities. It would also work well with logistic request chests, that could request items of all quality levels. The machine could have an option to 'prefer highest quality' so that it crafts with the highest-quality buffer that is filled. (Also, inserters could be configured, perhaps by default, to pick up items of highest quality first.)

This seems like the most natural solution to the problem, and lends itself to automation. I think it keeps within the Factorio spirit. As long as the assembly machine is stocked with the right ingredients, it will craft the highest quality available. This will naturally cause the higher quality ingredients to be used up first, as long as you can keep them in stock. Many assembly lines could be kept the same, with the only alteration being extra belts/logistics inputs that convey the higher-quality ingredients. And if you remove them, no biggie, the factory works as before but will output the lower quality products.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 2:23 pm
by Ranakastrasz
That will be mildly helpful, but without mixed quality recipes, will still easily result in jamming.

You will just fill up with varying qualities, but for any recipie with multiple components, you still need a perfect match for a craft to occur.

My idea is to allow any combination of raw materials, and use either the average quality or the average of each component stack, to determine the quality of the recipie, probabilistically. So mixing in higher quality components give somewhat better results, but more importantly, it always at least works.

Or, alternatively, just use the highest valid quality, but that is boring and has poor results.

Quality levels: combine all recipes into one recipe

Posted: Wed Oct 30, 2024 2:24 pm
by myridium
I think the current implementation of item qualities in assembly machines is needlessy complex.

Proposed change:
1) Have assembly machines buffer the ingredients (and outputs) corresponding to the recipe for every unlocked quality level, each displayed in a different row within the machine.
2) Have the assembly machine craft the recipe with the highest-quality buffer that is currently filled.
3) Profit.

This solves numerous issues already highlighted by other players in other threads. It would allow higher-quality goods to promulgate naturally throughout the assembly line, as long as you kept separate belts for each quality level of each ingredient. Or, if you only wanted to handle a certain quality level of output, then you can set the respective inserter to only take out things of that quality level. Simple.

The assembly machines have a circuit network option to output the required ingredients for the recipe. They could output the sum of the ingredients for all quality levels of the recipe. This should work naturally with setups that have requester chests hooked up to request the appropriate ingredients.

I can't see a drawback to this approach. Please consider simplying the current clumsy system with this approach.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 2:38 pm
by Panzerknacker
Also agree with OP, I imagined it would work like this already. Maybe just have assemblers auto-accept any quality, if you want to feed em with specific quality you simply use splitters?

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 3:05 pm
by myridium
Ranakastrasz wrote: Wed Oct 30, 2024 2:23 pm That will be mildly helpful, but without mixed quality recipes, will still easily result in jamming.

You will just fill up with varying qualities, but for any recipie with multiple components, you still need a perfect match for a craft to occur.

My idea is to allow any combination of raw materials, and use either the average quality or the average of each component stack, to determine the quality of the recipie, probabilistically. So mixing in higher quality components give somewhat better results, but more importantly, it always at least works.

Or, alternatively, just use the highest valid quality, but that is boring and has poor results.
It seems like a good idea at first but it's no good to allow a probabilistic choice like that because the player can get around having to have a high quality expensive ingredient. They could dilute the odds with high quality chips and avoid supplying that high quality modular suit mk. 2, for example. Although, maybe there is a way to make this work if the ingredients are weighted by the total amount of raw ingredients (iron ore, etc) required...

I agree that would produce a much cleaner and more satisfying solution. However, I doubt that the devs will adopt it.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 3:24 pm
by MeduSalem
I do kinda share some of the sentiment of the issue with quality. That it might be interesting to allow the usage of higher quality ingredients, even if the result item quality will be based on the lowest quality ingredient. ^^

Ranakastrasz wrote: Wed Oct 30, 2024 2:23 pm That will be mildly helpful, but without mixed quality recipes, will still easily result in jamming.

You will just fill up with varying qualities, but for any recipie with multiple components, you still need a perfect match for a craft to occur.

My idea is to allow any combination of raw materials, and use either the average quality or the average of each component stack, to determine the quality of the recipie, probabilistically. So mixing in higher quality components give somewhat better results, but more importantly, it always at least works.

Or, alternatively, just use the highest valid quality, but that is boring and has poor results.
This is similar to the argument that I made back in the Quality FFF about it. ^^


But that said, from a design perspective I do kinda get why they made it the way it is currently; it kinda slip-streamed a lot of the implementation.

Because for calculation & performance purposes it always only has to consider the recipe's target output quality for determining what quality it will be. It is a fixed ratio/probability table that doesn't ever change as long as you don't change the recipe. Mathematically you can set the table up once after selecting the recipe & inserting modules; you can cache that and make a quick lookup for every item (at least that is how I would do it and think they are doing it since it also has to be deterministic).

But if it would also have to consider the input qualities to determine an average quality then things get complex for every single item that is crafted. Every single time it would have to calculate a new probability depending on the combination of ingredient quality, further deluded by the quality modules and their quality. It effectively turns a calculation that can be done once currently into one that would needs to be done a bazillion times. I think that might cut somewhat into performance too.

Re: Ability to craft lower quality with higher quality

Posted: Wed Oct 30, 2024 5:01 pm
by Zijkhal
MeduSalem wrote: Wed Oct 30, 2024 3:24 pm But if it would also have to consider the input qualities to determine an average quality then things get complex for every single item that is crafted. Every single time it would have to calculate a new probability depending on the combination of ingredient quality, further deluded by the quality modules and their quality. It effectively turns a calculation that can be done once currently into one that would needs to be done a bazillion times. I think that might cut somewhat into performance too.
AFAIK the big performance draw in Factorio is related to memory, not calculations. As such, a few more calculations could potentially have negligible performance impact, because the bottleneck lies in the cache and memory

Honestly, I don't wanna find excuses why not to do this, because it *can* be done relatively performance friendly, I think.