Modding Union

Edain Mod => [Edain] Vorschläge => Allgemeine Vorschläge => Thema gestartet von: Peggado am 11. Mär 2025, 15:31

Titel: Ein Hauch von Warenketten
Beitrag von: Peggado am 11. Mär 2025, 15:31
Hi,

dies hier ist mein Versuch unterschiedliche Rohstoffe und Waren sowohl technisch, als auch konzeptionell in Bfme2 einzuführen. Vorwegzunehmen ist, dass das Konzept an meinen Modding-Kenntnisstand angepasst ist und sich möglicherweise an manchen Stellen etwas umständlich anfühlt. Auch krempelt es das Wirtschaftssystem von Edain komplett um und ist daher nicht als konkreter Vorschlag für Edain zu verstehen. Ich persönlich könnte mir allerdings einen Aufbau-Spielmodus oder spezielle Karten vorstellen, die dieses Konzept umsetzen.
Inspiert ist das Konzept durch Thals Händler, dem Leuchtfeuer, Isengarts Warenträgern und sämtlichen Diskussionen zu Thema Rohstoffe und Waren hier im Forum.


Notwendige Abgrenzung von Waren zu den standartmäßigen Rohstoffen in BFME:

Um Verwechslungen zu vermeiden, werde ich die standardmäßig in BFME vorkommenden Rohstoffe als Geld bezeichnen. Geld bleibt im Spiel natürlich in seiner jetzigen Form und Funktion erhalten. Da es nicht möglich ist, Waren analog zum Geld in BFME einzuführen (zumindest mir nicht), sollen Waren im Spiel anders funktionieren. Im Gegensatz zum Geld werden sie nicht aktiv beim Kauf von Gegenständen in festen Beträgen ausgegeben, sondern unterliegen einem stetigen, passiven Verbrauch, sofern bestimmte warenabhängige Prozesse im Spiel aktiv sind. Sind keine oder zu wenige Waren vorhanden, kommen die davon abhängigen Prozesse nahezu zum Erliegen. Weiter unten folgen dazu einige Beispiele.


Wie treten Waren im Spiel auf?

Jedes Volk erhält ein Warenlager als Innengebäude. Hier werden sämtliche Waren gelagert – in Form von levelbaren, an das Warenlager gebundenen Objekten (wie so oft in meinen Konzepten). Die Erfahrung eines Objekts gibt dabei die vorhandene Menge der korrespondierenden Ware an. Die Warenstufen reichen von 0 bis 11 – ein Wert, der nach Geschmack variieren kann.
Ich stelle mir vor, dass Waren in Kisten oder Fässern gelagert werden. Ein erreichtes Level einer Ware entspricht einer vollständig befüllten Kiste. Der Erfahrungsfortschritt zum nächsten Level zeigt an, wie viel Platz noch in der aktuellen Kiste ist.
Jede Ware ist zudem mit einem Command-Button im Command-Set des Warenlagers vertreten. Durch Anklicken eines Buttons wählt der Spieler die Ware aus und erhält eine genaue Anzeige über die vorhandene Menge (also das aktuelle Level und den Fortschritt in der Erfahrungsleiste). Hier kann er auch das Wachstum und den Verbrauch der Ware beobachten, indem er die Erhöhung bzw. Verringerung der Erfahrung in der Leiste verfolgt. Für den Spieler wirkt dies fast wie ein Untermenü innerhalb des Command-Sets des Warenlagers.

Technisch:


Warenproduktion

Warenproduktion bedeutet Erfahrungsgewinn und das Aufleveln der Warenobjekte. Sie wird sowohl optisch als auch technisch durch Warenlieferungen realisiert. Diese Lieferungen treten in Form von Trägern, Ochsenkarren oder ähnlichen Transportmitteln auf und bewegen sich vom Produktionsstandort zum Lager. Das System ist nahezu eins zu eins vom wunderschönen Händlersystem Thals abgeschaut.
Erreicht eine Lieferung das Lager, bewirkt sie einen Erfahrungszuwachs im entsprechenden Warenobjekt.

Technisch:


Warenverbrauch

Warenverbrauch bedeutet Erfahrungsverlust und das Herabstufen der Warenobjekte.
Im Gegensatz zur Warenproduktion erfolgt der Verbrauch im Allgemeinen nicht über einen sichtbaren Vorgang. Die Warenmenge im Lager verringert sich unter bestimmten Voraussetzungen passiv (das hat hauptsächlich technische Gründe).  Damit dieser Unterschied zur Produktion die Immersion nicht zu stark beeinträchtigt, sollen ausschließlich Inbase-Gebäude Waren aus dem Lager verbrauchen.

Technisch:


Sichtbarkeit von Waren

Mit den Command-Buttons im Warenlager kann ein Spieler zwar auf alle relevanten Informationen zu einer Ware zugreifen, jedoch erfordert dies mindestens zwei Klicks. Diese zusätzliche Interaktion könnte unter Umständen als umständlich empfunden werden.
Darüber hinaus sollte der Produktionsstand aller Waren gleichzeitig und mit möglichst geringem Aufwand für den Spieler einsehbar sein.
Mögliche Lösungsansätze:
Es gibt sicherlich noch weitere oder bessere Lösungsansätze. Von den genannten bevorzuge ich eine Kombination aus Variante 1 und 3, bin mir jedoch unsicher, inwiefern sie technisch umsetzbar sind.


Weitere Mechaniken zu Waren:



Warenketten für Gondor

Gondor erhält die Waren Stein, Nahrung (Brot), Eisen und Waffen. Zusätzlich verfügen die Gondorianer über die „abstrakten Waren“ Bevölkerungsstufe, Festungsausbau und Schmiedeauftrag.

Abstrakte Waren funktionieren im Prinzip ähnlich wie normale Waren, weisen jedoch wesentliche Unterschiede auf:

Nahrung
Zunächst werden Farmen auf Außenflags errichtet. Um die Nahrungsproduktion zu starten, muss der Spieler zusätzlich eine Windmühle mit angeschlossener Bäckerei bauen (in einem Modell). Diese wird entweder durch freies Bauen, über einen beschwörbaren Buildplot oder als reine Beschwörung errichtet. Die Windmühle/Bäckerei verfügt über eine Fähigkeit, mit der eine nahegelegene Farm (begrenzte Reichweite!) ausgewählt werden kann – ähnlich wie Thal Handelsrouten.
Die Farm produziert fortlaufend Getreidelieferungen, die sich zur Windmühle bewegen.
Dort angekommen, werden sie mit einem kurzen Delay in einen Lieferwagen mit Brot umgewandelt. Während dieser Verzögerung könnte eine Animation den Verarbeitungsprozess visualisieren. Die Lieferung mit Brot bewegt sich anschließend zum Warenlager und steigert bei der Ankunft die Erfahrung des Brotobjekts.
Die Nahrung im Warenlager wird von Wohnhäusern verbraucht:


Eisen & Waffen
Die Produktion von Eisenbarren funktioniert nach dem gleichen Prinzip wie die Nahrungsproduktion:
Minen auf Außenflags beliefern eine Eisenschmelze (das Gegenstück zur Windmühle).
Die Schmelze produziert Eisenbarrenlieferungen, die dem Warenlager zugeführt werden. Schmieden verbrauchen Eisenbarren und stellen daraus Waffen her, die wiederum per Waffenlieferung im Warenlager eingelagert werden.

Einheitenproduktion & Waffenverbrauch
Jede Ausbildung einer Einheit verbraucht eine bestimmte Menge an Waffen.
Sind keine Waffen im Lager, pausiert die Produktion in den Kasernen vollständig.

Schmiedeaufträge & Technologien
Schmieden haben die Möglichkeit, Schmiedeaufträge durchzuführen.
Der Spieler kann über das Commandset der Schmiede einen Auftrag kaufen.
Dadurch wird ein entsprechendes Schmiedeauftrag-Objekt beschworen.
Dieses Schmiedeauftrag-Objekt sammelt automatisch Erfahrung, solange produktive Schmieden vorhanden sind.
Sobald ein Level erreicht wird, gilt der Auftrag als abgeschlossen, und der Spieler erhält ein entsprechendes Technologie-Upgrade (z. B. Schwere Rüstung).
Es kann immer nur ein Schmiedeauftrag gleichzeitig bearbeitet werden.
Während eines aktiven Schmiedeauftrags steigt der Eisenverbrauch spürbar an.

Stein
Steinbrüche auf Außenflags erzeugen Steinlieferungen, die direkt ins Warenlager transportiert werden.Im Gegensatz zu Eisen und Nahrung gibt es hier keinen zusätzlichen Verarbeitungsschritt.
Stein wird für den Bau von Inbase-Gebäuden benötigt. Der Spieler wählt einen Buildplot und kauft das gewünschte Gebäude mit Geld. Anstelle eines fertigen Gebäudes erscheint jedoch nur eine Baustelle. Diese Baustelle ist ein levelbares Objekt, das nach und nach Stein verbraucht. Sobald das Objekt ein Level aufsteigt, ist das Gebäude vollständig errichtet. Ist kein Stein im Lager, pausiert der Baufortschritt.

Optional: Festungsausbau durch Steinverbrauch
Ein passiver Steinverbrauch durch eine Baumeistergilde (besserer Name gesucht) könnte eine Festungsausbaustufe steigern – analog zur Bevölkerungsstufe.
Mit steigender Festungsausbaustufe werden nach und nach weitere Inbase-Gebäude und die Möglichkeit, Festungsupgrades zu erforschen, freigeschalten.
Baumeistergilden sind Inbase-Gebäude mit den Funktionen:

Markt
Sobald der Markt im Spiel ist, können Waren direkt über ihre Commandsets gekauft und verkauft werden. Der Markt ist entweder wie bisher ein eigenes Gebäude, oder das Warenlager lässt sich im Spielverlauf zum Markt aufwerten.  Falls der Markt ein separates Gebäude bleibt, sollte er über sein Commandset auf die Waren verlinken können.


Warenketten für Isengart

Isengart verfügt über die längsten Warenketten im Spiel. Die Waren, die explizit im Lager auftauchen, sind Holz, Nahrung, Eisenerz, Eisen, Waffen, Stahl und Stahlwaffen. Anders als bei Gondor, wo zum Beispiel Eisenerz ausschließlich implizit als Träger/Karren vorkommt, sind alle Waren bei Isengart direkt im Warenlager sichtbar.
Dafür hat Isengart mit dem „Ausbau der Industrie“ und den „Schmiedeaufträgen“ eine abstrakte Ware weniger als Gondor.

Verbrauch und Produktion von Waren

Verbrauch und Produktion von Waffen

Uruks mit Stahlwaffen

Abstrakte Waren
Der „Ausbau der Industrie“ ist eine abstrakte Ware, die über die Zeit durch die Anwesenheit produktiv arbeitender Schmelzen, Stahlwerke und Waffenkammern an Erfahrung gewinnt. Mit dem Erreichen bestimmter Level werden neue Gebäude und Fähigkeiten freigeschaltet.
Schmiedeaufträge funktionieren analog zu Gondor und werden in Waffenkammern und Stahlwerken abgewickelt.

Holz und Nahrung
Die Einführung von Holz als Ware bereitet mir einige Schwierigkeiten, weshalb ich an dieser Stelle nicht näher darauf eingehe.
Ich finde auch, dass Isengart auf irgend eine Weise auch Nahrung erhalten soll, wie genau ist noch nicht ausgearbeitet.
Titel: Re: Ein Hauch von Warenketten
Beitrag von: FG15 am 11. Mär 2025, 21:18
Sehr spannendes Konzept und sehr interessante technische Gedanken dahinter.

Ich sehe die Umsetzung schwierig an, da sie ziemlich aufwendig wäre und sowohl einiges an Code, als auch an Modellen benötigt. Und man vermutlich ingame merken würde, wie wenig die Engine doch für sowas gedacht ist.
Ich hatte mir über so eine Map schon häufiger mal theoretische Gedanken gemacht, aber bisher nicht die Idee mit Up/Downleveln oder Warenlagern allgemein in Erwägung gezogen.

Hast du den Teil mit dem Runterleveln von den Objekten schon mal ausprobiert? Ich weiß, dass Objekte weniger Erfahrung als ihre aktuelle Stufe haben können technisch, aber klappt das auch mit dem erwähnten Skript?

Wieso nur ein Warenlager, und nicht mehrere? Damit die technische Umsetzung einfacher wird?

Weitere technische Möglichkeiten sowas umzusetzen wäre mit einem LargeGroupBonus, statt Erfahrung werden FakeObjekte in der Nähe gezählt und über Weapons erstellt/getötet. Das hatten wir beim Leuchtfeuer in der ersten Iteration vor 9 Jahren so umgesetzt.
Man könnte auch ein System versuchen, wo die Waren tatsächlich ein und ausgelagert werden über ein Containmodul. Das habe ich aber noch nicht genauer durchdacht.
Titel: Re: Ein Hauch von Warenketten
Beitrag von: Peggado am 12. Mär 2025, 10:53
Danke für die rasche Antwort und das nette Feedback!

Zitat
Hast du den Teil mit dem Runterleveln von den Objekten schon mal ausprobiert? Ich weiß, dass Objekte weniger Erfahrung als ihre aktuelle Stufe haben können technisch, aber klappt das auch mit dem erwähnten Skript?
Ja, der Erfahrungsgewinn, der Erfahrungsverlust und auch das Herableveln funktionieren recht gut und flüssig. Allerdings ist die Umsetzung sehr aufwendig, und man muss stark auf das Timing achten. Beispielsweise muss sichergestellt werden, dass Erfahrungsgewinn, Erfahrungsverlust und Herableveln nicht gleichzeitig ablaufen, da in diesem Fall Erfahrungsbeträge verloren gehen würden. (Mit der Optimierung bin ich hier noch nicht ganz fertig, aber ich bin zuversichtlich.)
Hin und wieder kann es jedoch vorkommen, dass eine Iteration des Mapskripts zum Ableveln nicht greift. Dies passiert meist dann, wenn ständig zwischen zwei Leveln hin- und hergesprungen wird. Das erwies sich jedoch zumindest meiner Ansicht nach als wenig problematisch, da dabei weder Informationen noch Erfahrung verloren gehen. Das Objekt verweilt lediglich für einige Sekunden in einem zu hohen Level, bezogen auf seine tatsächliche Erfahrung.
Meine Tests hierzu beschränken sich jedoch nur auf die Grundfunktionalitäten – ich habe bislang keine vollständigen Matches mit dem Konzept bestritten.
Man kann auch (ganz?) auf Mapskripte verzichten, indem man den von dir genannten Largegroupbonus zur Ermittlung der Anzahl der Pingobjekte nutzt. Triggert man zusätzlich nach jedem Erfahrungsverlust eine Verwandlung des Objekts in sich selbst, so wird auch das Herableveln zuverlässig gewährleistet.

Zitat
Wieso nur ein Warenlager, und nicht mehrere? Damit die technische Umsetzung einfacher wird?
Ich wollte das Lager als Innengebäude, weil es mir sinnvoll erschien, dass Waren in die Basis geliefert werden. Da Bauplätze jedoch ein rares Gut sind, sollte es bei einem einzigen Lager bleiben. Mehrere Lager würden aus optischer Sicht sicherlich vorteilhaft sein, bzw. die Optik wäre leichter technisch umzusetzen. Hattest du dabei bestimmte technische Aspekte im Blick, abgesehen von der Optik? (Mir ist z. B. aufgefallen, dass sich Warenobjekte langsam vom Lager wegbewegen, wenn sich ein anderes verwandelt. Ich glaube, die Meldereiter hatten einmal ein ähnliches Problem.)
Man könnte einige Waren alternativ auch in anderen Gebäuden lagern. Beispielsweise könnte die Waffenkammer ihre produzierten Waffen direkt aufbewahren. Falls mehrere Waffenkammern vorhanden sind, würden sie alle auf dasselbe Waffen-Warenobjekt verlinken, sodass hier keine weiteren Komplikationen entstehen sollten (sofern ich nichts übersehe).

Zitat
Weitere technische Möglichkeiten sowas umzusetzen wäre mit einem LargeGroupBonus, statt Erfahrung werden FakeObjekte in der Nähe gezählt und über Weapons erstellt/getötet.
Interessanter Ansatz. Ein mögliches Problem dabei: Am Ende eines Warenproduktionszyklus würde ein Pingobjekt übrig bleiben, das vom LargeGroupBonus als Ware (oder als Teil einer Ware) erfasst wird.
Da Warenproduktionszyklen meiner Meinung nach häufig im Spiel auftreten sollten, würden im Laufe der Zeit sehr viele dieser Pingobjekte dauerhaft existieren. Inwiefern das zu Problemen führen könnte, kann ich nicht einschätzen.

Zitat
Man könnte auch ein System versuchen, wo die Waren tatsächlich ein und ausgelagert werden über ein Containmodul. Das habe ich aber noch nicht genauer durchdacht.
Das würde mich sehr interessieren. Welches Containmodul käme dir da in den Sinn? (Ich habe einmal versucht, ein GarrisonContain automatisch besetzen zu lassen – leider ohne Erfolg.)


Titel: Re: Ein Hauch von Warenketten
Beitrag von: The_Necromancer0 am 12. Mär 2025, 11:25
This is a really cool idea, it'd be interesting to create a map with this specific scenario in mind. Less focused on battle and more on securing and gathering resources.

Have you had a chance to look at the implementation of the Signal Fire's Errand Riders? We reworked them in 4.8 so they might offer some insight into how to "count" alternate resources. It doesn't offer exactly the same set of benefits as using experience but is more flexible to reducing the count than experience levels.
Titel: Re: Ein Hauch von Warenketten
Beitrag von: Peggado am 12. Mär 2025, 12:42
Thanks, I'm glad you like it
Zitat
Have you had a chance to look at the implementation of the Signal Fire's Errand Riders? We reworked them in 4.8 so they might offer some insight into how to "count" alternate resources. It doesn't offer exactly the same set of benefits as using experience but is more flexible to reducing the count than experience levels.

Yes, the Signal Fire's Errand Riders from version 4.8 and earlier versions were a great inspiration for this concept.
In fact, one of my first attempts was very similar to the Signal Fire's Errand Riders from version 4.8.
However, I realized that I needed the experience system from BFME to implement the continuous production of goods in the best way (for me). So, I tried a mixed approach, where the production of goods is linked to experience, while the appearance and spending of goods are connected to the Signal Fire concept. For me, this attempt was technically the most complex and also the most error-prone due to the communication between the two systems.
Of course, my attempts are not necessarily representative.