Cataclysm-dda: Batch crafting and skill learning problem

Created on 8 Jul 2017  路  24Comments  路  Source: CleverRaven/Cataclysm-DDA

Expected Behavior

I expect to have a linear progression in my skill when I batch-craft. For example, at level 0 fabrication, if I craft 1 fishing hook, I gain 5% toward lvl 1, so when I use the batch crafting functionality, if I craft 5 fishing hooks, I expect to gain 5 x 5% = 25 % lvl toward lvl 1

Actual behavior

Batch crafting is not take into account for the skill learning, so if I craft 5 fishing hook at lvl 0 fabrication, it only give me 5% toward lvl 1...

<Enhancement / Feature> Crafting / Construction / Recipes

Most helpful comment

Ok, wait, you're trying to argue game balance and I'm not.

For those recipes that do not gain a reduced time benefit from the batch functionality there is no in-game difference between crafting individually or using a batch. For mutagens making one takes ten minutes and a set amount of materials, whether I use the batch system or not. All the batch system does, in this case, is saving me from spamming the "repeat last craft" key however many times. That's it, there is no other difference. Well, outside of the fact that the spam method currently gives me three times the XP.

That is all I'm suggesting we fix. Let's make it so one item that takes X time to craft always gives Y XP, regardless of method. And the best way to do that without disrupting current balance is to use the formula we already have, bring the batch functionality to parity with the individual crafts first. we can then come back through and rebalance per item XP if it seems appropriate.

All 24 comments

I think the experience should be proportional to the time consumed.

It is affected by time spent crafting, but not directly proportional.
If a formula took 0 time, it would give half as much xp as the same formula that took 30 minutes, one third of the xp as a formula that took 60 minutes and so on.
But since fishing hooks take barely any time, this isn't really visible. Very short time recipes don't benefit from this xp increase.

Oh! So xp progression is different wether you use batch-crafting or individual crafting then.

Is there a reason for that ?

If not, I suggest to choose between the two methods and keep only one.

I guess time based xp progression would be fine and much simpler than a per item xp progression, even when you craft individual item.

Oh! So xp progression is different wether you use batch-crafting or individual crafting then.

The xp formula is identical, all item crafting jobs are awarded (10 + 15*difficulty)*(1 + (float)time/MINUTES(30.0)) xp for the primary skill. Difficulty is base (unmodified by problems), but time is modified by batch crafting, NPC helpers and so on.

Is there a reason for that ?

I don't know if there was any when it was written, but it still has some merit to it: low time crafts aren't awarded 0 xp, which would be pretty confusing.
May be worth considering dropping that 1+ in time part of the formula, but it will need some poking around, to make sure it doesn't end up worse in some important ways.

That formula needs to be more granular, really. If all crafting times are done by some multiple of one minute modifying XP by some multiple of 30 minutes is costing precision. The XP loss this causes isn't severe for longer crafts, but is badly impairing to the short ones. And this is worsened by the fact most recipes that are likely to be batched are consumables, food, ammo, some tools. And those recipes mostly have short crafting times.

What this means is that the recipes that would most benefit from batch crafting are discouraged from using it,which is counter intuitive. Plus this encourages bad gameplay by giving an in-game advantage from real life grinding..

Well, it is perfectly granular - it doesn't require full 30 minutes to count.
Edited the comment to make it more obvious.

No, it really isn't.

Real world testing:
Fabrication 0 5 lockpicks, batched 12% skill gain 5 lockpicks made 1 at a time: 54% skill gain
Cooking 3: unfermented vinegar. 5 batched 7% skill gain, 5 made 1 at a time 24% skill gain.

Oh, the first is a 1 minute craft, the latter is 8 minutes, and batching only really save time for the vinegar, but not that much time.

I'd say that looks fairly broken.

Ok, more testing. Cooking 8 Mutagen batched 5, 3% gain. 5 individually crafted, 9% gain. No time saved by batching.

Mutagen craft time: 10 minutes
Crafting 5 mutagens: 50 minutes

5 * (1 + 1/3) = 6 + 2/3
1 * (1 + 5/3) = 2 + 2/3

Matches the formula I provided. No rounding errors, no granularity lost.

Um, I'm not seeing where what you are saying makes sense. Again, make 5 mutagens 1 at a time, takes 50 minutes, gain 9% experience. Batch 5 at once, takes 50 minutes, only gain 3% experience. How is that not a bug?

Edit: and the lockpicks, and thus pretty much all the 1 minute crafting jobs, are staggering worse. Craft 5 lockpicks individually, takes 5 minutes, earn 54% experience. But if you batch those 5 crafts it still takes 5 minutes and yet only earn 12% experience.

Somehow your formula is fubar. No matter how I craft something I should be getting the same experience for time spent. And yet, doing things one at a time until you have what you need gives massively more experience over just going ahead and batching them to make the same number. Same time spent, less experience gained.

Reading comprehension
You said that improving granularity would help, I proved it wouldn't.
I also said:

May be worth considering dropping that 1+ in time part of the formula, but it will need some poking around, to make sure it doesn't end up worse in some important ways.

Yeah, look again at what I wrote. If I'm understanding you right, a batch craft calls that formula only once for the entire time it crafts?

So look at the lockpick experience again. Calling the function once for a 1 minute craft gives you 11% ish experience. The batch call ends up being 5 minutes and gives you 12% experience (which I'm guessing is 11% ish rounded up). That certainly looks like a granularity problem, yeah? That the formula isn't tracking small craft times in enough detail to provide consistent results?

Listen, I may not be understanding you correctly, but do you agree that if you spend x time crafting something for a certain skill level you should gain x amount of experience regardless of how that time is broken up? That if you do 1 craft for all that time you should get the same time experience then if you do multiple crafts that take the same time? Because that isn't what is currently happening.

That certainly looks like a granularity problem, yeah?

Looks, but isn't. Even at difficulty 0, the rounding only happens at 3 minute intervals, which is tiny.
There is some randomness to skill gain (of all types), which can make it look not granular, but the granularity here is not a problem.

That if you do 1 craft for all that time you should get the same time experience then if you do multiple crafts that take the same time?

That's because of that 1+ part in the formula. First 30 minute interval is free, as I mentioned in first of my posts. Then I mentioned possibility of dropping that in the second.

Hmm, ok.

Still, this should be considered as "not working as intended", yeah? I mean, as it sits you are kinda discouraged from using the batch function moreover than not, and punished severely by doing so for the smaller craft times at low levels, which is pretty much the opposite which should be happening.

Still, this should be considered as "not working as intended", yeah?

It's not a bug. It can be considered a balance issue or confusing, but it's not broken.
It's hard to say what was the intent without digging up the PR.

One problem with fixing it would be that early game grind would get much grindier. Unless all the early game grind recipes had their times bumped to something near 30 minutes to compensate.

Um, maybe "not broken" from a code standpoint, but I'd consider it "very broken" from a gameplay point of view. Time spent crafting something level appropriate should return a consistent amount of XP. yes? If you spend 30 minutes crafting you should get X amount of XP, regardless if you do one 30 minute task or several tasks that add up to 30 minutes. Can we agree on that much? If so, than the current system can indeed be classified as "not working as intended".

And why do you consider the fix for this problem to bring the shorter crafts down versus boosting the longer crafts to match? I mean, just from my examples it is obvious that doing so wouldn't break balance. It'd boost some of the lower skill shorter time crafts, but we already have that by not using the batch function.

And why do you consider the fix for this problem to bring the shorter crafts down versus boosting the longer crafts to match?

Low craft time ones don't set a standard. High craft time ones do: xp (almost) proportional to craft time.
If the xp is to be sensibly balanced, it has to all be calculated from one formula. If this formula is to be linear with time (no free 30 minutes), it must be a mostly-linear formula. For low craft time recipes, the formula isn't linear because of that free 30 minutes thing.
Calculate xp-per-minute of a bunch of different recipes, some with high craft time and some with low, and you'll see what I mean.

If you spend 30 minutes crafting you should get X amount of XP, regardless if you do one 30 minute task or several tasks that add up to 30 minutes.

Not necessarily. If you spend 60 minutes watching a cauldron of soup boil, that's not the same as cooking two soups, 30 minutes each.
Linear formulas are good for simplicity, but it's not like a non-linear one is broken or certainly unintended.

You know, I think there is a clash of personalities here. Whenever we interact it seems to blow up like this. Not sure who's to blame. Probably me, though.

I'm going to make two last points and then I'm done, do what you will.

Point 1: From a player standpoint it would be good to be either consistent or make it clear that it is not. If I make 5 of something it is normal and expected that I'd get 5x the XP for it. And if I didn't it would be very confusing and I'd think it is a bug.

Point 2: The fix is dead simple. Replace 1+ up there with an X+, where X is the amount of that item you are crafting. The justification would be that you get a static amount of XP per craft and then bonus XP based on the time it takes. And you wouldn't have to worry about unbalancing anything because that is the way it already works if you don't use the batch mechanic. It just makes the batch system provide consistent results to not using it. You'd get the same XP minus whatever time you save by making the items all in one go. Simple, clear, and fairly transparent to the player.

Oh, well, not really a point, but an observation. I'm fairly sure that the reason we've ended up in this mess is the batch system was added after, and probably a significant time after, the XP per craft was decided. It would be easy to overlook the importance of that 1+, really.

From a player standpoint it would be good to be either consistent or make it clear that it is not.

It's arguable whether a non-linear formula is inconsistent.
I'd prefer a linear one, it's just that it may be more work than it looks like.

The fix is dead simple. Replace 1+ up there with an X+, where X is the amount of that item you are crafting.

I'd prefer a linear one, honestly.
This one would make it look like fast craft grinding is the intended way, while it is just an artifact of a weird formula.
Linear would suck early on, but "time+quantity" would keep that ugly fast recipe finding metagame, where everyone crafts pilot lights to avoid long craft times.

It is inconsistent. That's why I posted the issue in the first place.

Batch crafting and a multiple iteration of a single craft should yield the same amount of xp, whatever the formula behind it. Otherwise, it's weird and may potentially lead to a bad gameplay experience for the player (loosing valuable resources to gain non optimal xp for exemple).

Now, the overhaul of the xp progression, that could lead to some balance issue, is a different debate in my opinion.

Ok, wait, you're trying to argue game balance and I'm not.

For those recipes that do not gain a reduced time benefit from the batch functionality there is no in-game difference between crafting individually or using a batch. For mutagens making one takes ten minutes and a set amount of materials, whether I use the batch system or not. All the batch system does, in this case, is saving me from spamming the "repeat last craft" key however many times. That's it, there is no other difference. Well, outside of the fact that the spam method currently gives me three times the XP.

That is all I'm suggesting we fix. Let's make it so one item that takes X time to craft always gives Y XP, regardless of method. And the best way to do that without disrupting current balance is to use the formula we already have, bring the batch functionality to parity with the individual crafts first. we can then come back through and rebalance per item XP if it seems appropriate.

Wouldn't it be logical from balance, realism and code reuse perspective to have batch crafting just run the single crafting function X times, with possibility of interrupting the batch? That would also break the long batch with single fire exploit.

The goal of batch crafting is specifically to support, "making a large batch of something", so no that doesn't work.

Closing per #21696

Was this page helpful?
0 / 5 - 0 ratings