Хабрахабр

[Перевод] DOOMBA

Моя гостиная, попавшая в Ад.

Он отслеживает пылесос Roomba и сохраняет данные трекинга, что позволяет визуализировать эти данные множеством разных способов, в том числе, разумеется, превратить их в рандомизированную карту для DOOM. Теперь в моём конвертере Noesis есть скрипт Roomba.

Идея появилась у меня где-то в ноябре, когда мы с женой изучали разные робопылесосы. Было бы здорово успеть сделать это к 25 годовщине DOOM, но она случилась и прошла, а я всё ещё ждал покупки Roomba 980 на eBay. Я обнаружил, что в новых версиях Roomba довольно качественно реализован SLAM, поэтому задался вопросом — какие же данные можно получить из него и что с ними можно сделать.

Одновременно я смогу выпустить на волю дьявольский каламбур, способный поразить человечество. Вскоре я осознал, что у меня есть удобная возможность послужить Тёмному Владыке, породив легион нечестивых алгоритмов и применив их в одной из лучших работ, созданных в его имя. Узрите существо по имени DOOMBA — полукозлище, полускрипт с нативной двоичной поддержкой самых затратных частей кода, которое я принесу в жертву вместо моего первенца в этот чудесный канун Рождества.
Итак, плод трудов моих готов.

Процесс работы DOOMBA

Возвращение в Ад никогда не было таким простым!

Для того, чтобы воспользоваться DOOMBA и остальным новым функционалом Roomba, необходимо скачать последний Noesis. Зайдите в optionalplugins\python и скопируйте файл tool_roomba.py в plugins\python. В меню Tools конвертера Noesis вы увидите новый пункт «Roomba Tracker». Активируйте его, чтобы открыть интерфейс Roomba Tracker.

Интерфейс Roomba Tracker

После получения IP Roomba и настройки учётных данных можно приступать к отслеживанию. Интерфейс позволяет автоматически сканировать LAN на наличие роботов Roomba (необходимо включить вещание по UDP) и отображает инструкции по получению пароля от Roomba. Если вы решите его сохранить, то после завершения трекинга в этом файле будут содержаться все полезные данные. При запуске трекинга отобразится запрос на сохранение файла .noeroomba.

Однако если даже у вас нет совместимого устройства, вы можете использовать файл .noeroomba из каталога scenes Noesis и поиграться с DOOMBA и другими функциями, связанными с Roomba. Я тестировал работу только с Roomba 980, поэтому не могу гарантировать совместимость с любыми другими устройствами Roomba.

У вас появятся новые пункты контекстного меню правой клавиши мыши с выбором типа файла: Сгенерировав файл .noeroomba (или взяв готовый), перейдите к нему в просмотре файлов Noesis.

Новые пункты контекстного меню, связанные с Roomba

Иногда при трекинге теряется связь, или его необходимо остановить, потому что Roomba между сеансами работы перезаряжается. Опция NoeRoomba Merger полезна для объединения нескольких файлов .noeroomba. Это значит, что можно выбрать генерацию нескольких файлов .noeroomba, а позже соединить их вместе.

При выборе пункта DOOMBA запустится основной интерфейс DOOMBA генерации DOOM PWAD из выбранного файла .noeroomba:

В противном случае, если вы подберёте подходящее вам значение, то можно будет сохранить его и использовать заново, параллельно с настройкой других опций. Если оставить для «Seed» значение 0, то уровень будет сгенерирован самостоятельно. Сам скрипт написан так, чтобы упростить создание новых типов объектов, а также добавление поддержки других игр на основе DOOM с помощью изменения THING ID. Все опции сверху относятся к расположению врагов/объектов. Также можно изменять списки текстур полов/потолков/стен, и если загрузить DOOM IWAD в Noesis, то вы увидите, что все названия текстур аккуратно перечислены в Data Viewer. Однако если вы не насколько любите экспериментировать, то можете просто настроить значения, доступные из интерфейса.

Опции в разделе «Advanced» при неверной настройке могут очень серьёзно всё испортить, потому что я не особо их тестировал и не занимался проверкой допустимости значений на стороне движка. В правом нижнем углу есть множество других опций, влияющих на процесс генерации и упрощения геометрии. Также учитывайте, что интерфейс не защитит от стандартных ограничений DOOM в области visplane, предметов и т.д. Однако и другие опции тоже способны серьёзно навредить, поэтому если вы не уверены, то не меняйте значения по умолчанию.

Он позволяет генерировать файлы .noeroomba из обычных графических файлов, обеспечивая простой и эффективный способ преобразования картинки в случайную карту DOOM. В качестве бонуса я добавил инструмент «Image to NoeRoomba», который включен только когда переменной ENABLE_TEST_FUNCTIONS в tool_roomba.py задано значение True. Не могу обещать, что мои нечестивые алгоритмы, предназначенные для карт Roomba, не обрушатся, если вы будете скармливать им всевозможные случайные данные, но в случае с выбранными мной изображениями система справлялся вполне неплохо:

МОРТАЛ КОМБАААТ!

Мне он определённо доставил кучу удовольствия! Надеюсь, вас порадует этот инструмент. Кто-то может сказать, что он не имеет смысла, но в моём сердце есть вера в то, что Тёмный Лорд сотрёт таких людей с лица Земли и заключит их во вселенную вечного адского огня, а об их страданиях сложат легенды.

Я бы использовал её напрямую, но Node.js — это полная катастрофа. В примечаниях к скрипту об этом уже упомянуто, но скажу ещё раз, что для частей, относящихся к протоколу Roomba, полезной оказалась библиотека dorita980. Это был один из немногих найденных мной nodebuilder-ов, неиспороченных лицензией GPL. Также хотел бы поблагодарить Рафаэля Квине за древний код nodebuilder, который включён в этот релиз как часть функционала DOOMBA.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть