2.1 KiB
2.1 KiB
Director: Stückkosten Produktion (Balancing)
Problem
Die DB wählt das „beste“ Produkt über QUERY_GET_BEST_PRODUCTION (Worth-Formel mit - 6 * ftp.category), während der Daemon früher nur certificate * 6 pro Stück abgebucht hat – ohne die Produktklasse. Dadurch konnten Stückkosten und Worth-Ranking auseinanderlaufen.
Aktuelle Formel (Rust, DirectorWorker::calc_one_piece_cost)
raw = certificate × PRODUCTION_COST_PER_CERT_LEVEL
+ product_category × PRODUCTION_COST_PER_PRODUCT_CATEGORY
effektiv = raw × (1 − headroom_discount)
product_categorykommt ausQUERY_GET_BEST_PRODUCTION(ftp.category).- Headroom =
max(0, certificate − product_category)
Wenn du nicht am Klassenlimit produzierst (Zertifikat höher als nötig für das Produkt), gibt es einen kleinen Rabatt (Effizienz / Reserve).
Konstanten in src/worker/director.rs (anpassen zum Feintuning):
| Konstante | Standard | Bedeutung |
|---|---|---|
PRODUCTION_COST_PER_CERT_LEVEL |
6.0 |
wie früher ×6 pro Zertifikatsstufe |
PRODUCTION_COST_PER_PRODUCT_CATEGORY |
1.0 |
Material pro Produktklasse |
PRODUCTION_HEADROOM_DISCOUNT_PER_STEP |
0.035 |
Rabatt pro Headroom-Stufe |
PRODUCTION_HEADROOM_DISCOUNT_CAP |
0.14 |
maximaler Gesamtrabatt |
Spielerfortschritt
- Höheres Zertifikat allein erhöht die Basis-Stückkosten linear – entspricht besserer Produktpalette (
ftp.category <= certificatein SQL). - Höhere Produktklasse erhöht
rawüberproduct_category(bessere Ware = mehr Material). - Zertifikat über der Produktklasse (Headroom) senkt die effektiven Kosten – Belohnung, wenn du nicht immer nur am Limit produzierst.
Worth in SQL
Die Worth-Zeile in QUERY_GET_BEST_PRODUCTION sollte bei größeren Formeländerungen mit angepasst werden, damit der Director weiterhin sinnvoll sortiert.
Parallelproduktionen
MAX_PARALLEL_PRODUCTIONS (aktuell 2) bestimmt, wie viele Linien pro Tick Geld binden – unabhängig von der Stückkostenformel; bei Liquiditätsproblemen ggf. auf 1 setzen.