My living room, gone to hell.
Now in my Noesis converter there is a Roomba script. It tracks Roomba's vacuum cleaner and saves 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.
Soon I 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 that can hit mankind. So, the fruit of my work is ready. Behold a creature named 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 process
Returning 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 Tracker
The 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 receiving 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 have tested only the 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 Roomba
The NoeRoomba Merger option is useful for merging several .noeroomba files. Sometimes the 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.
When you select the DOOMBA item, the main DOOMBA interface will start 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 geometry. The options in the “Advanced” section, if set incorrectly, can very seriously spoil everything, because I didn’t really test them and didn’t check the validity of values 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 area of visplane, 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 ordinary graphic files, providing a simple and efficient way to convert images into a random DOOM card. I can’t promise that my wicked 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:
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 the dorita980 library was useful for the parts related to the Roomba protocol . 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.