Alt-F4 #12 – Nachkonstruktion der Spinne  06.11.2020

Geschrieben von xthexder, TheKool, T-A-R, editiert von Conor_, Therenas, nicgarner,
übersetzt von EDLEXUS, dexteritas, Nanogamer7, lektoriert von marceljoint, BluePsyduck

Inhaltsverzeichnis

In dieser einfach zu teilenden Ausgabe Nummer 12 von Alt-F4 geht xthexder auf einige technische Details zur springenden Spinne am Ende der Seite ein. Dann gibt TheKool ein bisschen Neuling-freundliche Erklärungen zu Produktivitätsmodulen und deren Verwendungen. Schlussendlich teilt T-A-R einige Infos über ein anstehendes Communityevent, welches nach viel Spaß aussieht.

Spidertron fürs Netz xthexder

Wie dir sicherlich aufgefallen ist, hat die Alt-F4-Webseite auf jeder Seite unten einen Spidertron sitzen, ähnlich zu der Rakete auf der Factoriowebseite. Viele haben vermutlich daraufgeklickt, in der Hoffnung das irgendwas Interessantes passieren würde und wurden dann enttäuscht, da der Spidertron nur weiter auf der Stelle auf und ab wippte. Mit der Veröffentlichung von Ausgabe 8, Ein Liebesbrief an Factorio, änderte sich jedoch dieses Verhalten, wie einigen aufmerksamen Lesern aufgefallen sein könnte. Wenn dir das nicht aufgefallen ist, scroll doch mal runter, klicke auf deinen kleinen Freund und lasse ihn mit über den Artikel spazieren!

Als wir diese Seite eingerichtet haben, war klar, dass der Spidertron etwas tun sollte, aber wir hatten am Anfang nicht genug Zeit mehr als die Standanimation aufzunehmen. Spidertron aufzunehmen ist schwer, da wir eine Aufnahme ohne Hintergrund brauchen. Wir verwendeten dazu ursprünglich eine geheime Mod von Klonan, welche undokumentierte Features in der Factorio-API ausnutzt, um GIFs aufzunehmen. Einen Loop aufzunehmen ist noch schwieriger, da Spidertrons Bewegungen in Teilen zufällig sind und so für Aufnahmen von mehr als der Standanimation viel mehr Aufwand betrieben werden muss.

Der ursprüngliche Plan war, dass der Spidertron die Seite hochkrabbelt und so wie der zurück-nach-oben-Knopf auf der Factorioseite funktioniert. Das benötigt eine Aufnahme des Spidertrons, wie er nach oben läuft und dann eine Wiederholung der Aufnahme, während er nach oben läuft. Dann hatte Dr.MagPie die Idee, dass der Spidertron auf der Seite der Fernbedienung folgt, so wie im Spiel. Das ist etwas, das mit Aufnahmen nicht mehr zu realisieren ist, da viel zu viele Aufnahmen von möglichen Bewegungen notwendig wären.

Doch so, wie ich die Community kenne, wird es einige Verrückte geben, die dabei helfen würden, einfach nur, weil es eine Herausforderung ist …

Though knowing our community, there are probably some mad lads that would help with this just for the sake of it being a challenge….

— psihius (October 3, 2020)

Herausforderung angenommen

Ein funktionierenden Spidertron für die Webseite zu schaffen war eine Herausforderung, aber auch eine, an der man viel Spaß hatte. psihius’s Kommentar zwang mich, direkt damit anzufangen, in einem Bilderbuchbeispiel von Nerd Sniping. Der erste Schritt war den Spidertron einfach nur mit den Original Factorio-Dateien zu zeichnen, damit die einzelnen Teile unabhängig bewegt werden konnten. Ich verwendete nur pure HTML und CSS-Elemente in der Hoffnung, dass der Browser mit Unterstützung der GPU das Rendern beschleunigen würde. Wie sich herausstellte, hatte dieser Ansatz mehrere Nachteile, da einige Veränderungen eine Neuberechnung der gesamten Seite benötigten und so alle Leistungsvorteile negierte. Aber mit einem gezeichneten Spidertron hatte ich endlich Zeit, um mit der Animation in JavaScript anzufangen.

Das ist das obere Beinsegment. Es besteht aus drei Elementen und ist nur mit HTML und CSS animiert (kein JavaScript).

Spidertron in statischer T-Pose
Ein früher Screenshot einer ungefähren T-Pose des Spidertrons. Jetzt noch ohne Animation, außerdem fehlen diesem die Knie.

Nachdem alle Beine verbunden waren, bestand der Spidertron aus 58 eigenständigen Sprites (in jedem Bein sieben plus zwei für den Körper). All diese Elemente werden mithilfe von CSS-Variablen kontrolliert, welche von JavaScript modifiziert werden können. Ich begann mit vier Variablen pro Bein: obere und untere Beinlänge und die oberen und unteren Winkel. Mithilfe einiger trigonometrischer Funktionen konnte ich die Werte berechnen, um den Fuß an einer bestimmten Stelle abzusetzen. Mit dem Mauszeiger als Ziel kam die erste große Frage auf: Wohin gehört das Knie?

In diesem ersten Test ist das Knie bei 90° fixiert

Ich begann damit, mir Videos vom Spidertron anzuschauen, wie er sich in Factorio bewegt und versuchte zu entscheiden, wie die Beinbewegungen richtig aussehen. Dieses Factorio Crab Rave Video erwies sich als unglaublich hilfreich, da ich zwischen den Frames umherspringen konnte und so die Beinbewegung genau analysieren konnte. Ich versuchte viele Formeln und Verhältnisse und ging so durch viele Versionen, aber keine sah so aus wie die Bewegung des Spidertrons im Spiel. Doch dann viel mir auf, dass ich nicht in drei Dimensionen dachte. Der Körper vom Spidertron schwebt über dem Boden und mit Factorio’s isometrischer Projektion realisiert man das, indem man Teile der Z-Achse (Höhe) von der Y-Achse (Süden) abzieht. Mit diesem Wissen ging ich nochmal zurück zum Video und mir fiel auf, dass die Knie von Spidertron auf einer fixen Höhe bleiben (Z-Achse) und sich ungefähr auf der Hälfte zwischen dem Körper und dem Fuß befanden (X&Y-Achse). Wenn man diese 3D-Position in 2D projiziert, schafft man eine nahezu perfekte Replika der Proportionen im Spiel.

Zu diesem Zeitpunkt waren es drei schlaflose Tage später.

Um den Spidertron zum Laufen zu bekommen, räumte ich einige Zeit lang den ursprünglichen Spaghetti-Code auf und begann mit der Standanimation. Das war einfach, da es nur eine sinusförmige Veränderung der Körperhöhe über den Boden ist. Der Körper hatte zu Beginn eine unabhängige Position und Geschwindigkeit, doch das wurde später zum Durchschnitt der Beinpositionen geändert, um zu verhindern, dass Beine und Körper die Synchronisation verlieren. Damit blieben nur acht Punkte zu animieren und damit „Schritte“ zum Ziel zu machen.

Der echte Spidertron kann bis zu drei Beine auf einmal in der Luft haben und benutzt eine zur Zeit unbekannte Methode, um die Schrittreihenfolge zu bestimmen. Für meine ersten Tests verwendete ich eine festgelegte Schrittfolge, was prinzipiell funktionierte, aber nicht in alle Richtungen gut aussah. Ich ging später dazu über, die Beine nach Abstand zum Ziel zu sortieren, und dann jeweils zwischen dem am weitest entfernten und dem nächsten Bein abzuwechseln. Das war die Technik in der ersten Veröffentlichung, aber ich habe einige Verbesserungen zu Zeiten und Mustern vorgenommen, um die Spielversion so gut es geht nachzubauen.

Wenn ein Bein einen Schritt macht, sieht es voraus, wo sich der Spidertron im nächsten Schritt befindet. Es legt dann das Ziel für diesen Schritt fest plus einige zufällige Abweichungen, um Wiederholungen zu vermeiden. In jedem Frame wird das aktive Bein zu seinem Ziel bewegt. Mittwoch Nacht kam ich einem laufenden Spidertron näher und setzte mir zum Ziel, Freitag etwas für die Liebesbrief-Ausgabe vorweisen zu können.

Der erste laufende Spidertron, mit Bugs und so.

Donnerstag Nachmittag wurde spidertron.alt-f4.blog geschaffen, damit das gesamte Tech-Team Spidertron testen konnte und half, Fehler zu finden und zu beheben. Der Weg, wie Bewegungsvorhersagen berechnet wurden in Relation zur Framerate schuf Lag (von dem es eine ganze Menge gab) und teleportierte die Beine umher, außerdem sehr glitchige Bewegungen insgesamt. Aufgrund einiger CSS-Bugs hatten die Beinsegmente ihre Minimallänge, welche in einigen Positionen weitere Glitche verursachten. Nach einer weiteren durchgearbeiteten Programmiernacht waren einige der großen Bugs gefixt und die erste öffentliche Version ging zusammen mit dem Artikel vom Freitag raus.

Weitere Bugs wurden in den folgenden Wochen gefixt, wie zum Beispiel Pixelrundungsfehler, welche dazu führten, dass das Bein beim Stillstehen zitterte und verschiedene Bildschirm-Bildwiederholraten zu unterschiedlichen Geschwindigkeiten führten, womit die Synchronisation zwischen Beinen und Körper gebrochen wurde. Spidertron bekam auch einige andere Updates wie orangene Farbe, Bugfixes für das mobile Seitenlayout und viele Performanceverbesserungen. Insgesamt bin ich mit dem Ergebnis sehr zufrieden. Es ist am Ende sogar 150kB kleiner als das originale GIF, alle Dateien, JavaScript und CSS eingerechnet.

Vielen Dank an yay, Dr.MagPie, psihius und den Rest des Tech-Teams, die mir geholfen haben, den Spidertron zu bauen und zu testen. Für alle Interessierte, der Code ist auf GitHub erhältlich. Hoffentlich habt ihr genauso viel Spaß damit, damit zu spielen wie ich hatte es zu bauen (Die Grafikdateien sind nicht im Repo beinhaltet, da sie exklusiver Besitz von Wube sind und hier mit ihrer Erlaubnis benutzt werden).

Komplexitäts-Ecke: Produktivitätsmodule TheKool

Willkommen zum ersten in einer Reihe von Artikeln über Elemente des Spiels, die auf den ersten Blick einschüchternd wirken, sich aber als gar nicht so schwer zu verwenden erweisen. Die Reihe beginnt mit einer Trilogie über die Module, die nacheinander eine kurze Zeit lang jede der drei Wahlmöglichkeiten in den Mittelpunkt stellt. Später wird die Reihe möglicherweise mit weiteren Themen zurückkehren. In jedem Artikel wird versucht, drei einfache Fragen zu beantworten: Was ist es?, Welche Ergebnisse kann es liefern? und Wo sollte es verwendet werden?

Vorwort: Komplexitäts-Bias in Factorio

Bevor ich in die Einzelheiten eintauche, wollte ich kurz darauf eingehen, warum wir vor den komplexen Aspekten des Spiels zurückschrecken und uns an die bequemen Aspekte halten, die wir kennen. Wenn du dir schon einmal etwas angeschaut hast, das dir unbekannt ist, und dir gedacht hast: „Das sieht kompliziert aus; ich bleibe einfach bei dem, was ich kenn, und finde das später heraus“, dann hast du schon einmal einen Komplexitäts-Bias erlebt.

u/Quazarz_’s Wissenschaftsfluss

Der Komplexitäts-Bias ist eine mentale Tendenz, die Dinge als komplexer zu sehen, als sie wirklich sind, vor allem, wenn wir sie nicht vollständig verstehen. Wenn es um Projekte geht, kann sich dies als Zögern äußern, da wir eine Aufgabe vermeiden, von der wir erwarten, dass sie lang und schwierig sein wird. Wenn es um Factorio geht, manifestiert sich dies gewöhnlich in einer Vorliebe, bei der bequemen Spielmechanik zu bleiben, die wir kennen und verstehen, um zu vermeiden, dass wir lernen, wie neue Mechaniken wie Schaltkreise oder Kernkraft funktionieren. Jedoch aber, genau wie diese Aufgabe sich oft als viel einfacher als erwartet herausstellt, hoffe ich euch zeigen zu können, dass die Spielelemente, die ihr vermieden habt, vielleicht doch einfacher sind, als ihr gedacht habt.

Module in bestehenden Laboren
Oder du kannst einfach einige Module in dein bestehendes Setup einfügen ...

Was sind Produktivitätsmodule?

Falls du mit ihnen nicht vertraut bist, Module sind Elemente, die man in Gebäude einbauen kann, um einige ihrer Leistungsmerkmale zu verändern, wie z. B. die Herstellungsgeschwindigkeit und den Energieverbrauch. Sie können auch in Effektverteilern platziert werden und ihre Wirkung auf jedes Gebäude in Reichweite übertragen. Dies kann sehr wirkungsvoll sein, weshalb in großen Bauwerken oft Module verwendet werden, um die Anzahl der Gebäude zu reduzieren, die für ein bestimmtes Ziel benötigt werden. Das bedeutet oft, dass sie als ein Endspielwerkzeug angesehen werden, wie zum Beispiel im Artikel Megabasis Denkweise von LoneWolf. Sie können jedoch schon viel früher recht wirkungsvoll sein. In der Tat können sie bereits im grünen Wissenschaftsstadium eingesetzt werden und erscheinen unmittelbar nach fortgeschrittenen Schaltkreisen im Technologiebaum.

Nun sind Produktivitätsmodule die mechanisch komplexesten Module im Spiel, da sie vier Dinge tun: die Umweltverschmutzung erhöhen, den Energieverbrauch erhöhen, die Maschine verlangsamen und einen Produktivitätsbonus hinzufügen. So komplex sie sich auch anhören, das letzte ist das einzige, das wirklich zählt. Der Produktivitätsbonus funktioniert auf die gleiche Weise wie der Produktivitätsbonus im Bergbau: Wenn man z. B. einen Produktivitätsbonus von 10 % hat, dann wird bei jedem Zyklus der Produktivitätsbalken um 10 % erhöht, und wenn er 100 % erreicht, erhält man ein Gratisprodukt. Das ist richtig, gratis. Es brauchte nicht einmal Ressourcen, es entstand einfach aus dem Nichts.

Welche Ergebnisse können sie liefern?

Produktivitätsmodule sind mechanisch zwar das komplexeste Modul, haben aber die einfachste Antwort auf die Frage, wie sie zu verwenden sind. Einfach ausgedrückt: Sie reduzieren die Anzahl der Ressourcen, die du für deine Fabrik benötigst. Wenn du mehr Output erhalten willst, als deine Inputs normalerweise erlauben würden (z. B. wenn du knapp an einer oder mehreren Ressourcen bist), benutzt du Produktivitätsmodule. Das bedeutet, dass ihre Verwendung so einfach wie möglich ist: Um die besten Ergebnisse zu erzielen, spamme die immer wiederkehrenden Probleme aus ihnen heraus. Eigentlich sind sie in dieser Hinsicht einzigartig, da sie neben der Forschung zur Bergbauproduktivität das Einzige im Spiel sind, was etwas aus dem Nichts liefert.

Die früheste Anwendung werden wahrscheinlich zwei Produktivitätsmodule 1 in einer Montagemaschine 2 sein, was einen Produktivitätsbonus von +8 % auf Kosten von –30 % Geschwindigkeit und einer Menge zusätzlicher Energienutzung und Umweltverschmutzung ergibt. Eine der letzten Anwendungen sind vier Produktivitätsmodule 3 in einer Montagemaschine 3, die eine Produktivität von +40% und eine Geschwindigkeit von -60% ergeben, mit einem Batzen von zusätzlichem Energieverbrauch und Umweltverschmutzung. An diesem Punkt hoffe ich, dass du dir keine Sorgen mehr über Beißer machst! 40 % mehr Output aus den Ressourcen zu erhalten, ist eine ziemlich große Sache, und dieser Nutzen kumuliert sich im gesamten Technologiebaum, wenn du sie einsetzt, wo immer du kannst. Wenn du sie bei jeder Gelegenheit in deinem Raketensilorezept verwendest, kannst du den Roherzbedarf sogar bis auf 15 % des ursprünglichen Wertes senken! Glaubst du mir nicht? Überzeuge dich selbst.

Raketensilo mit und ohne Produktionsmodul im Vergleich

Wie bereits erwähnt, reduzieren sie auch die Arbeitsgeschwindigkeit aller Maschinen, in denen sie eingesetzt werden. Wenn du in deiner Fabrik nahe an den Kennzahlen baust, musst du sowohl die verlangsamte Arbeitsgeschwindigkeit, als auch die Bonus-Outputs in deinen Berechnungen berücksichtigen, da diese alle deine Kennzahlen auf den Kopf stellen werden. Um dieses Problem zu lösen, lasse ich normalerweise einfach KirkMcDonalds Rechner die Arbeit für mich erledigen.

Wo sollten sie eingesetzt werden?

Also hast du dich entschieden, Produktivitätsmodule einzusetzen. Wo sollst du sie hintun? Die offensichtliche Antwort lautet „überall, wo man kann“, aber es gibt einige wenige Fälle, die eine besondere Erwähnung verdienen, auch wenn du sie nirgendwo sonst verwendest.

  • Raketensilo: Wenn du dein Silo mit vier Stufe 3 Produktivitätsmodulen belädst, brauchst du nur etwa 70 Raketenteile an Materialwert, um deine Rakete herzustellen, und du wirst den langsamen Effekt wahrscheinlich gar nicht bemerken.
  • Öl: Wenn du eine Karte hast, die nicht genügend Ölfelder in Reichweite hat, und du darum kämpfst, genug Rohöl zu pumpen, ziehe in Betracht, Produktivitätsmodule in deinen Raffinerien und alles, was das Öl und Plastikprodukte verwendet, zu platzieren. Es sieht vielleicht nicht nach viel aus, aber es kann helfen, diese seltene Ressource weiter zu strecken.
  • Labore: Du kannst Produktivitätsmodule in Labors platzieren! Freie Wissenschaft! Du produzierst nicht einmal Umweltverschmutzung; du vermeidest den schlimmsten Nachteil völlig! Was gibt es da nicht zu lieben?
  • Erzförderer: Es ist eine Falle! Tue es nicht! Es multipliziert sich nicht mit Ihrer Bergbau-Produktivitätsforschung, es addiert sich nur dazu, und die Forschung gibt einen viel bedeutenderen Bonus. Mit Geschwindigkeits- oder Effizienzmodulen bist du besser dran.

Produktivitätsmodule haben jedoch einige besondere Einschränkungen. Konkret können sie nur für Zwischenprodukte verwendet werden, d. h. für jene Artikel, die in anderen Rezepten verwendet und nicht als Gebäude abgesetzt werden. Zweitens können sie nicht in Effektverteiler eingesetzt werden. Wenn sie es könnten, wären sie übermächtig! Wenn du bisher noch keine Produktivitätsmodule verwendet hast, solltest du dir unbedingt überlegen, ob du nicht ein paar für dein Raketensilo oder deine Labore zusammenschmeißt, und siehst, welchen Unterschied sie machen.

Danke für den Fisch T-A-R

Als Widmung an Comfy Factorio (zu Deutsch: „bequemes Factorio“) würde ich gerne eine Einladung eines Mehrspielerevents, welches morgen, dem 7. November, um 19:00 MEZ stattfindet, teilen. Alle sind zum Spielen eingeladen, oder einfach nur um vorbeizuschauen und Glückwünsche zu teilen.

Der Countdown ist vorbei

Comfy Factorio ist eine Community mit dem Fokus auf originelle Karten und einem „chilligen“ Erlebnis. Beliebte Comfy Szenarien sind Beißer-Kämpfe, Bergburg, und seit kurzem der teleportierende Chronozug. Um das 3.000. Mitglied auf Discord zu feiern, hat Comfy sich mit Big Community Games zusammengetan, welche das in Alt-F4 #7 erwähnte Communityevent organisieren haben, um ein Massives Mehrspieler Fisch Verteidigungs Spiel zu veranstalten.

Schauen wir einmal auf die Karte, auf der wir spielen werden; kaum überraschend ist sie in der Form eines Fisches:

FishIsland

In der Mitte der Karte ist ein Markt voll mit Fisch. Die Alien-Beißer in der Flosse des Fisches haben den Geruch dieser köstlichen Leckerbissen gerochen, weshalb die Fische an einen sichereren Ort befördert werden müssen. Das gemeinsame Ziel ist es, das dafür benötigte Raketensilo zu bauen. Währenddessen muss der Fisch um jeden Preis von den durchgängigen, immer stärker werdenden Angriffen aus dem Osten verteidigt werden.

Die Karte erlaubt es, manchen Teilnehmern einfach durchgängig Beißer abschlachten zu lassen, während andere in Ruhe an der Basis weiterbauen können. Es werden keine Mods benötigt. Beide Hosts haben gezeigt, dass sie wissen, wie man eine Party schmeißt, also werde ich sagen „Genieße es, ich wünsch dir was.“

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!