Das Transportwesen - ein Überblick
Die Logistik ist das Rückgrat jeder Volkswirtschaft, so auch
in der Ökonomie in Eressea. Um so mehr kann es belasten, dass ein
Grossteil der wöchentlichen Aufgaben einen erfahrenen Eressea-Herrscher
nicht mehr fasziniert - wo liegen gerade die Ressourcen, wo befinden
sich welche Transporter, was können diese zusätzlich auf ihren Wegen
mitnehmen...das kann Zeit und Nerven kosten. In FFTools kosten diese
Aufgaben faktisch keine Zeit mehr. Hier nun die notwendigen
Informationen, um die Arbeitsweise und daraus resultierende Vor- und
Nachteile des gescripteten Transports in FFTools zu kennen.
Die Beteiligten
Depots (
// script Depot)
Depots bilden eine Grundlage des Transportsystems. Gerade
nicht zu transportierende Waren werden an einer Stelle in jeder Region
zusammengetragen. Dort stehen sie allen anfordernden Einheiten in der
Region und im TradeArea (der Insel) zur Verfügung.
Technisch geht das sogar soweit, dass am Anfang der
Scriptbearbeitung alle Einheiten alle Ressourcen einmalig an das Depot
abgeben, und in den folgenden Bearbeitungsschritten die benötigten
Ressourcen mit der aktuellen Priorität wieder anfordern - insofern
werden alle Ressourcen bei jedem Scriptlauf komplett umgewälzt.
Warenempfänger - Anforderer
Die Anforderungen nach Waren können durch viele Scripte
generiert werden. Neben der einfachen direkten Anforderung mittels
// script request erzeugen Skripte wie
Material, Treiben, Lohn, Bauen, Schmieden, Handeln diverse
Anforderungen. Jede Anforderung hat als markantes Merkmal die Priotität
der Anforderung und anhand dieser Priorität werden die Anforderungen
dann abgearbeitet, die höchste Priorität zuerst.
Transporter (
// script Transport mode=auto)
Kann ein Bedarf nicht in der gleichen Region befriedigt
werden, gibt der regionsbezogene Materialpool die Anforderung an den
Transportmanager weiter, der inselbezogen arbeitet. Er versucht, die
angeforderten Waren bei den Depots der Insel zu lokalisieren (nachdem
die jeweiligen Regionsanforderungen abgearbeitet und verteilt worden
sind) und ordnet Transporter zu.
Die Transporter sind komplett autonom, fahren insbesondere
keine festen Routen, können beliebig groß sein und je mehr es sind,
desto besser.
Der Transportmanager (TM)
Die bisher genannten Beteiligten melden sich beim TM an und
dieser trifft die finalen Entscheidungen. Er geht dabei recht strikt
vor. Oberstes Kriterium ist die Priorität.
- die jeweils noch nicht vollständig bearbeitete Anforderung
mit der höchsten Priorität wird weiter bearbeitet - es ergibt sich die
Zielregion eines Transports
- es wird inselweit das grösste Vorkommen der angefragten
Ressource gesucht (!wichtig, nicht das naheliegendste!), im
Erfolgsfalle ergibt sich die Quellregion eines Transports.
- Nun wird gesucht, ob bereits ein Transporter in der
Quellregion ist und bereits zur Zielregion fährt, welcher auch noch
Kapazität frei hat. Wird einer gefunden, wird die Ladung ergänzt.
- Nun wird gesucht, ob bereits ein Transporter in der
Quellregion ist und in Richtung der Zielregion fährt, also ihr näher
kommt, gemessen in Reitrunden, welcher auch noch Kapazität frei hat.
Wird einer gefunden, wird die Ladung ergänzt.
- Findet sich kein Mitfahrer, werden noch komplett
unverbrauchte Transporter in der Quellregion gesucht und bei Erfolg der
Strecke Quellregion->Zielregion zugeordnet und gleichzeitig mit der
Ladung versehen.
- Kann auch dadurch die Anforderung nicht vollständig
bearbeitet werden, werden die nächstliegenden freien Transporter nach
dem passendsten durchsucht und dieser in die Quellregion beordert - auf
diesem Weg steht er nachfolgenden Anforderungen natürlich als Mitnehmer
zur Verfügung. Die Ressourcen werden bereits in der Quellregion
"reserviert" und stehen nicht mehr für weitere Anfragen zur
Verfügung.
Der ganze Ablauf wird pro Anforderung betrieben, bis
- der Gesamtbetrag der Anforderung erfüllt werden konnte, oder
- keine freien Ressourcen bei den Depots mehr gefunden werden
können.
Dann gehts zur nächsten Anforderung.
Vorteil:
Absolute Priorisierung - am extremen Beispiel. Wenn die
Errichtung einer Zitadelle die allerwichtigste Aufgabe ist, so bewirkt
eine request-Zeile mit höchster Priorität, das *alle* verfügbaren
Transporter zum Einsatz kommen. Es werden im Zweifel *alle* Transporter
auf Grund einer Skriptzeile neu ausgesteuert. Der Vorteil liegt darin,
dass sich der Nutzer sicher sein kann, dass *alles* für seine
Anforderung getan wird, was irgendwie möglich ist.
Nachteil:
Absolute Priorisierung: Ein einzelnes Gut kann unter Umständen
einen ganzen Transporter beschlagnahmen, obwohl ein ganzes Lagerhaus
wartet, in die andere Richtung transportiert zu werden. Der
Transportmanager verlässt sich absolut darauf, dass alle
Bewertungsprozesse abgeschlossen sind und in eine angemessene Priorität
gemündet haben.
Vorteil:
Reaktionsfähigkeit. Das Transportwesen reagiert auf
Veränderung sofort, da es jede Runde, ja bei jedem Scriptdurchlauf,
komplett neu berechnet wird. Steigt ein Reittalent, bekommt ein
Transport mehr Pferde, sofort steigt seine Kapazität und er wird
eventuell für andere Aufgaben geeignet. Wird eine Strasse neu fertig,
werden diesen Umstand die Transporter ab sofort berücksichtigen - sie
nutzen das Pathfinding von Magellan2.
Nachteil:
Keine längerfristige Planung - auch nicht die kleinste. Werden
mehrere Transporter für mehrere Aufgaben in die gleiche Region
beordert, stellt der TM regelmässig erst in der Ankunftsrunde fest,
dass einige Transporter von dort in die gleiche Richtung fahren,
mehrere Aufträge also mit einem Transporter abgearbeitet werden können
und andere Transporter völlig umsonst in die Region beordert wurden -
unschöne Leerfahrten sind die Folge.
Nachteil:
Kein Austausch zwischen Regionen mit existierenden
Anforderungen. Wird ein Gut in einer Region selbst angefordert - egal
mit welcher Prio, steht dieses Gut nicht mehr für den Rest der Insel
zur Verfügung - egal mit welcher Prio in einer anderen Region dieses
Gut angefordert wird. Klassiker ist der Rekrut mit dem Laenschwert in
der Hand, und der Held in der Nachbarregion bekommt zwar das Beste, was
die Nachbarregion zu bieten hat, dies ist im Beispiel aber nur ein
normales Schwert.
Nachteil:
Mehr Transporter bewirken mehr. Bei zu wenigen Transportern,
seien sie auch noch so ladefähig, werden minderpriorisierte
Anforderungen eventuell nie berücksichtigt, da höherpriorisierte
Transporte, auch wenn sie den Transport nicht voll nutzen, ihn voll
beanspruchen. Es bleibt bei dieserart Zuteilung ein systematischer
ungenutzter Rest der Kapazität, und dieser ist um so kleiner, je mehr
Transporter eingesetzt werden und um so kleiner die jeweiligen
Transportkapazitäten sind. Resultat sind auf grösseren Inseln bis zu
200 Transporteinheiten, die da vor sich hinwuseln. Ohne die Erhöhung
des Einheitenlimits wäre das auf Dauer nicht tragbar gewesen.
Da sich aber der zeitliche Aufwand bei gescripteten
Transportern sehr in Grenzen hält, egal wie viele Transporter es gibt,
ist die große Anzahl von benötigten Transportern mehr unschön als
störend.
Stand 08/2012, FFTools version 0.94, Fiete