Введение
Steam для Linux доступен для всех пользователей Steam. Учитывая тот факт, что каталог поддерживаемых на Linux игр растёт, а группа сообщества Steam для Linux очень активна, настало время портировать вашу игру на Linux.
Разработка игры на Linux может вызвать определенные трудности у разработчиков, хорошо знакомых с разработкой на Windows или macOS. Следующая информация поможет вам успешно портировать вашу игру в Steam для Linux.
Подготовка к работе
Сборка игры на Linux требует:
- Компьютер для разработки с последней версией Linux со всеми обновлениями. Это может быть машина с двумя ОС, выделенный на Linux компьютер и даже виртуальная машина, на которой запущен Linux. Кроме того, разработка поддерживается как на 32-, так и на 64-битных дистрибутивах Linux. Рекомендуемым дистрибутивом Linux является последняя версия Ubuntu LTS, так как Valve и сообщество Linux тестируют её больше всего. Загрузить Ubuntu можно здесь.
- Клиент Steam для Linux.
- Базовый набор инструментов для разработки на Linux (к примеру, g++, gcc и утилита make), содержащийся в пакете build-essential. Установите этот пакет с помощью Ubuntu Software Center или в окне терминала Ubuntu при помощи утилиты управления пакетами apt-get: sudo apt-get install build-essential.
- Последняя версия Steam Linux Runtime, которая включает в себя инструменты и полный набор библиотек, необходимый для отправки игр на Linux в Steam. Инструкции об использовании Steam Linux Runtime содержатся в файле README.md, включенном в репозиторий.
Если у вас есть общие вопросы о Linux в Steamworks или вы хотите сообщить о проблемах с Steam Linux Runtime, пожалуйста, присоединитесь к группе разработчиков Steamworks и задайте вопрос в разделе форума о Linux.
Инструменты Linux
Число инструментов разработки на Linux огромно, начиная от разнообразных интерфейсов командной строки и заканчивая интегрированными средами разработки с графическими интерфейсами. Следующая информация основана на опыте команды разработчиков на Linux, работающих в Valve.
Для тех, кто знаком со средствами разработки на Windows, простейшим решением будет использовать Visual Studio на Windows вместе с
WinGDB — расширением Visual C++, которое позволяет выполнять отладку удаленных процессов Linux с помощью интерфейса отладки Visual Studio.
Для разработки на Linux команда Valve использовала следующие инструменты:
- QtCreator: отладчик и интегрированная среда разработки со знакомыми по Visual Studio сочетаниями клавиш.
- SlickEdit: редактор кода с базовым и настраиваемым графическим интерфейсом, где пользователь может задать сочетания клавиш.
- gdb: популярный отладчик командной строки.
- cgdb: оболочка gdb, которая позволяет разделить экран и видеть текущее место в исходном коде во время выполнения.
- Eclipse: ещё одна интегрированная среда разработки, которую можно настроить для разработки на Linux. Доступна на Windows, macOS и Linux.
- vim: базовый текстовый редактор командной строки.
Команда Valve использовала следующие инструменты отладки и трассировки:
- QtCreator: см. выше.
- Symbol Servers
- PerfStudio: полноценный фреймовый отладчик с поддержкой трассировки API для игр, которые запускаются на видеокартах AMD.
Доступен на Windows.
- Telemetry: полноценный профилировщик для игр, запущенных на видеокартах. Доступен на Windows, macOS и Linux.
- gDEBugger: отладчик, используемый для отладки, профилирования и анализа кода OpenGL. Активная разработка переключилась на CodeXL.
- perf: инструмент для командной строки с различными функциями производительности. Доступен на Linux.
- NVIDIA Nsight: расширение для Visual Studio для отладки игр, которые запускаются на видеокартах Nvidia.
- lTTng: инструмент трассировки для Linux.
- Проект apitrace: набор инструментов для трассировки и воспроизведения вызовов OpenGL и OpenGL ES из игры.
- Zoom: профайлер центрального процессора с мощным и удобным пользовательским интерфейсом.
API для Linux
Vulkan — предпочтительная библиотека для высокопроизводительной графической визуализации. Это открытый аналог DirectX12 и Metal.
OpenGL является устаревшим стандартом графической визуализации. Большинство игр напрямую вызывают OpenGL, но есть и другие игры, которые используют метод перевода, который заключается в том, что устаревший код визуализации переводится в вызовы OpenGL. Этот подход использовался для таких старых игр на движке Source, как Team Fortress 2 и Counter-Strike: Source. Если для вашей игры вы выберете OpenGL, рекомендуем использовать основные функции OpenGL 3.0.
Simple DirectMedia Layer (SDL) 2.0 помимо прочего предоставляет низкоуровневый доступ к работе с аудио и окнами. Поддержка 3D-визуализации осуществляется с помощью OpenGL. Инструкции по установке можно найти
здесь. Документация и подробная информация представлены на
wiki-странице проекта. Valve использует SDL в Steam и большинстве наших игр для работы с окнами. SDL также предоставляет серверную поддержку для
API ввода Steam.
Перечисленные далее библиотеки предоставляют поддержку для других аспектов разработки игр:
- FreeType: визуализация как векторных, так и растровых шрифтов на Linux.
- Fontconfig: регулировка и пользовательская настройка доступа к шрифтам.
- Miles Sound System: аудиодвижок промежуточного уровня для разработки на Linux.
- Bink Video: видеокодек для разработчиков игр.
- WebM: формат открытого медиафайла, используется для записи видео в Team Fortress 2 вместо QuickTime.
Репозитории GitHub
Следующие репозитории являются общедоступными и используются для проектов, связанных со Steam для Linux: