Currently Online

Latest Posts

Topic: Verbesserungsvorschlag für Hafen Gebäude

Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 223
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2023-07-29, 19:31

Bei meinen Testspiel vorgestern, ist mir noch etwas aufgefallen, was mich gestört hat, weil es sich vor allen dann auswirkt,
wenn die Strecken die Schiffe zwischen den Häfen zurücklegen müssen, sehr lang werden.
Ich würde gerne die Wirtschaft meiner Kolonie auf einer der Inseln zum Teil von meiner Hauptwirtschaft abkoppeln,
so das meine Kolonie von der Hauptwirtschaft mit Waren versorgt werden kann, aber umgekehrt, die Kolonie nur die Waren zur Hauptwirtschaft liefert, die ich gerne exportieren würde.
Baumaterial würde ich gerne bei meiner Kolonie lassen. Problem nur, wenn man bei der Hauptwirtschaft bei einer Ware eingestellt hat,
hier bevorzugt einlagern, dann exportiert auch die Kolonie diese Ware zur Hauptwirtschaft.
Man könnte dem begegnen indem man sowohl bei der Hauptwirtschaft als auch bei der Kolonie einstellt Ware hier bevorzugt einlagern.
Ich bin mir sicher das meine Intention schon so jetzt im Spiel irgendwie auf mehr oder weniger Umwegen schon realisiert werden kann.
Allerdings habe ich das Gefühl das dieser Verbesserungsvorschlag doch gar nicht mal so schlecht ist und er eine realistische Chance auf Implementierung hat.

Ich habe noch ein paar alternativ Icons erstellt, wie |< , || und >| falls die normalen Pfeile zu öde sind.

Edited: 2023-07-29, 19:37

Attachment:
Widelands_Hafen_Interface_Icon_Tabelle.png

Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 223
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2023-07-29, 19:32

Hier ein paar Beispiel Bilder wie das aussehen kann. Inklusive erstellter Icons für diese Funktion, sowie optimierte Icons die schon verwendet werden.
Bei einen Interaktionsfenster, wo man sieht, welche Waren auf Schiffe verladen werden sollen, habe ich alle Waren Felder standardmäßig dunkel schattiert,
und nur die Felder, wo auch tatsächlich waren auf die Verladung warten auf normaler Helligkeit gelassen.
Das hat den Vorteil, das man besser erkennen kann, welche Waren gerade auf die Verladung warten, da standardmäßig in diesen Untermenü bei allen Waren eine 0 steht.

Anmerkung :
Roter Pfeil : Waren die hier bevorzugt eingelagert werden sollen
Grüner Pfeil : Waren die hier ausgelagert werden sollen
Gelbes Kreuz : Waren die nicht mehr eingelagert werden sollen
Türkiser Pfeil : Waren die bei diesen Hafen nicht gelöscht werden sollen
Magenta Kreuz : Waren die bei diesen Hafen weder gelöscht noch verschifft werden sollen
Blauer Pfeil : Waren die bei diesen Hafen nicht verschifft werden sollen

Edited: 2023-07-29, 19:42

Attachment:
Widelands_Hafen_Interface_Vergleich.png

Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 2058
OS: Debian Testing
Version: Latest master
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2023-07-29, 23:07

Der Vorschlag, auszuwählen, dass in einem Hafen bestimmte Waren nicht verschifft werden dürfen, kam in der Vergangenheit schon mehrfach, allerdings immer in dem Kontext den Transport effizienter zu gestalten. Das wurde stets abgelehnt, denn wenn sich der Spieler in die Wirtschaftsalgorithmen einmischt ist das Ergebnis stets schlechter als was die Algorithmen selbstständig berechnen.

Für das vorgestellte Problem wäre der Ansatz zwar scheinbar geeignet, allerdings gibt es noch etwas anderes was prinzipiell gegen die Umsetzung spricht, und das sind waren- und arbeiterspezifische, asymmetrische Transportwegeunterbrechungen. Angenommen, du hast in der Kolonie 100 Planken eingelagert und auf dem Festland keine. Alle Häfen in der Kolonie sind darauf gesetzt, dass der Plankenexport verboten ist. Auf dem Hauptland wird jetzt ein neues Gebäude in Auftrag gegeben, das Planken benötigt. Aktuell würde das dazu zu führen, dass die Sägewerke dort keine Planken produzieren werden (die Wirtschaft hat ja 100 auf Lager), aber auch keine Planken angeliefert werden können (weil kein legaler Weg von den Plankenvorräten in der Kolonie zu den Plankenverbrauchern auf dem Festland existiert). In der umgekehrten Richtung wäre es kein Problem, weil die Koloniehäfen ja nur den Export und nicht den Import von Planken verbieten. Und für jede Art von Ware und Arbeiter sieht die Situation individuell verschieden aus.

Der gesamte Wirtschafts-Code von Widelands beruht auf der Annahme, dass zwei Fahnen A und B genau dann in derselben Wirtschaft sind, wenn ein Weg von A nach B existiert. Dies für jeden Warentyp separat zu handhaben wäre noch machbar – das gleiche machen wir schon mit Waren-Wirtschaften versus Arbeiter-Wirtschaften, denn mit Prielen und Fähren kann man zwei oder mehr getrennte Arbeiter-Wirtschaften haben, die sich eine einzige Waren-Wirtschaft teilen. Aber Asymmetrie in der Erreichbarkeit zwischen Fahnen ist aktuell schlicht überhaupt nicht vorgesehen. Die Komplikationen, die dieses Konzept mit sich bringt, machen eine Umsetzung daher de facto unmöglich.

Was zudem noch dazukommt: Wenn du nur einen einzigen Koloniehafen für den Plankenexport öffnest (oder ihn übersiehst), geht der gesamte Sinn der Sache verloren, weil die Planken dann trotzdem aus der Kolonie zum Festland exportiert werden; nur gegebenenfalls über einen Umweg, weil die kürzeren Routen gesperrt sind. Da muss der Spieler extrem aufpassen um das Gewollte wirklich zu erreichen. Die Widelands-Wirtschaft selbst hat kein Konzept von teilautarken "Regionen" (etwa einer Insel) und kann daher hier auch nicht aushelfen und "raten" was wohl gewünscht ist.


Top Quote
kaputtnik
Avatar
Joined: 2013-02-18, 20:48
Posts: 2554
OS: Archlinux
Version: current master
Ranking
One Elder of Players
Location: Germany
Posted at: 2023-07-30, 13:19

Der gesamte Wirtschafts-Code von Widelands beruht auf der Annahme, dass zwei Fahnen A und B genau dann in derselben Wirtschaft sind, wenn ein Weg von A nach B existiert.

Aus meiner Sicht ist das das größte Problem an Widelands. Denn das hat zur Folge das je größer das Wirtschaftssystem ist, desto ineffektiver wird es: Sehr wahrscheinlich wird es passieren das eine Baustelle Waren benötigt und diese Waren einen weiten Weg zurücklegen obwohl in der Nähe der Baustelle Produktionsstätten für die Waren sind. Das Problem ist das der Spieler keinen (kaum) Einfluss darauf hat. Aber, auch auf lange Sicht, wird sich daran wohl kaum etwas ändern.

Warenhäuser so einzustellen das sie bestimmte Waren bevorzugen, oder die Einlagerung zu verbieten, ist meines Erachtens immer Problematisch und führt oft zu Problemen wie z.B. Warenstaus auf Straßen.

Gerade im Zusammenhang mit Schifffahrt hilft eigentlich nur sehr viele Schiffe zu bauen, damit Waren nicht zu lange in einem Hafen herumliegen. Auch wenn die Schiffe dann oft nur mit einer einzigen Ware unterwegs sind und meistens über Umwege zum Zielhafen der Ware gelangen.


Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2747
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2023-07-31, 10:01

Auf verschiedenen Karten ist es schon sehr sinnvoll mit den Einstellungen der Warenhäuser die Wirtschaft zu optimieren. Z.B. die Herausforderungskarte concentric Rings von king_of_nowhere ist ohen solches management nur schwer zu gewinnen.


Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 223
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2023-08-01, 17:07

Das möglichst viele Schiffe gebaut werden, die dann in einer Perlenreihe von Hafen zu Hafen pendeln ist aus meiner Sicht nicht beste Lösung.
Die Schiffe werden so nicht effizient genutzt, wenn Sie nur sehr wenige Waren transportieren.
Hier gibt es zwei Komponenten für die Effizienz : Effizienter schneller Warentransport und Effiziente Nutzung der Schiffe.
Insgesamt wäre es am effizientesten, wenn die Schiffe mehr Waren aufnehmen, also am Hafen verweilen und dann zwischen den jeweiligen Häfen in einen symmetrischen Takt fahren.
Symmetrischer Takt, Schiff A fährt von Hafen A los, Schiff B fährt zeitgleich von Hafen B los. In der Mitte der Strecke zwischen Hafen A und Hafen B, treffen sich Schiff A und Schiff B.
Bei diesen Konzept fließt dann ein :
* Anzahl aller verfügbaren Schiffe,
* Anzahl an Häfen, daraus ergibt sich, wie viele mögliche Verbindungen es zwischen den einzelnen Häfen gibt,
* Welche Verbindungen zwischen welchen Häfen beansprucht werden, also wo Waren per Schiff transportiert werden müssen,
* Vorgabe Anzahl an immer zur Verfügung stehenden Schiffen, für Expeditionen oder zum Umrüsten zum Kriegsschiff,
* Fahrzeit zwischen den einzelnen Häfen (
Fahrzeit Strecke + Fahrzeit Strecke +
Wartezeit Hafen 1 + Wartezeit Hafen 2 +
Durchschnittliche Laden/Entladen Zeit Hafen 1 (Momentan 0s) + Durchschnittliche Laden/Entladen Zeit Hafen 2 (Momentan 0s)
)
Ich verstehe das von Nordfriese beschriebene elementare Problem. Es liegt eben an der Struktur von Widelands.
Deshalb sollte erstmal nichts daran verändert werden, da Elementare Veränderungen oft schwierig und langwierig sind.
Eine Lösung für das Problem mit den Wirtschaftsvorgaben wäre, diese zu teilen, wenn eine weitere Kolonie entsteht.
Defakto existiert das Problem doch schon vor der Seefahrt, durch Lagerhäuser die nicht miteinander verbunden sind.
Wären technisch gesehen, genauso Kolonien, eigenständige Wirtschaften.

Eine Lösung wäre, wenn die Wirtschaft getrennt wird, pro Wirtschaft (Kolonie) eine eigene Warenvorgabe (Warenvorgabe Kolonie = Warenvorgabe Alle / Anzahl Wirtschaften (Kolonien) ),
pro Wirtschaft eine eigene Bestellungen-Liste, so das Bestellungen von Waren und Arbeitern zuerst in der Kolonie geprüft werden, wenn dort nicht möglich dann wird die Bestellung global,

Aber ich merke gerade beim schreiben, dass das Thema schwierig ist. Ich will hier nicht zu viel schlechte Lösungsvorschläge präsentieren, daher lasse ich das.
Das ist zu komplex und die effizienteste / schnellste Wegefindung für Waren und Arbeiter in diesen Kontext habe ich noch gar nicht berücksichtigt.

Ergänzung zum Abschnitt Schiffe :
Noch effizienter wäre es, wenn bereits die Ware entsteht, dies mit in den Schiffstransport einfließt.
Voraussichtliche Zeit der Ware bis Ankunft im Hafen + Zeit bis Schiff Ankunft am Hafen + Anzahl an zu transportierenden Waren + Welche Ware eine höhere Transport Priorität hat.
Schwierig und momentan nicht mein Fokus, der gerade auf Öffentlichkeitsarbeit und der KI liegt.


Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 2058
OS: Debian Testing
Version: Latest master
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2023-08-01, 19:39

Eine Wirtschaft ist in Widelands definiert als alle Fahnen, die über Straßen und Häfen miteinander verbunden sind. Zwei getrennte Wirtschaften agieren unabhängig voneinander, mit eigenen, separaten Wirtschaftseinstellungen und Request-Supply-Zuordnung. "Globale" Bestellungen sind in diesem Sinne nicht sinnvoll, denn entweder ist die "Kolonie" (nicht vergessen: dies ist kein spielmechanisches Konzept, sondern lediglich eine nicht präzise definierte Vorstellung des Spielers) eine eigene, unabhängige Wirtschaft (sodass schlicht kein Warenaustausch mit anderen Wirtschaften möglich ist) oder ein nicht abgrenzbarer Bestandteil einer größeren Wirtschaft.

Eine teilweise wirtschaftliche Unabhängigkeit einer Kolonie wäre ein ganz neues Konzept. Ich sehe durchaus den Nutzen, aber auch den Aufwand. Wir müssten zumindest:

  1. Festlegen, wie eine Kolonie spielmechanisch zu definieren ist. Wird vom Spieler festgelegt, welche Fahnen als Kolonie anzusehen sind? Wenn ja, wie kann er das ohne erheblichen Aufwand und ohne hohe Fehleranfälligkeit festlegen? Wenn nein, wie soll der Algorithmus aussehen, der in einem allgemeinen Straßennetzwerk Kolonien effizient und sinnvoll festlegt?
  2. Den gesamten Request-Supply-Code dahingehend umschreiben, Zuweisungen innerhalb derselben Kolonie zu bevorzugen und Zuweisungen zwischen unterschiedlichen Kolonien möglichst zu unterlassen. Und dann eine zuverlässige, effiziente Erkennung von Sondersituationen implementieren, wann Transporte zwischen zwei Kolonien akzeptabel sind.
  3. Der Algorithmus muss auch selbstständig festlegen können, welche Waren eine Kolonie importieren und exportieren soll und welche nicht.
  4. Überlegen, wie wir mit Wirtschaftszieleinstellungen umgehen.

Wenn wir so ein System hätten, gäbe es noch viele andere aufregende neue Features, die man damit sehr schön umsetzen könnte. Aber der Aufwand, das alles erst mal klarzumachen und zum Laufen zu bringen, wäre schlicht enorm. Außerdem ist die aktuelle Implementierung äußerst robust und auch in etlichen seltenen Cornercases gut getestet; an eine Neuschreibung werden entsprechend hohe Ansprüche gestellt werden.

Also kurz gesagt, wenn sich das jemand antun will, sehr sehr gerne, aber das kann ein ziemlich tückisches und umfangreiches Projekt werden, und die Chance, dass das tatsächlich umgesetzt wird, sehe ich eher gering.


Re Schiffe: Die Auslastung der Schiffe sehe ich als irrelevant an. Wichtig ist nur, dass möglichst alle Waren zügig ans Ziel gebracht werden. Ein Schiff im Hafen warten zu lassen, ob vielleicht noch eine andere Ware kommt, obwohl es für diese auch noch genug andere freie Schiffe gäbe, ist ineffizienter als beide Waren mit jeweils einem eigenen Schiff loszuschicken. In einer kleinen Seefahrts-Wirtschaft gibt es wenig Warenaustausch, sodass hier das Abwarten meist schlechter wäre; und dass man eine große Seefahrts-Wirtschaft mit nur einer kleinen Handvoll Schiffe nicht sinnvoll bedienen kann, sollte logisch sein.

In die Vorausplanung des Schiffsfahrplans auch künftige Waren einfließen zu lassen ist eine gute Idee. Jede Ware und jeder Arbeiter berechnet beim Anfang des Transports die gesamte Route, sodass sich mit moderatem Aufwand die Ware / der Arbeiter schon im Voraus am Hafen ankündigen kann »in voraussichtlich 36000 ms kommt 1 Ware in Hafen X an zur Verschiffung nach Hafen Y«. Die Integration in die Planung wäre ein bisschen schwieriger, würde vom Prinzip her aber wunderschön dazu passen (Vorausplanung für erwartete zukünftige Situationen ist eines der Hauptmerkmale des aktuellen Schiffsplanungsalgorithmus).


Top Quote