Alt-F4 #28 - ROFL 19.03.2021
übersetzt von EDLEXUS, lektoriert von dexteritas, Nanogamer7
In dieser schönen Märzwoche wird uns Ph.X in seinem ersten Artikel sein aufgegliedertes System für eine modulare Fabrik mithilfe isolierter Module, welche durch ein Logistic Train Network verbunden werden, darstellen. Inspiriert von Erfahrungen aus der Software-Entwicklung nutzt Ph.X Konzepte der Modularen Programmierung zu seinem Vorteil.
Außerdem bieten wir jetzt einen abonnierbaren Email-Newsletter an. Falls du nicht auf Reddit, dem Forum oder unserem Discord unterwegs bist, gibt es jetzt die beliebte Möglichkeit eines Email-Newsletters. Gib einfach hier deine Mailadresse an, und du wirst jeden Freitag informiert, wenn es eine neue Ausgabe gibt. Wir werden deine Adresse natürlich nur für Alt-F4 verwenden, und dich nicht mit anderem irrelevanten Dingen zumüllen.
Rezept-Orientiertes Factorio Leben Ph.X
Factorio besitzt ein komplexes Netzwerk aus Produktionsketten (Spaghetti), welche das Spiel zu einer spannenden Herausforderung machen. Dieses komplexe Konstruktionsproblem ist ähnlich zu Herausforderungen, die in der Programmierung vorkommen, deswegen ist es denke ich sinnvoll, Erfahrungen aus diesem Feld zu verwenden, um das Spielerlebnis zu verbessern.
Was ist „ROFL“
Alle mit etwas Programmiererfahrung haben wahrscheinlich schonmal von objektorientierter modularer Programmierung gehört. Dieses Paradigma versucht Rezept-Orientiertes Factorio Leben (ROFL) nachzustellen. Modulare Programmierung ist ein Paradigma, bei dem das Programm in einzelne, unabhängige und austauschbare Module aufgeteilt wird, sodass jedes Modul alles beinhaltet, um einen einzelnen Aspekt des Programms auszuführen. In ROFL unterteilen wir die Fabrik in unabhängige und austauschbare Subfabriken, die sich immer nur um genau ein Rezept kümmern.
Wie in den meisten Philosophien, müssen wir den Archē als Ursprung für alles finden. In unserem Fall ist das das Rezept. Erweiterte Schaltkreise, beispielsweise, können in jeder Montagemaschine gefertigt werden, welche möglicherweise von verschiedenen Modulen beeinflusst werden, wo die benötigten Rohstoffe über Fließbänder, Logistikkisten oder eine angrenzende Kupferkabelfabrik geliefert werden, aber unabhängig davon, wie sich diese anderen Faktoren verändern, das Rezept selbst bleibt immer gleich. Es werden immer Kupferkabel, elektronische Schaltkreise und Plastik benötigt. Das Rezept stellt somit ein Atom in Factorio dar, eine unteilbare Einheit, die nicht weitervereinfacht und aufgeteilt werden kann.
Basierend auf einem bestimmten Rezept wird eine Subfabrik in ein Modul verpackt. Ein zusätzliches Logistiksystem wird verwendet, um Material anzuliefern und fertige Produkte anzutransportieren. Das Ziel ist, eine hohe Kohäsion innerhalb des Moduls zu erzielen und gleichzeitig die Module möglichst unabhängig voneinander zu halten. Hohe Kohäsion bedeutet, dass in dem Modul alle benötigten Montagemaschinen, Greifer, Fließbänder, Effektverteiler und Strommasten enthalten sind, damit das Modul ohne zusätzliche Bauten unabhängig arbeiten kann. Unabhängigkeit zwischen den Modulen meint, dass die Module nur über die vorher festgelegten Schnittstellen (Strom und das Schienennetz) miteinander interagieren und daher einfach austauschbar sind.
Um diese Idee besser umzusetzen, werden in den folgenden Beispielen die LTN - Logistic Train Network, die AAI Containers & Warehouses und die Miniloader Mod verwendet. Alle Blaupausen für die gezeigten Beispiele sind hier erhältlich.
Schnittstellendesign
Bevor wir damit beginnen, erste Subfabriken zu designen, müssen wir erst ein universelles Logistiknetz als Schnittstelle zwischen den Modulen ausdenken. Obwohl ein Main-Bus oder Logistikroboter als solches System fungieren können, übertrifft ein Cityblock-Schienensystem diese Lösungen in Durchsatz, Wiederverwendbarkeit und allgemeiner Coolheit.
In Vanilla können Züge nur einen vorher festgelegten Fahrplan abarbeiten, was nicht besonders flexibel und „logistisch“ ist. Das ist der Punkt, an dem Logistic Train Network (zu Deutsch: „Logistisches Zugnetzwerk“) zum tragen kommt. Mit LTN werden Züge in einem Depot geparkt, so wie Logistikroboter in Hangars warten. Wenn es zu einer logistischen Nachfrage kommt, wählt das System einen passenden Zug aus dem Depot aus und erstellt einen passenden Fahrplan, um die geforderten Gegenstände von der anbietenden Station abzuholen und zur nachfragenden Station zu transportieren, um danach wieder ins Depot zurückzukehren. Aber im Gegensatz zu Logistikrobotern, die sich ähnlich verhalten, können sich Züge nicht selbstständig be- & entladen, so das Greifer an den Bahnhöfen benötigt werden. LTN ist leistungsstärker als Logistikroboter, da eine große Menge Gegenstände oder Flüssigkeiten mit hoher Geschwindigkeit transportiert werden können.
In diesem Beispiel verwende ich ein zweigleisiges Linksverkehr-Schienensystem, welches mir erlaubt, Signale zwischen den Schienen zu platzieren. An Kreuzungen kann gerade aus gefahren oder links abgebogen werden, hautsächlich um Platz zu sparen. Die meisten Stationen haben ein Zuglimit von zwei, sodass maximal ein Zug außerhalb des Bahnhofes warten muss. Abschnitte, welche durch wartende Züge blockiert werden, können durch das vollständig verbundene Netzwerk umfahren werden.
Diese Module werden so in einem Raster angeordnet, dass der Platz zwischen den Modulen für Schienen, Solargeneratoren und Logistiknetztrennung genutzt werden kann. Roboter sind gut über kurze Entfernungen, aber katastrophal über lange Strecken, weswegen dort Züge zum Einsatz kommen. Über getrennte Logistiknetze werden die Roboter daran gehindert, an solchen Langstreckenflügen teilzunehmen.
Als Zuggröße habe ich mich für den kleinstmöglichen Zug mit einer Lokomotive und einem Wagon entschieden, um die Größe zu minimieren und mir die gleichmäßige Beladung an den Bahnhöfen zu sparen. Aufgetankt werden die Züge im Depot, wohin sie nach jeder Fahrt zurückkehren.
Moduldesign
Beginnen wir mit dem einfachsten Beispiel, Eisenzahnräder: Einem Rezept mit einem einzelnen benötigten Rohstoff und einem einzelnen Produkt. Eine Logistikstation an der unteren Kante fordert 8000 Eisenplatten an und eine Logistikstation oben bietet die fertigen Produkte (hier also Eisenzahnräder) aus dem angeschlossenen Warenhaus im LTN zur Abholung an.
Da die Ein- und Ausgänge dieses Moduls über Züge realisiert werden, werden Modifikationen und Verbesserungen innerhalb des Produktionszweiges im Modul keinen Einfluss auf andere Module haben. So können wir zu einem Design mit Effektverteilern wechseln, ohne andere Module in der Fabrik zu beeinflussen.
Als nächstes betrachten wir das etwas komplexere Rezept von erweiterten Schaltkreisen. Indem wir die Logistikstation so einstellen, dass mehrere Rohstoffe angefordert werden, können wir alle Rohstoffe an eine Station anliefern lassen. So sind alle Rohstoffe in einem Warenhaus zusammen, und wir können filternde Belader (funktionieren ähnlich wie filternde Greifer) verwenden, um die Materialien auf getrennte Fließbänder aufzuteilen, um sie den Montagemaschinen zuzuführen.
Das funktioniert genauso für Rezepte, welche Flüssigkeiten benötigen, nur das wir dort dann Kesselwägen verwenden müssen.
Es gibt auch einige unkonventionelle Rezepte, wie Forschung, ein Dampfkraftwerk oder Raketensilos.
Vor- und Nachteile von ROFL
ROFL‘s Zielgruppe sind Menschen mit Ingenieursmäßigen Denken. Es vereinfacht es, Probleme aufzuteilen und einzeln abzuarbeiten. Wenn ein bestimmtes Rezept hergestellt werden muss, kann man einfach im Schienennetz die Stationen für die benötigten Materialien passend einstellen und dann die Produktionsanlage dazwischen konstruieren. Falls die bestehende Anlage nicht ausreicht, kannst du einfach die Anlage kopieren und ein weiteres Mal einfügen, ohne dir viel Arbeit mit dem Anschließen zu machen.
ROFL ist nicht für perfekte Produktion optimiert, da es keine Produktionslinie mit perfekten Verhältnissen darstellt, und so ist es typisch, das die Anlage manchmal nicht produziert, aufgrund fehlender Rohstoffe oder verstopfter Ausgänge. Jeder Artikel muss auf einen Waggon geladen und von diesem entladen werden, was eine Menge Input- und Output-Engpässe mit sich bringt, am typischsten bei Kupferdraht, wo die Anzahl der Produkte die Anzahl der Rohstoffe übersteigt und die Anzahl der Stapel hoch ist, während die Nachfrage riesig ist. Es gibt auch ein großes Rückhaltevolumen, da in den Warenhäusern in jedem Modul viele Gegenstände vorgehalten werden. So ist es schwierig, Gegenstände mit Unterproduktion zu erkennen (es ist aber sicher Eisenerz). Das Schienennetz um die einzelnen Module zu verbinden ist teuer, und stellt ein erhebliches Unfallrisiko dar (zum Glück gibt’s den Spidertron).
Abschlussgedanken
ROFL ist eher ein Denkmuster, um komplexe Probleme herunterzubrechen, anstatt ein fertiges Blaupausenbuch. Die oben beschriebenen Beispiele sind nur eine Lösung, die ROFL als Grundgedanke verwendet. LTN zu verwenden, um ein Schienennetz zu bauen, wird von einigen als ein bisschen schummelnd gesehen, aber diese Idee kann auch für Mainbus-Systeme und mehr verwendet werden. Es wird nie einen „korrekten“ Weg geben, Factorio zu spielen, und diese Vielfalt ist das, was das Factorio so großartig macht.
Beitragen
Wie immer suchen wir nach Leuten, die zu Alt-F4 beitragen wollen, sei es mit einem Artikel oder durch Hilfe bei Übersetzungen. Wenn du etwas Interessantes im Kopf hast, das du mit der Community in einer eleganten Art teilen möchtest, hier kannst du das tun. Falls du dir unsicher bist, beantworten wir gerne Fragen zu Inhalt und Struktur. Falls das nach etwas klingt, woran du interessiert bist, tritt unserem Discord bei, um es nicht zu verpassen!