Мем Can it run Doom? можно закрывать. Его запустили на спутнике ЕКА.

Мем Can it run Doom? можно закрывать. Его запустили на спутнике ЕКА.

Пока человечество спорит о колониях на Марсе, кто-то уже играет в космосе.

image

На недавнем Ubuntu Summit прозвучала история, которая наверняка порадует любого технаря старше тридцати. Разработчик Оулавюр Вааге рассказал, как его команда в рамках хакатона Европейского космического агентства заставила Doom работать на спутнике.

Экспериментальная платформа называлась OPS-SAT. Это небольшой «летающий лабораторный» куб размером около 10 на 10 на 30 сантиметров, созданный как полигон для улучшения наземного управления и бортовых систем. По данным ESA, его компьютер был примерно в десять раз мощнее, чем на других аппаратах агентства того времени. Исследователям дали почти полную свободу. Задача была пробовать и ломать пределы бортового железа и окружающей инфраструктуры. По ходу проекта зафиксировали несколько первых в отрасли событий. На борту обучили модель машинного обучения, провели партию шахмат и оформили фондовую сделку прямо из космоса. Теперь к этому списку можно добавить Doom на орбите.

Условия были непростые. Нельзя было произвольно подтягивать зависимости и собирать всё окружение с нуля. Команды получали ограниченные временные слоты для загрузки и запуска кода, без возможности интерактивного ввода. Поэтому для проверки использовали timе-демо первого уровня. Первая попытка шла через Chocolate Doom. Этот порт бережно сохраняет особенности оригинала и опирается на SDL с минимальным набором зависимостей. Игра действительно стартовала, но графики не было, ведь у спутника нет экрана. По сути команда видела только текстовую сводку по пройденному уровню и количеству убитых монстров. Зато это подтвердило, что код стабилен и космическая радиация ему не мешает.

Чтобы всё-таки получить картинку, команда перешла на doomgeneric. Этот порт облегчает перенос на экзотические платформы. Вывод направили на виртуальную видеокарту и начали делать скриншоты. Возник вопрос как доказать, что этот конкретный Doom идёт именно в космосе. Решение получилось эффектным. Для уличных фонов взяли снимки Земли с бортовой камеры спутника. Дальше началась инженерная рутина. Камера давала изображение намного выше по разрешению и глубине цвета, чем способен переварить движок. Пригодилась другая бортовая разработка. Соседняя команда оставила на спутнике модель ИИ, которая умела масштабировать и снижать цветность кадров с минимальными потерями. Так снимки приводили к 8-битному формату.

Даже этого оказалось мало. Палитра Doom фиксирована и ограничена 256 цветами. В ней не хватало полу-тонов для преобладающих в космических пейзажах синего, коричневого и зелёного. Пришлось пойти на лёгкое богохульство и чуть поправить палитру под фоны Земли. Миллион гиков в этот момент наверняка вздрогнули, но результат того стоил. На скриншотах из космоса классический шутер смотрелся органично, а доказательство «мы действительно в орбите» стало наглядным.

История про Doom на OPS-SAT получилась живой и очень по-современному инженерной. Минимальные ресурсы, жёсткие ограничения, чужие модули, которые нашлись кстати, и немного смелости там, где ортодоксия мешает делу. Следующая мечта звучит очевидно. Когда-нибудь Doom запустят на Марсе, то есть прямо в декорациях собственного сюжета.