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.
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.
- 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
Spool of Thread
- 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.
- New items don’t have to have an associated process of figuring out their cost; it is done automatically.
- No longer will certain items “forget” to have a value, so we can always sell that “fine … item” our crafter made.
- Tweaks made to the formula will automatically propagate, there’s no need to edit the value in each item’s file.
- 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.
- Lacks flexibility for specific expensive goods. Could be offset by only using this method for items that don’t have a specific value.
- 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).
- 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.
- 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:
- 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.
- 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.
- 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!
- Merchants shouldn’t have unlimited money to give.