Files
yourpart-daemon/docs/FALUKANT_DIRECTOR_PRODUCTION_COST.md

3.2 KiB
Raw Blame History

Director: Stückkosten Produktion (Balancing)

Was der Daemon nicht macht (häufige Missverständnisse)

  • Nicht 6 × Kategorie (also kein reiner Multiplikator nur aus der Klassennummer).
  • Nicht 2 × Kategorie — im ypdaemon-Stand gibt es diese Formel nicht.
  • Nicht „höheres Zertifikat ⇒ höhere Stückkosten“: Das Zertifikat begrenzt nur die Produktpalette (ftp.category <= certificate); es wird nicht als Zertifikat × 6 o. Ä. auf die Kosten drauf multipliziert.

Die kanonische Berechnung lebt in Rust: DirectorWorker::piece_production_cost in src/worker/director.rs (gleiche Logik beim Produktionsstart und bei der Kostenbasis für Steuer/Marge beim Verkauf über resolve_production_piece_cost).

Modell

  • falukant_user.certificate begrenzt nur, welche Produkte wählbar sind (ftp.category <= certificate in QUERY_GET_BEST_PRODUCTION). Es gibt keine höheren Stückkosten nur wegen eines höheren Zertifikats.
  • Die Stückkosten hängen von der Produktklasse (falukant_type.product.category) und einer Basis ab; optional Headroom-Rabatt, wenn das Zertifikat über der Klasse des produzierten Guts liegt (Erfahrung/Reserve, nicht „Strafe“ fürs Zertifikat).

Formel (Rust, DirectorWorker)

raw = PRODUCTION_COST_BASE + product_category × PRODUCTION_COST_PER_PRODUCT_CATEGORY
headroom = max(0, certificate  product_category)
discount = min(headroom × PRODUCTION_HEADROOM_DISCOUNT_PER_STEP, PRODUCTION_HEADROOM_DISCOUNT_CAP)
effektiv_stückkosten = raw × (1  discount)

Ausgeschrieben mit den Standardkonstanten:
raw = 6 + 1 × product_category (Kategorie mindestens 1), dann Rabatt nur bei Headroom.

Beispiele (Standardkonstanten, ohne Rundung):

Kategorie Zertifikat raw Headroom effektiv (ca.)
1 4 7 3 7 × (1 min(0,105; 0,14)) ≈ 6,27
4 4 10 0 10

Chargenkosten beim Start einer Linie: effektiv_stückkosten × Stückzahl (Stückzahl bis 100 pro Linie, siehe create_single_production).

Konstante Standard Bedeutung
PRODUCTION_COST_BASE 6.0 fixer Basisanteil pro Stück
PRODUCTION_COST_PER_PRODUCT_CATEGORY 1.0 Aufschlag pro Produktklasse (additiv zu 6, nicht „6×Kategorie“)
PRODUCTION_HEADROOM_DISCOUNT_PER_STEP 0.035 Rabatt pro Headroom-Stufe
PRODUCTION_HEADROOM_DISCOUNT_CAP 0.14 maximaler Gesamtrabatt

Worth in SQL (QUERY_GET_BEST_PRODUCTION)

Sortierung nach regionalem Erlös pro Zeiteinheit:

(sell_cost * worth_percent/100) / production_time

Damit entspricht die Auswahl in etwa „Erlös pro Minute“ (Listenpreis × Markt in der Region ÷ Dauer einer Produktionscharge). Wissen fließt hier nicht in die Reihenfolge ein (Wissen wirkt bei euch auf Qualität/Preis beim Verkauf, nicht auf die Produktwahl). Die Stückkosten kommen nur aus der Rust-Formel beim Abbuchen.

Parallelproduktionen

MAX_PARALLEL_PRODUCTIONS (aktuell 2) bestimmt, wie viele Linien pro Tick Geld binden — unabhängig von der Stückkostenformel.