Alt-F4 #31 - Kombinator Crash Course  16.04.2021

Geschrieben von pocarski, T-A-R, editiert von stringweasel, Nanogamer7, Conor_, Therenas, Firerazer,
übersetzt von EDLEXUS, lektoriert von marceljoint, Nanogamer7

Inhaltsverzeichnis

Nach einer kurzen einwöchigen Pause ist Alt-F4 nun mit Ausgabe #31 wieder zurück. Diese Woche ist pocarski mit einem neuen Weg, Computer in Factorio zu konstruieren, wieder dabei, diesmal mit Kombinatoren, was sich als einfacher herausstellt, als du dir vielleicht denkst. Danach hat Big Community Games noch eine Ankündigung für das nächste spannende Event, diesmal mit Industrial Revolution als zentralem Fokus.

Kombinatoren - nichts vor dem man sich fürchten muss pocarski

Es gibt im Technologiebaum viele Forschungen, die für das Beenden des Spiels nicht nötig sind, und deshalb oft links liegen gelassen werden. Oft ist das verständlich, beispielsweise für Militärforschungen in einem friedlichen Spiel. Andere werden manchmal nicht mal in Betracht gezogen, obwohl sie das Spiel unglaublich vereinfachen würden. Eine solche Technologie ist das Schaltungsnetzwerk, welches ich in diesem Artikel etwas vorstellen werde.

Das Schaltungsnetzwerk hat vier Hauptkomponenten: Kabel, Kombinatoren für Konstanten, Kombinatoren für Berechnungen und Kombinatoren für Vergleiche.

Die drei Kombinatortypen, verbunden mit Kabeln.

Kombinatoren für Konstanten geben ununterbrochen das eingestellte Signal aus und benötigen keinen Strom; Kombinatoren für Vergleiche geben ein Signal aus, wenn eine logische Bedingung erfüllt wird und Kombinatoren für Berechnungen führen, wie der Name schon sagt, Berechnungen durch. Kabel funktionieren wie eine Art “Signal-Wolke”, in der alle Signale, die in ein Kabel hineingegeben werden, an jeder Stelle ausgelesen werden können. Rote und grüne Kabel funktionieren identisch, können aber beide mit demselben Gerät verbunden werden, ohne sich gegenseitig zu stören.

Grundbausteine

Wir befassen uns nun mit drei grundlegenden Bausteinen, die oft verwendet werden: einem Pulsgenerator, einem D-Flipflop und einem Zählwerk. Beginnen wollen wir mit dem Pulsgenerator, der wie folgt aufgebaut wird:

Pulsgenerator mit einem Kombinator für Berechnungen.

Der Pulsgenerator ist am einfachsten zu verstehen. Der Eingang ist direkt mit dem Ausgang über das rote Kabel verbunden und der invertierte Eingang wird nach der Standard Kombinatorverzögerung mit auf das Netzwerk gegeben. Da beide Werte auf demselben Kabel sind, löschen sie sich gegenseitig aus, was dazu führt, das der Ausgang genau gleich dem Eingang ist, aber nur für genau einen Tick. Durch die Verwendung des “each” (“jedes”) -Signals wird sichergestellt, das die Schaltung mit jedem Eingangssignal klarkommt. Wenn du die Schaltung signalspezifisch verwenden willst, kannst du “each” in Ein- und Ausgang mit dem gewünschten Signal austauschen. Diese Schaltung hat eine Vielzahl an Anwendungen, vor allem in Verbindung mit dem Zählwerk. Diese Schaltung eignet sich gut für Systeme, wo eine Art von Hysterese gewünscht ist, bei der ein Zustand das “S”-Signal auslöst und ein anderer das “R”-Signal.

D-Flipflop mithilfe eines Kombinators für Vergleiche.

Als Nächstes das D-Flipflop. Die Eingänge sind entweder ein “S”-Signal (Set) oder ein “R”-Signal (Reset). Wenn ein “S”-Signal anliegt, wird die Bedingung des Kombinators erfüllt. Da der Ausgang auf den Eingang zurückgeführt ist, bleibt das Eingangssignal vorhanden, auch nachdem das originale Eingangssignal verschwindet, da ein “S”-Signal mit hinzuaddiert wird. Ähnlich dazu wird einem “R”-Signal am Eingang die Bedingung nicht erfüllt, was dazu führt, das kein “S”-Signal mehr ausgegeben wird und die Schleife unterbrochen wird.

Zählwerk mit einem Kombinator für Vergleiche.

Zuletzt das Zählwerk. Strukturell ist es identisch zum D-Flipflop, aber diesmal ist der Eingang eingestellt auf “input count of everything” (“Eingangsanzahl aller Signale”). Das bedeutet, solange die Kombinatorbedingung erfüllt wird, wird der Ausgang zum Eingang zurückgeführt und so gespeichert. Für jeden verstreichenden Tick, in dem ein Signal anliegt, wird dem gespeicherten Signal der Wert des Eingangssignals hinzugefügt. Sobald die Bedingung nicht mehr erfüllt wird, wird der Speicher geleert, da der Kombinator keine Signale mehr durchlässt. Genau wie beim Pulsgenerator kann die Schaltung für einen Gegenstandtyp spezifiziert werden, indem das “everything” (“alles”) Ausgangssignal mit dem gewünschten Gegenstand ersetzt wird. Diese Schaltung hat, so wie der Pulsgenerator, vielfältige Anwendungsmöglichkeiten, wird aber meistens dazu verwendet, um Gegenstände zu zählen.

Einfache Beispiele

Jetzt schauen wir uns einmal einige Beispiele an, wo die oben beschriebenen Bausteine verwendet werden.

Nehmen wir mal an, du hast eine Blaupause für einen Nuklearreaktor, bei dem das Herausnehmen einer leeren Brennelementzelle das Nachfüllen mit einer neuen auslöst. Solch ein System müsste von Hand gestartet werden, da die Reaktoren nach dem Bau immer leer sind. Was hier im Idealfall benötigt wird, ist eine Schaltung, welche wenn in allen Kisten Brennelemente sind, jeden Reaktor genau einmal belädt. Das ist der Fall, wo eine monostabile Schaltung verwendet wird. An jeder Kiste wird ein Kombinator errichtet, der prüft, ob in der Kiste genügend Brennelemente sind. All diese Kombinatoren werden nun mit einem Kombinator verbunden , der prüft, ob alle Kisten bereit sind. Wenn alle Kisten bereit sind, gibt dieser Kombinator ein “leere Brennstoffzelle”-Signal in eine monostabile Schaltung, welche mit den Greifarmen zum Nachfüllen der Reaktoren verbunden ist. Das sorgt dafür, dass alle Greifarme genau einmal aktiv sind, und zwar genau in dem Moment, wo für alle Brennelemente bereitstehen. Als Nebeneffekt sorgt das auch dafür, dass der Reaktor von alleine wieder startet, falls er einmal wegen Brennelementemangen ausgegangen sein sollte.

Reaktornachfüllschaltung

Als Nächstes ein klassisches Beispiel: Backup-Strom. Stell dir vor, du hast ein Batteriefeld und möchtest deine Heizkessel zuschalten, wenn zu wenig Energie gespeichert ist. Du könntest einfach einen Schalter direkt an eine Batterie anschließen und aktivieren, falls die Batterieladung zu sehr abfällt, beispielsweise unter 20%. Das würde aber dazu führen, das die Heizkessel schnell an- und ausgeschaltet werden und die Batterieladung immer genau bei 20% bleibt. Stattdessen könntest du ein D-Flipflop verwenden. Stelle einen Kombinator so ein, dass er ein “S”-Signal ausgibt, wenn die Batterieladung unter 20% fällt und einen anderen so, dass er “R” ausgibt, wenn 70% Batterieladung erreicht sind. Verbinde beide mit dem Flipflop, und verbinde den Ausgang mit einem Schalter, den du so einstellst, dass er aktiviert, wenn “S” größer 0 ist. Der Schalter wird eingeschaltet, sobald die Batterieladung unter 20% fällt und öffnet erst wieder, wenn die Batterien zu über 70% gefüllt sind.

Backup-Stromschaltung

Zuletzt ein Prozess, den viele ängstlich aufbauen: Urananreicherung. Wir müssen uns hier mit drei Greifern befassen: Eingang, Ausgang und Recycling. Der letzte ist kein einzelner Greifer, aber uns interessiert hier nur der erste Greifer des Prozesses. Der Eingangsgreifer benötigt keinerlei Schaltung. Er greift einfach immer drei Uran-238 und lädt sie in die Maschine, falls sie benötigt werden. Der Ausgangsgreifer muss während des Vorgangs ausgeschaltet sein, um nicht die als Katalysator wirkenden Gegenstände herauszunehmen. Der Recyclinggreifer muss genau 40 Uran-235 und zwei Uran-238 herausnehmen. Der Recyclinggreifer bekommt ein konstantes Signal Uran-238, weswegen er dies auf die Blacklist setzt. Er beginnt Uran-235 herauszunehmen, und inkrementiert den Zähler jedes Mal um die Anzahl der herausgenommenen Gegenstände. Der Greifer bekommt auch ein konstantes Signal von -39 Uran-235 vom roten Kabel. So kommt es zu einer positiven Anzahl an Uran-235, und da Uran-235 zuerst in der Signalliste erscheint, wird es vor dem Uran-238-Signal priorisiert. Der Greifer setzt nun Uran-235 auf die Blacklist, was dazu führt, dass er nun die zwei Uran-238-Gegenstände herausnimmt. Das führt zu zwei Dingen: Das Zählwerk wird zurückgesetzt und der Ausgangsgreifer wird aktiviert, der nun keine andere Möglichkeit hat, als die zwei übrigen Uran-235 herauszunehmen. Die zwei recycelten Uran-238 werden nun zu Beginn des nächsten Zyklus hinzugefügt. Uran-238 Recycling benötigt keine besondere Logik, da der Eingangsgreifer auf drei Gegenstandstypen beschränkt ist, und so die zwei Plätze für recyceltes Uran freigehalten werden.

Kovarex-Anreicherungsschaltung

Abschlussgedanken

Jedes der besprochenen Beispiele kann noch verbessert werden und auf die spezifischen Bedürfnisse des Nutzers angepasst werden. Manche Dinge können mit einfacher Logik und grundlegender Mathematik gelöst werden, für andere werden mehr grundlegende Module benötigt. Beispielsweise könnte man ein zweites Zählwerk hinzufügen, um zu verhindern, dass die Zentrifuge in der Urananreicherung verstopft.

Jeder einzelne Meilenstein wurde erreicht, indem das Problem in kleinere Teile aufgeteilt wurde und dann diese Teile noch weiter geteilt wurden. Das ist am Ende auch die Taktik, wie moderne Computer entwickelt wurden - aus Transistoren wurden Logikgatter, daraus Addierer und Speicherzellen, dann RAM und ALUs, und daraus schließlich ein Computer. Wenn du es schaffst, manchmal zu dem Punkt zu kommen, wo du dir denkst “Hey, dieses Problem habe ich schon mal gelöst”, dann kannst du mit Schaltungen alles schaffen.

Mit Volldampf voraus! T-A-R

Big Community Games freut sich, ein weiteres Factorio-MMO-Event zu verkünden. Eine sehr rohstoffreiche Gegend von Nauvis wurde erkundet, was uns zu der wunderbaren Gelegenheit ermöglicht, gemeinsam eine Rakete zu starten, an diesem Samstag! Das Thema dieses Mal wird Steampunk sein. Deadlock989’s Industrial Revolution 2-Mod wird uns all den Dampf bereitstellen, den wir so sehr lieben. Vielleicht sogar noch etwas mehr.

IR Montagemaschienen, wie sie in FFF #311 vorgestellt wurden.

Im Vergleich zu Vanilla wird unsere Werkzeugkiste mit jeder Menge Technologie erweitert. Neue Materialien und Prozesse werden dafür sorgen, dass die Konstruktion einer Rakete in einem spannenden Weg etwas komplexer wird. Die Eventseite hat eine vollständige Modliste und weitere Informationen. Der Server wird als reguläre Multiplayerlobby am Samstag, dem 17.April, um 18:00 UTC (20:00 MESZ) online gehen.

Der Countdown ist vorbei

Schau doch auf unserem Discord für Textchat- und Sprachkanäle vorbei. Ingenieure treffen sich bereits und schmieden schon Pläne. BCG würde sich auch freuen, Leute zu begrüßen, die sich vorstellen könnten, bei der Organisation solcher Events in Zukunft mitzuwirken.

Also schmiert schon mal eure Exoskelette und viel Spaß beim Event!

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!