Doomba


Mein Wohnzimmer, zur Hölle gegangen.

Mein Noesis-Konverter hat jetzt ein Roomba-Skript. Es überwacht den Roomba und speichert Tracking-Daten, mit denen Sie diese Daten auf viele verschiedene Arten visualisieren können, einschließlich der Umwandlung in eine zufällige Karte für DOOM.

Es wäre toll, bis zum 25. Jahrestag von DOOM Zeit dafür zu haben, aber es passierte und verging, und ich wartete immer noch auf den Kauf von Roomba 980 bei eBay. Die Idee kam mir ungefähr im November, als meine Frau und ich verschiedene Roboterstaubsauger studierten. Ich fand heraus, dass in den neuen Versionen von Roomba SLAM recht qualitativ implementiert ist, und fragte mich, welche Art von Daten daraus gewonnen werden können und was mit ihnen gemacht werden kann.

Bald wurde mir klar, dass ich die Gelegenheit hatte, dem Dunklen Lord zu dienen, indem ich eine Legion böser Algorithmen schuf und sie auf eines der besten Werke anwendete, die in seinem Namen geschaffen wurden. Gleichzeitig werde ich in der Lage sein, ein teuflisches Wortspiel zu veröffentlichen, das die Menschheit besiegen soll. Die Früchte meiner Arbeit sind also fertig. Schauen Sie sich eine Kreatur namens DOOMBA an - eine halbe Ziege, ein halbes Skript mit nativer binärer Unterstützung für die teuersten Teile des Codes, die ich anstelle meines Erstgeborenen an diesem wundervollen Heiligabend opfern werde.


DOOMBA-Workflow

Die Rückkehr in die Hölle war noch nie so einfach!


Um DOOMBA und den Rest der neuen Roomba-Funktionalität nutzen zu können, müssen Sie die neueste Noesis herunterladen. Gehen Sie zu optionalplugins \ python und kopieren Sie die Datei tool_roomba.py nach plugins \ python. Im Menü Extras des Noesis-Konverters sehen Sie einen neuen Eintrag „Roomba Tracker“. Aktivieren Sie es, um die Roomba Tracker-Oberfläche zu öffnen.


Roomba Tracker-Schnittstelle

Über die Schnittstelle können Sie das LAN automatisch nach Roomba-Robotern durchsuchen (Sie müssen UDP-Broadcasting aktivieren) und Anweisungen zum Empfangen eines Kennworts von Roomba anzeigen. Nachdem Sie IP Roomba empfangen und die Anmeldeinformationen eingerichtet haben, können Sie mit der Nachverfolgung beginnen. Wenn Sie mit dem Tracking beginnen, werden Sie aufgefordert, die .noeroomba-Datei zu speichern. Wenn Sie es speichern möchten, enthält diese Datei nach Abschluss der Nachverfolgung alle nützlichen Daten.

Ich habe nur mit Roomba 980 getestet, daher kann ich keine Kompatibilität mit anderen Roomba-Geräten garantieren. Selbst wenn Sie kein kompatibles Gerät haben, können Sie die .noeroomba-Datei aus dem Noesis-Verzeichnis der Szenen verwenden und mit DOOMBA und anderen Roomba-bezogenen Funktionen spielen.

Nachdem Sie die .noeroomba-Datei generiert haben (oder die fertige übernommen haben), rufen Sie Noesis-Dateien auf. Sie haben neue Kontextmenüelemente mit der rechten Maustaste mit einer Auswahl an Dateitypen:


Neue Roomba-Kontextmenüelemente

Die Option NoeRoomba Merger ist nützlich, um mehrere .noeroomba-Dateien zu kombinieren. Beim Verfolgen geht manchmal die Verbindung verloren oder sie muss beendet werden, da Roomba zwischen den Sitzungen aufgeladen wird. Dies bedeutet, dass Sie mehrere .noeroomba-Dateien generieren und später miteinander kombinieren können.

Durch Auswahl des DOOMBA-Elements wird die Haupt-DOOMBA-Schnittstelle zum Generieren von DOOM PWAD aus der ausgewählten .noeroomba-Datei gestartet:



Wenn Sie den Wert "Seed" 0 belassen, wird der Pegel unabhängig generiert. Wenn Sie andernfalls den für Sie geeigneten Wert auswählen, können Sie ihn speichern und erneut verwenden sowie andere Optionen festlegen. Alle oben genannten Optionen beziehen sich auf die Position von Feinden / Objekten. Das Skript selbst wurde geschrieben, um die Erstellung neuer Objekttypen zu vereinfachen und Unterstützung für andere DOOM-basierte Spiele durch Ändern der THING-ID hinzuzufügen. Wenn Sie jedoch nicht so gerne experimentieren, können Sie einfach die über die Benutzeroberfläche verfügbaren Werte anpassen. Sie können auch die Listen der Boden- / Decken- / Wandtexturen ändern. Wenn Sie DOOM IWAD in Noesis laden, werden alle Texturnamen im Daten-Viewer übersichtlich aufgelistet.

In der unteren rechten Ecke gibt es viele andere Optionen, die sich auf den Prozess der Erzeugung und Vereinfachung der Geometrie auswirken. Die Optionen im Abschnitt "Erweitert" können bei falscher Konfiguration alles sehr ernsthaft verderben, da ich sie nicht besonders getestet und die Gültigkeit der Werte auf der Motorseite nicht überprüft habe. Auch andere Optionen können jedoch ernsthaft schaden. Wenn Sie sich nicht sicher sind, ändern Sie die Standardwerte nicht. Beachten Sie auch, dass die Schnittstelle nicht vor Standard-DOOM-Einschränkungen im Bereich Visplane, Objekte usw. schützt.

Als Bonus habe ich das Bild zum NoeRoomba-Tool hinzugefügt, das nur aktiviert ist, wenn die Variable ENABLE_TEST_FUNCTIONS in tool_roomba.py auf True gesetzt ist. Sie können .noeroomba-Dateien aus normalen Bilddateien generieren und so auf einfache und effiziente Weise ein Bild in eine zufällige DOOM-Karte konvertieren. Ich kann nicht versprechen, dass meine für Roomba-Karten entwickelten unheiligen Algorithmen nicht abstürzen, wenn Sie ihnen alle Arten von Zufallsdaten zuführen, aber bei den von mir ausgewählten Bildern hat das System recht gut zurechtgekommen:


MORTAL KOMBAAAT!

Ich hoffe, Ihnen gefällt dieses Tool. Er hat mir definitiv viel Freude bereitet! Jemand mag sagen, dass es keinen Sinn ergibt, aber in meinem Herzen gibt es den Glauben, dass der Dunkle Lord solche Menschen vom Erdboden löschen und sie in einem Universum des ewigen Höllenfeuers einsperren wird, und Legenden werden sich aus ihren Leiden zusammensetzen.

In den Anmerkungen zum Skript wurde dies bereits erwähnt, aber ich werde noch einmal sagen, dass die dorita980- Bibliothek für Teile nützlich war, die mit dem Roomba-Protokoll zusammenhängen. Ich würde es direkt verwenden, aber Node.js ist eine völlige Katastrophe. Ich möchte auch Rafael Quine für den alten Nodebuilder-Code danken, der in dieser Version als Teil der DOOMBA-Funktionalität enthalten ist. Es war einer der wenigen Nodebuilder, die von der GPL nicht beschädigt wurden.

Source: https://habr.com/ru/post/de434284/


All Articles