На SerenityOS запустили Serious Sam: The First Encounter


Йелле Рааймэйкерс отчитался об успешном портировании Serious Sam: The First Encounter на SerenityOS. Эту Unix-подобную операционную систему с нуля создают несколько разработчиков в качестве хобби.
Писать SerenityOS начал Андреас Клинг в 2018 году после трёх месяцев наркореабилитации. Клингу было нечем заняться, поэтому в попытке убить время он начал писать то, что хотел всегда: операционную систему своей мечты. Имя детищу Андреас подобрал по названию молитвы о душевном покое (Serenity Prayer).

SerenityOS не закончилась простыми экспериментами и развивается до сих пор. На данный момент в репозитории проекта отметились 883 контрибьютора. Клинг с 2021 года нигде не работает и живёт за счёт пожертвований, посвящая всё время работе над проектом. Относительную популярность некоторые связывают с форматом разработки: это ежемесячные текстовые обновления, работа с сообществом на сервере Discord и активность на канале Клинга на YouTube.

Операционная система не базируется на ядре Linux и вообще пытается избегать заимствования чужих компонентов. Вместо этого как можно больше компонентов пишутся самостоятельно. Даже браузер Ladybird не основан на WebKit или Gecko: Андреас Клинг написал собственный движок для рендера страниц. Браузер, кстати, затем стал кроссплатформенным, то есть запускается вне SerenityOS.

У операционки нет чётко зафиксированных стадий разработки, нет версий, нет релизов. Предполагается, что заинтересовавшийся скомпилирует систему из исходных кодов самостоятельно.

На SerenityOS есть игры, и не только Doom, который запускается даже на монохромных калькуляторах.

VVVVVV на SerenityOS

Когда платформеру VVVVVV стукнуло 10 лет, разработчики выпустили исходные коды игры. Клинг немедленно заинтересовался и попытался запустить VVVVVV на своей системе. Поскольку игра была построена на основе библиотек SDL, а для SerenityOS уже был неплохой порт SDL, особых проблем не возникло. Код игры опубликовали 10 января 2020 года, и уже через 2 дня VVVVVV работал в SerenityOS.

Аналогичным образом на SerenityOS запустили три первых Quake.

Тест запуска Quake III

Вообще, в списке портированного ПО сейчас 289 записей. Усилиями Йелле Рааймэйкерса добавится как минимум ещё одна. Нидерландский разработчик портировал и запустил на SerenityOS видеоигру Serious Sam: The First Encounter. (Разработчик игры, Croteam, открыла в 2016 году исходники движка Serious Engine под лицензией GNU GPL.)

1ee2ar49edwav7h74hbq5d1zkbq.jpeg
Йелле Рааймэйкерс

Также Рааймэйкерс сравнил правильность порта на реальном видеоускорителе Nvidia под Linux и на LibSoftGPU, который написан для SerenityOS. Для этого он загрузил стандартный тестовый уровень игры для демонстрации на тот момент продвинутых графических технологий Serious Engine: мультитекстурирования, прозрачности альфа-канала, аддитивного и мультипликативного смешения цветов, наложения карты среды, bump mapping, зеркальных бликов и объёмного тумана.


Как заметил программист, реализация LibSoftGPU требует доработки. К примеру, на оружии отсутствует рассеянный жёлтый свет, цвета не всегда переданы корректно. Часть неточностей связана с функциями, которых в LibSoftGPU пока нет. Иногда радикально отличаются двухмерные спрайты.

Хотя порт успешно запускается, он работает нестабильно, а в реализации OpenGL не хватает некоторых методов. Для запуска игры потребовалась поддержка большей части спецификаций OpenGL версии 1.5. Библиотеки OpenGL и реализация SDL2 в SerenityOS оставляют желать лучшего.

Из-за программного ускорения видео производительность игры 2001 года балансирует на грани недопустимо низкой. Впрочем, видеозапись до ката была сделана на виртуальной машине с одним ядром, поскольку параллелизм LibSoftGPU пока не поддерживает, да и с многоядерностью сама SerenityOS работает нестабильно.

Как обычно, разработчики SerenityOS не дают обещаний и просто продолжают трудиться над операционкой. Если у этого художественного программирования и есть продукт, то это сам процесс.

© Habrahabr.ru