My living room, gone to hell.Now in my Noesis converter there is a Roomba script. It tracks Roomba and stores tracking data, which allows you to visualize this data in many different ways, including, of course, turning it into a randomized map for DOOM.
It would be great to have time to do it by the 25th anniversary of DOOM, but it happened and went away, and I was still waiting for the purchase of Roomba 980 on eBay. The idea came to me somewhere in November, when my wife and I studied various vacuum cleaning machines. I found that the new versions of Roomba have implemented a rather high-quality
SLAM , so I wondered what kind of data could be obtained from it and what could be done with it.
')
I soon realized that I had a convenient opportunity to serve the Dark Lord, creating a legion of unholy algorithms and applying them in one of the best works created in his name. At the same time, I will be able to unleash the devil's pun, capable of hitting humanity. So, the fruit of my work is ready. Behold a creature called DOOMBA - a semi-nansing, half-script with native binary support for the most expensive parts of the code, which I will sacrifice instead of my first-born on this wonderful Christmas Eve.
DOOMBA work processReturning to Hell has never been easier!
In order to take advantage of DOOMBA and the rest of the new Roomba functionality, you need to download the latest
Noesis . Go to optionalplugins \ python and copy the file tool_roomba.py to plugins \ python. In the Tools menu of the Noesis converter you will see the new item “Roomba Tracker”. Activate it to open the Roomba Tracker interface.
Interface Roomba TrackerThe interface allows you to automatically scan the LAN for Roomba robots (you need to enable UDP streaming) and displays instructions for obtaining a password from Roomba. After getting the Roomba IP and setting the credentials, you can start tracking. When tracking starts, you will be asked to save the .noeroomba file. If you decide to save it, then after the tracking is completed, this file will contain all the useful data.
I tested only with Roomba 980, so I cannot guarantee compatibility with any other Roomba devices. However, even if you do not have a compatible device, you can use the .noeroomba file from the scenes Noesis directory and play around with DOOMBA and other Roomba-related features.
After generating the .noeroomba file (or taking it ready), go to it in the Noesis file viewer. You will have new right-click context menu items with a choice of file type:
New context menu items related to RoombaThe NoeRoomba Merger option is useful for merging multiple .noeroomba files. Sometimes a connection is lost during tracking, or it needs to be stopped because Roomba is recharging between sessions. This means that you can choose to generate several .noeroomba files, and later join them together.
Selecting the DOOMBA item will launch the main DOOMBA interface generating DOOM PWAD from the selected .noeroomba file:
If you leave the value “0” for “Seed”, the level will be generated independently. Otherwise, if you select the value that suits you, you can save it and use it again, in parallel with setting up other options. All options at the top relate to the location of enemies / objects. The script itself is written to simplify the creation of new types of objects, as well as adding support for other games based on DOOM by changing the THING ID. However, if you don’t like to experiment, you can simply adjust the values ​​accessible from the interface. You can also change the floor / ceiling / wall texture lists, and if you load DOOM IWAD into Noesis, you will see that all the texture names are accurately listed in the Data Viewer.
In the lower right corner there are many other options that affect the process of generating and simplifying the geometry. The options in the “Advanced” section, if incorrectly configured, can very seriously spoil everything, because I didn’t really test them and didn’t check whether values ​​are acceptable on the engine side. However, other options can also seriously hurt, so if you are not sure, then do not change the default values. Also keep in mind that the interface will not protect against standard DOOM restrictions in the visplane area, objects, etc.
As a bonus, I added the “Image to NoeRoomba” tool, which is enabled only when the ENABLE_TEST_FUNCTIONS variable in tool_roomba.py is set to True. It allows you to generate .noeroomba files from regular graphic files, providing a simple and efficient way to convert images into a random DOOM card. I can’t promise that my impious algorithms for Roomba cards will not crash if you feed them all sorts of random data, but in the case of the images I chose, the system coped quite well:
MORTAL KOMBAAAT!I hope you enjoy this tool. He definitely gave me a lot of fun! Someone may say that it does not make sense, but in my heart there is a belief that the Dark Lord will wipe such people from the face of the Earth and imprison them in the universe of eternal hellfire, and their sufferings will add legends.
In the notes to the script, this has already been mentioned, but I will say once again that for parts related to the Roomba protocol, the
dorita980 library was
useful . I would use it directly, but Node.js is a complete disaster. I would also like to thank Raphael Quine for the ancient nodebuilder code that is included in this release as part of the DOOMBA functionality. It was one of the few nodebuilders I found that were not corrupted by the GPL license.