Игра, которая выросла из карты
Microsoft Flight Simulator образца 2020 года часто вспоминают по красивым облакам, кабинам самолетов и возможности найти собственный дом. Но наиболее необычная часть проекта находилась глубже. Разработчики фактически отказались от традиционного способа создания игрового мира.
Обычная крупная игра строится как ограниченная территория. Художники создают рельеф, дороги, здания, растительность, расставляют объекты и проверяют результат. Даже огромные открытые миры остаются конечными.
С Землей этот подход не работает. Площадь поверхности планеты составляет около 510 миллионов квадратных километров. Вручную воспроизводить города, поселки, дороги и леса в таком масштабе невозможно даже для очень большой команды.
Поэтому Microsoft Flight Simulator пришлось собирать мир из данных.
Еще перед релизом Microsoft объясняла устройство системы: основой служили спутниковые данные и аэрофотосъемка Bing, а Azure использовался для обработки и передачи информации клиенту. На тот момент компания говорила примерно о 2 ПБ исходных географических данных.
Само по себе спутниковое изображение еще не является трехмерным игровым миром. На фотографии сверху видны крыши, дороги и растительность, но игре необходимо понять, где заканчивается одно здание и начинается другое, какой высоты должен быть объект, где поставить дерево и какой материал использовать для поверхности.
Здесь в работу включались алгоритмы машинного обучения и процедурной генерации. Они анализировали данные и восстанавливали структуру местности. Microsoft сообщала, что система могла определять положение деревьев, восполнять отсутствующие здания и учитывать даже цвет крыш.
Именно поэтому правильнее воспринимать Microsoft Flight Simulator 2020 не как гигантскую карту, сохраненную на диске, а как программу, которая собирает видимый участок планеты из нескольких слоев информации.

Откуда взялись 1,5 миллиарда зданий
В рекламных материалах Microsoft фигурировали цифры, которые в 2020 году звучали почти неправдоподобно: более 37 тысяч аэропортов, около 1,5 миллиарда зданий и 2 триллиона деревьев. Эти значения до сих пор приводит официальная страница Microsoft Flight Simulator 2020.
Это не означает, что разработчики создали 1,5 миллиарда индивидуальных трехмерных моделей.
Часть городов воспроизводилась при помощи фотограмметрии. В таких районах форма зданий и других объектов восстанавливается из большого числа фотографий, сделанных с разных направлений. Результат может быть очень похож на настоящий город, особенно при взгляде с высоты.
Но качественной фотограмметрии для всей планеты нет. Огромные территории приходилось строить иначе.
Компания Blackshark.ai использовала компьютерное зрение и машинное обучение для анализа двухмерных изображений. Алгоритмы искали контуры зданий и затем превращали обнаруженные объекты в трехмерную геометрию. Для них подбирались высота, форма крыши и внешний вид.
Масштаб здесь одновременно является достоинством и источником ошибок.
Алгоритму можно поручить обработать миллиарды объектов. Нельзя ожидать, что каждый из этих объектов после автоматической обработки будет соответствовать реальному зданию до окна и балкона. Если исходные данные устарели, закрыты облаками, имеют недостаточное разрешение или алгоритм неправильно классифицировал объект, ошибка переносится в виртуальный мир.
Отсюда появились знаменитые странности раннего Flight Simulator: здания неправильной формы, необычно высокие конструкции, деревья там, где их быть не должно, или типовые дома вместо хорошо знакомых местных построек.
Это не случайная недоработка, которую можно было полностью устранить дополнительным месяцем ручной проверки. Это цена выбранной архитектуры.
При создании обычной игровой карты ошибку можно найти глазами. При создании модели всей планеты контроль становится статистическим. Система должна давать приемлемый результат для миллиардов объектов, хотя отдельные здания могут быть неверными.
Именно этот компромисс сделал проект возможным.

