Distance City Maintenance – Stadtunterhalt nach Entfernung [BTS 3.19]
Ich möchte hier die Berechnung des Stadtunterhalts aufgrund der Entfernung der gegründeten Stadt zur Hauptstadt erklären. Die Stadtunterhaltskosten setzen sich vollständig zusammen aus:
CityMaintenance = DistanceMaintenance + NumOfCitiesMaintenance + Corporation Cost + Colony Cost
Die DistanceMaintenance kann man im Stadtbildschirm ablesen, indem man mit dem Mauszeiger über Maintenance fährt. Im Pulldownmenü sieht man dann den Betrag für „Distance from Palace“.
Die Formel zur Berechnung der Unterhaltskosten der Entfernung zur Hauptstadt (DistanceMaintenace) lautet:
DistanceMaintenance=
(100 x (MaxDistanceCityMaint x Distance) x (CityPop + 7) / 10 x (Civic_M + 100) / 100 x WorldSize_M/100 x Handicap_M/100) / MaxPlotDistance
Wenn Staatseigentum ausgeschlossen wird, lässt es sich kürzer darstellen:
DistanceMaintenance=
(100 x (25 x Distance) x (CityPop + 7) / 10 x WorldSize_M/100 x Handicap_M/100) / MaxPlotDistance
Nun die Erklärung der Parameter, von denen die DistanceMaintenance abhängig ist:
A) Der Worldsize Modifier “WorldSize_M” kann in der Civ4WorldInfo.xml unter „iDistanceMaintenancePercent“ nachgeschlagen werden. Er liegt zwischen 50% auf Duel und 100% auf Huge Karten. Man kann aber aufgrund der ansteigenden Werte von kleinen nach grossen Karten nicht einfach darauf schliessen, dass die Kosten im Fall grosser Karten grösser werden.
B) Der Handicap Modifier „Handicap_M“ aus Civ4HandicapInfo.xml. Er steigt von 45 % für Siedler auf 100% für Unsterblich/Gottheit an. Hier gibt es einen linearen Zusammenhang. Je höher der Schwierigkeitsgrad dest höher die Unterhaltskosten für Stadtentfernung.
C) Die Konstante „MaxCityDistanceMaintenance“ ist immer gleich 25.
D) „CityPop“ ist die Stadtgrösse. Ja, es ist tatsächlich so, dass die Maintenancekosten für die Entfernung zur Haupstadt steigen, wenn die Stadt wächst.
E) „Distance“ ist die Entfernung der Stadt zur Hauptstadt. Dabei wird die nach Civ-Enfernung (PlotDistance) gezählt, die nicht mit der StepDistance (gilt für die Bewegung von Einheiten) verwechselt werden darf. Jeder kennt wohl das Fatcross für den Stadtbildschirm, das für 2 Felder Entfernung vom Zentrum besteht. Die Entfernung 2 ist die Plotdistance. Die Diagonalen Felder im 2. Ring haben die Plotdistance=3 und sind nicht mehr bewirtschaftbar
F) „MaxPlotDistance“ ist die maximal mögliche Entfernung zweier Punkte auf der gespielten Karte.
Ich habe versucht diese Werte in Abhängikeit der Karte zu berechnen, dann aber aufgegeben. An dieser Stelle kann ich nur MaxPlotDistance für cylindrische Karten angeben, die beim Spielstart unter „Custom Game“ generiert werden. Cylindrische Karten haben einen Nord/Südpol der unpassierbar ist und können auf der Cylindermantelfläche umfahren werden. Es ist für mich der am meisten gespielte Kartentyp. Die im folgenden gezeigte Tabelle sagt aus, dass für ein Spiel auf einer Standardkarte (64 x 40) die maximal mögliche Plotentfernung 55 beträgt. Dieser Wert muss dann als Konstante in die Formel oben eingesetzt werden.
G) Der CivicModifier„Civic_M“ ist immer 0 ausser -100 wenn die Regierungsform Staatseigentum ist. Im Fall von Civic_M = -100 erhält man für DistanceMaintenance =0, d.h. die Entfernungskosten entfallen.
Somit kennen wir alle Variablen, die zur Berechnung der DistanceMaintenance erforderlich sind. Die Formel habe ich aus der cvCity.cpp abgeleitet:
Achtung Spoiler: