Умный пылесос превратил квартиру в карту для Doom

Разработчик из США написал программу, которая собирает карту помещения, составляемую роботом-пылесосом, и превращает ее в карту игры Doom, выпущенной в 1993 году. Описание проекта доступно на личном сайте программиста.

Современные роботы-пылесосы — это достаточно сложные автоматические системы, способные ориентироваться в незнакомой им местности, избегая препятствий. Многие из них оснащены камерами, радарами или лазерными дальномерами, позволяющими им составлять карту местности, которая, в том числе, позволяет им самостоятельно возвращаться к станции зарядки. Как правило, для этого используется стандартный подход, называемый методом одновременной локализации и построения карты (SLAM). Этот метод позволяет составлять карту местности и наносить на нее текущую позицию сканирующего объекта. Он применяется повсеместно, в том числе в беспилотных автомобилях.

Разработчик Рич Уайтхаус (Rich Whitehouse) использовал способность робота-пылесоса iRobot Roomba 980 составлять карту местности для создания карт для Doom. За основу программист взял свою предыдущую разработку Noesis, предназначенную для извлечения 3D-моделей из игр и их конвертацию в различные форматы. Кроме того, автор воспользовался штатной функцией пылесоса, позволяющей владельцу отслеживать, где пылесос убирался.

Программа самостоятельно находит робопылесос в локальной сети и начинает собирать карту его перемещений. После этого карту можно загрузить в написанную Уйатхаусом программу, а несколько карт можно объединить в одну. Затем пользователь может либо сразу создать .WAD-файлы для игры, содержащую игровую карту, основанную на карте реального помещения, либо вручную поменять некоторые параметры.

Doom — не просто известная игра, но и одна из самых популярных программ для портирования, причем на самые разные и неожиданные устройства. К примеру, Doom запускали на банкомате, спортивном автомобиле, принтере, клавише клавиатуры и даже внутри Doom.

Григорий Копиев

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.