Basing crafted items' worth on their components

Continuing the discussion from Net worth balance:

On a somewhat tangental, but related, topic, it really bugs me that some things that I can’t create early in the game (e.g. ingots) have lower net worth than some things I can create in bulk very early (e.g. tables).

I would like to see, for crafter-made goods, a system that automatically assigns their values, as opposed to relying on a single value in the entity file. Two unique items that require the same goods, the same amount of worker time to make, and are of similar quality (fine vs. not) should be about the same price.

I have outlined my idea below in a (somewhat gnarly) formula. Obviously, the specific formula (especially its constants) can be debated and improved upon. This topic is meant to discuss both the general idea and the specific formula.

Example formula:
ceiling(A * B * ([C] + (D * E)))
[C] = (F * G * (H))
A: 1.5 if the item is fine, 1 otherwise.
B: 0.8 + 0.2*[number of unique crafter classes necessary to create an item].
[C]: Apply the formula for each unique good required, sum them together.
D: Units of labor required
E: Labor cost per unit
F: 1 if the item is a basic resource, 0.75 otherwise.
G: Quantity of given unit
H: Unit cost
ceiling() simply rounds up the total to the nearest whole unit.

Example prices:

• Wood (Juniper or Oak): 1
• Silkweed Bundle: 1
• 1 unit Level X Carpenter labor: (X+1)*5 (where X is the minimum level to craft an item, 0 if there is no minimum level).
• 1 unit Level X Weaver labor: (X+1)*6

Example items:

• 1 fiber resource
• 1 unit Weaver labor level 0 (since the item doesn’t have a required level)
Final value: 1 + 6 = 7.

Bolt of Cloth

• 3 thread resources
• 3 units Weaver labor level 0
Final value: (0.7537) + (3*8) = 40 (round up).

Simple Wooden Chair

• 1 wood resource.
• 3 units Carpenter labor level 0
Final value: 1 + (3*5) = 16.

Fine Comfy Chair

• 1 cloth resource
• 1 simple wooden chair
• 3 units Carpenter labor level 2
Final value: 1.5 * 1.2 * ( ((.75140) + (.75116))+ (3*15) ) = 157.

PROS:

1. New items don’t have to have an associated process of figuring out their cost; it is done automatically.
2. No longer will certain items “forget” to have a value, so we can always sell that “fine … item” our crafter made.
3. Tweaks made to the formula will automatically propagate, there’s no need to edit the value in each item’s file.
4. While fiber and wood have the same value in this example, a bolt of cloth, which takes much more work than a simple chair, now is correspondingly worth more.

CONS:

1. Lacks flexibility for specific expensive goods. Could be offset by only using this method for items that don’t have a specific value.
2. This would require some computation at game time. This can be somewhat offset by using a lookup table, and only computing the cost of missing items (so each item’s price is only computed once per game). After all, the recipes, basic good costs, and labor costs don’t change throughout the game, and the whole formula is based on those (and other constants).
3. For part “B” above, a resource has to be “associated” with a crafter. This could be a simple as a lookup table, done recursively for each good until you get down to the basic goods, but it might be more complicated than that.

NOTES:

• If a recipe calls for an ingredient of a type (e.g. “wood resource”), the “cost” is the cheapest material of that type (e.g. If juniper log is 1 gold, and cherry wood is 10 gold, a “wood resource” would count as 1 gold).
• Since a carpenter is the base crafting class, it should be the cheapest. As classes get further form the carpenter, the labor cost, even for the base level, should increase. For example, a basic hour of level 0 blacksmith labor might be 10 or even 15.
• As I mentioned above, values can be tweaked. Yes, the values above increase a little too fast, but this can easily be changed! Specifically, F could possibly drop to 0.5 or even 0.25 to prevent these rapid increases, the labor increase for high-level crafters can be less (maybe only increase by 50% or 75% of the base amount per level), and the “fine” bonus could be less (say, 25% instead of 50%).
• Part “B” includes all classes necessary, even if you bought the item. For example. you could craft the comfy chair without a weaver, if you bought the bolt of cloth from a merchant, but the formula wouldn’t care. It would compute the cost to make the bolt of cloth, and proceed accordingly.
• Part “B” of the formula includes all classes necessary, even if they don’t craft anything in the chain. Specifically, a “Bronze Breastplate” would require three crafters (40% bonus): Blacksmith (breastplate and ingot), weaver (thread), and trapper (leather).
• Again about Part “B”: I debated including “worker” and “farmer” as classes for this requirement. The logic is that if a silkweed bundle is made, a farmer had to be involved (or shepherd). However, this gets a little more complicated than that, because multiple classes can do some basic actions. If, as I mentioned above, we do create a table (each good, which class used it), we could assign these basic actions to worker. One downside to this is that now every item will require two classes.
• There needs to be some way to take into account other requirements, such as the requirement to have made 3 simple wooden chairs made to unlock cathedral-arch chairs.
• This formula looks somewhat like the formulas for catch rate of Pokemon, especially in newer generations.

Related, but different:
Merchants should operate as merchants do. Specifically:

1. They should sell goods high, and buy them low, perhaps by an offset of 20% each way (minimum 1 gold difference). If an item’s true net worth is 80 gold, they could buy at 64, and sell at 100.
2. They should have a maximum limit. Merchants don’t have an unlimited supply of money. There should be a maximum limit per merchant, but selling things to them should increase that limit.

TL/DR:

1. Use a formula to determine a crafted item’s worth, based on the requirements to make it.
2) Merchants should buy higher than the “real” price, and sell “lower”. Done!
2. Merchants shouldn’t have unlimited money to give.
7 Likes

Good to see that in one of the recent builds, they did implement my TL/DR suggestion #2: Merchants should buy high and sell low. I’m glad that made it in.

Side note: This Discourse is amazing. Everywhere you look, you find high-quality work, done by amazing people. If you haven’t looked around, do so now!

3 Likes

This looks pretty good to me and an improvement over arbitrary values that don’t really represent the true value of an item in gameplay terms (assuming that want the devs want the monetary value of an item to represent!). However, it’s a little hard for me to understand your formula using letters (it’s like obfuscated code), so let me write it out with more descriptive terms:

value = ceiling(itemQuality * crafterClassesMod * (sumofmaterials(resourceMod * Quantity * materialValue) + (laborTime * crafterLevelValue)

Does that look about right?

Honestly, I don’t think the modifier for combined classes required to make the item is a useful modifier. It is nearly trivial to become any given class and once the game supports large numbers of crafters having one of each will be trivial. Furthermore, you are already getting added value simply because there are more items involved and the required level to craft the thing is higher.

Even the advanced crafting classes to come won’t need such a number, since you can represent them by simply adding some number of levels based on how long it takes to reach that class to their crafter level value.

To expand on your tl;dr #3, I think the money the merchants have available should scale with your town. The bigger you are, the bigger and richer the caravans that will visit you!

1 Like

[quote=“Tuhalu, post:3, topic:12186, full:true”]However, it’s a little hard for me to understand your formula using letters (it’s like obfuscated code), so let me write it out with more descriptive terms:

value = ceiling(itemQuality * crafterClassesMod * (sumofmaterials(resourceMod * Quantity * materialValue) + (laborTime * crafterLevelValue)

Does that look about right?[/quote]

Sure, it’s the same thing, just with slightly more descriptive names.

True, this one does seem a bit redundant. I was trying to err on the side of including everything, but I agree that this isn’t particularly useful.

[quote]To expand on your tl;dr #3, I think the money the merchants have available should scale with your town. The bigger you are, the bigger and richer the caravans that will visit you!
[/quote]
Good idea! Maybe something along the lines of “up to 10% of your town’s max value, but no less than 100”.

Great Ideas @Xynariz!

I’m really into economical game-play and would like a formula based approach. You did a good job, thanks! However I think it can still be a little more balanced on some points:

Formula

I actually like the idea, but the craftersLevel as a + will give a out-balanced bonus: the crafter is already producing faster due to it’s level. I would suggest to make it like:

• value = ceiling(itemQuality * crafterClassesMod * (sumofmaterials(resourceMod * Quantity * materialValue) + (laborTime * (RequiredCraftingLevel+2))

This takes the actual itemLevel into account: making a longsword requires a level 4 blacksmith, and is definitly more worth than a short sword that only requires a level 1. (edit: reading your topic more carefully, wasn’t that what you meant? )
Also I would suggest to define crafterClassesMod as: “The tier of the crafter in the job-tree”. In the current build the shepherd should get a level 2 modifier. (but he doesn’t craft anything )

Merchants

On this part: I would add:
3) Merchants should have a limit amount of items, not 99 (definitely when a “small” food car rolls in).
4) Merchants should have specific buying discounts or buffs depending on their class. A woodcutter should buy wooden items from the player for a lower price than the other merchants.
5) Depending on your town’s value, more merchants should come by. (or the existing ones should be able to spend more)
6) Merchants should sell valuable merchant only items, to do something useful with the money collected (or some other kind of spending-your-money-system)

Well, it are some ideas

1 Like

That is what I meant, but with one difference: Classes each have their own value (i.e. a level 2 blacksmith item might have the same multiplier as a level 4 carpenter).

Sure, but I’d actually suggest 0.5*tier (Plus 0.5, so 1st tier is 1x).

Very good ideas, those are exactly along the lines of what I was thinking.
For #3, a stonecutter having 99 stone isn’t unreasonable, but as you mentioned, a small food cart having 990 food is.
For #4, I would think a woodcutter would pay more for wood items (he knows just how valuable they are), and they would pay especially more for fine items. Other crafters would not know the “true” worth of wood items, so they would pay less, just to be safe.
For #5, that’s exactly what I meant (though I didn’t say so). Having them be willing to sell you more (and buy more from you) as you become more well-known (wealthy) is perfect.
For #6, that’s not a bad idea. Perhaps reskins of existing items? For example, you can only buy a “fancy fire pit” from the stonecutter, if you trade in your existing fire pit. (I say this to make sure that these new items can be functional, even if they don’t add any new functionality. I know I wouldn’t buy anything if it didn’t have at least some function.)

I love these ideas!

On a side note - we need more “fine” items. I’m sure this is coming when recipes will be revisited in a future alpha, but I think any end-use good that can be crafted should have a fine version. (Yes, I mean windows, armor, etc., but No, I don’t mean ingots, cloth bolts, etc.)

1 Like