![]() |
Szenario für die Filtertechniken: ▣ ClearSorterRealDEMO |
Ein einfacher Sortierkreislauf – und seine Tücken
Wir starten mit einem einfachen Sortierkreislauf: Eine Quelle erzeugt acht Materialien aus, die zusammengeführt und über ein einzelnes Band geleitet werden. In der Community sagt man dazu liebevoll „Sushi-Band“, da sich alle Verbraucher einfach am Band nach Bedarf bedienen.
Jedes Objekt wird auf von Band identifiziert, das bei jedem Item einen Puls ausgibt. Dieser Puls landet auf einem Kombinator für Vergleiche, der von einem Kombinator für Konstanten die Liste mit den 8 erlaubten Materialien gespeichert hat und für jedes davon ein „–1“-Signal hält. Was passiert nun?
-
Kommt ein erlaubtes Material, heben sich +1 und –1 gegenseitig auf → Ergebnis: 0
-
Kommt ein fremdes Material, bleibt ein Restwert übrig → „Das gehört hier nicht hin“
![]() |
erste Version des dynamischen Filters mit Splittern |
Diesen Wertnutzen wir als Startsignal für den gesamten Filterprozess.
Damit hören die Gemeinsamkeiten mit einfachen Splittern aber auf. Wir brauchen nämlich eine saubere Synchronisierung, sonst schaltet der Filter zu früh, zu spät oder bleibt hängen.
Unerwünschtes Material bekommt in meiner Schaltung einen Timer: Es wird zu einem Wert von –17 gemacht. Die Zahl 17 ist nicht magisch – sie entspricht der Zeit (in Systemticks), die das Material vom Detektor bis zum Splitter benötigt. „-17“ passt hier kann aber angepasst werden.
Der Ablauf ist einfach: Unerwünschtes Material wird erkannt → der Timer bekommt den Wert –17 → negative Zählerstände werden in eine „1“ umgewandelt → das aktiviert den Filter im Splitter UND der Zähler wir um 1 erhöht → nach 17 Ticks ist der Zähler auf 0 → der Splitter ist bereit für das nächste Material
Damit sind wir schon auf einem Niveau, das ein statischer Splitter niemals erreichen kann: Der Filter arbeitet dynamisch und in Echtzeit.
Wenn der Zähler Amok läuft
Was passiert aber, wenn eine Sorte Material sehr schnell hintereinander kommt?
Zum Beispiel eine Welle blauer Pakete?
Nun – dann läuft der Zähler schneller hoch, als der Timer zurückzählen kann. Funktioniert das noch? Ja. Schön ist es nicht. Der Zähler schafft es irgendwann wieder zurück, aber die Performance sinkt, und manchmal reagiert das System träge. Um dieses Verhalten zuverlässig zu verhindern, habe ich eine Reset-Logik ergänzt. Sie sorgt dafür, dass der Zähler jeden einzelnen Puls vom Identifikationsband wieder auf 0 gesetzt zurückgesetzt wird.
Eine weitere Besonderheit zeigt sich, wenn wenn ich testweise einen ganzen z.B. Schwung Fässer auf das Band werfe. In solchen Situationen kann es passieren, dass zwei erlaubte Materialien im exakt gleichen Tick am Identifikator vorbeikommen. Dan wird 2 Fässer identifiziert, was dann nicht gelöscht wird. Das führt dazu, dass ein eigentlich korrektes Material pausgeschleust wird. Für einen echten Betrieb ist das natürlich untragbar.
Genau an dieser Stelle zeigt sich, warum neben der Reset-Logik noch eine weitere Schutzmaßnahme notwendig ist. Die Lösung besteht darin, jedes Signal grundsätzlich auf „1“ zu begrenzen, unabhängig davon, wie viele Items gleichzeitig hereinschneien. Erst diese Signalbegrenzung stabilisiert das System endgültig und verhindert, dass Doppelereignisse den Filter durcheinanderbringen.
Sobald die Grundlogik stand, habe ich ein vollgemischtes Förderband erzeugt, auf dem sich alles tummelt, was Factorio hergibt. Gelbe Pakete, blaue Pakete, grüne Pakete, Betonmarkierungen, Textblätter – völlig egal. Die Schaltung erkennt zuverlässig alles, was nicht auf der Liste steht, und schleust es aus.
-
Der Prozess läuft ohne Stau
-
Der Fluss darf nie stehen
-
Der Filter ist immer im richtigen Moment aktiv
-
Der Splitter verliert nie den Überblick
![]() |
FINALE Version des dynamischen Filters mit Splittern |
Das ist die Stärke dieser dynamischen Splitterlogik.
In der Praxis gibt es zwei grundsätzliche Wege, einen dynamischen Filter aufzubauen. Entweder man definiert eine Positivliste, also eine feste Menge an Materialien, die ausdrücklich erhalten bleiben sollen. Alles, was nicht in dieser Liste steht, wird automatisch ausgeschleust. Oder man arbeitet mit einer Negativliste, die genau die Materialien enthält, die man entfernen möchte, während der gesamte Rest ungehindert passieren darf.
Welche Variante man wählt, hängt immer davon ab, was man über seinen Materialstrom weiß: Habe ich einen klaren Überblick über die erlaubten Materialien, nutze ich die Positivliste; kenne ich nur die Störstoffe oder Fremdmaterialien, arbeitet die Negativliste effizienter. In beiden Fällen liegt der Kern der Lösung darin, das vorhandene Wissen vollständig im Kombinator abzubilden. Alles, was dort eingetragen ist, wird gezielt behandelt, und alles andere wird konsequent entweder ausgeleitet oder im Hauptstrom weitergeführt. Die entsprechenden Listen und Rezeptdetails sind vollständig im Blueprint hinterlegt.
Natürlich könnte man auch sagen: „Wozu die ganze Kombinatorlogik? Ich nehme einfach Greifer!“ Ja, könnte man. Und ja, ich habe das getestet. Ausführlich auch mit mehreren Greifern. Es hilftalles nichts. Sobald der Materialstrom wirklich chaotisch ist, entstehen Lücken. Das Ergebnis ist eindeutig:
-
Greifer verpassen Objekte
-
Während der Drehbewegung können sie nicht greifen
-
Große Materialströme überfordern sie
-
Permanente Nachsortierung ist ineffizient
Kurz gesagt: Greifer skalieren nicht. Splitterlogik schon.
Abschluss und Ausblick
Damit haben wir ein voll dynamisches Filtersystem, das nicht nur Splitter sinnvoll einsetzt, sondern das gesamte Prinzip der Förderlogik in Factorio erweitert. Es ermöglicht flexible Filterung, intelligente Verzweigungen und stabile Sortiermechanismen selbst in hochkomplexen Netzwerken.
Ich freue mich auf euer Feedback – und natürlich auf eure Anpassungen, eure Tests und eure eigenen Varianten.
Viel Spaß beim Ausprobieren!
Blog: , Seite:
Version: 1.4 April 2025, Kontakt: E-Mail Martin Wölker
Pirmasens, Germany, 2018-,
ausgelesen am: , Licence
CC BY



Kommentare
Kommentar veröffentlichen