The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск мультимедийной библиотеки SDL 2.0.7"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск мультимедийной библиотеки SDL 2.0.7" +/
Сообщение от Zenitur (ok), 25-Окт-17, 09:14 
Хочу релиза под Linux игр StarCraft 1 и 2, Diablo I, II и III, Heartstone и Heroes of the Storm. Я пишу это в этой теме потому, что в Blizzard работает разработчик SDL, Сэм Лантинг, создавший эту библиотеку.

Только я не хочу чтобы портировали так, как Steam. Ещё один Runtime моё ОЗУ не потянет... Пусть сборочным окружением будет CentOS 6. Ну, или RHEL6, мне не принципиально. Blizzard богатые, лицензия на ОС их не оттяготит. Почему RHEL6?

1. В Glibc 2.12 все необходимые вызовы присутствуют.

2. Для этого дистрибутива Linux существует репозиторий Devtoolset. В нём доступен компилятор GCC самой последней версии - 7. Причём, что интересно, финальная линковка бинарников происходит с C++ Runtime из GCC 4.4. Магия: программы и библиотеки работают, не требуя нового libstdc++.so.6 в системе!

3. Fedora Core 6, на базе которой создан RHEL5, имел Xinerama для многомониторных конфигураций, и Xrandr для изменения размера экрана. В Fedora 7 был старт кампании по избавлению от Xinerama в пользу _только_ XRandr! Вероятно, в Fedora Core 6 не успели из-за заморозки перед релизом. В RHEL6, всё уже вошло (библиотека Xinerama оставлена для обратной совместимости).

Если использовать сборочное окружение (например) RHEL5, для которого тоже есть Devtoolset, то тогда, вероятно, придётся реализовывать оба способа работать с несколькими мониторами: Xinerama и Xrandr. А это гемморой, зоопарк и никому не нужно с тех пор, как NVIDIA перевела свой драйвер с TwinView на XRandr в 2011 году.

4. В 2009 году вышел Xinput 2 с поддержкой Raw Input. Я не одобряю эту технологию, но ничего не поделаешь: теперь она используется всеми играми. В RHEL6, вышедший в 2010, Xinput 2 уже вошёл. Поэтому использовать что-либо старее "шестёрки", опять-таки, гемморойно из-за необходимости реализовывать весь зоопарк.

В 2010 году была выпущена игра Braid для Linux. Xinput 2 тогда был новинкой, однако в игре он был уже реализован. Я играл в такой версии дистрибутива Linux, в которой Raw Input ещё не было. И тем не менее, игра запускалась. Даже не знаю, как это реализовали? Вероятно, использовался старый файл библиотеки, и header-ы от новой. Плюс написание кода: вместе с игрой шла библиотека libSDL 1.2. Портирование выполнял Icculus, а он известен своим скурпулёзным подходом к этому делу.

Однако тогда это был свежак. А теперь смысла изворачиваться нет. Дай мне волю, я бы вообще сделал бинарники для Linux 2.6.9, Glibc 2.3, ALSA/PulseAudio 2.0/5.1, Xinerama/XRandr 1.2! Хорошо что портирование выполняю не я, наверное.

Чего я не рекомендую, так это:

1. Собирать в Ubuntu, будь то LTS или не LTS. У меня за весь мой опыт мейнтейнера было полно примеров, как бинарник от Ubuntu x не работал в x+1. Не потому что "поломали" что-то в ядре Linux, или в Glibc - нет. Исчезла из репозитория библиотека. Навсегда. Конечно, её можно найти и подставить, или даже распространять с программой! Но с RHEL6 таких случаев должно быть меньше. Перед глазами - яркий антипример использования Ubuntu в качестве билд-фермы: Steam Runtime.

2. Собирать в Slackware. Мне известно, что Icculus собирал UT2004 именно в нём! Как я понял, не из-за личных предпочтений. А потому что Slackware это дистрибутив Linux, в котором все системные компоненты не подвергаются жёсткому патчингу, "ванильные". Этот парень известен своим скурпулёзным подходом. Quake3-то он в RH 7 собирал, во вполне себе мейнстримовом дистрибутиве!

В современном Linux я не вижу в этом смысла. RHEL - вполне себе хорошая база.

Кстати, о том, как патченное сборочное окружение может повлиять негативно. Первой портированной на Linux игрой Valve была Team Fortress 2. Русские игроки столкнулись с проблемой - квадратики вместо русских букв! В Gentoo это "лечилось" включением какого-то нестандартного параметра в конфиге Freetype. В остальных дистрибутивах - удалением из системы шрифта Adobe Helvetica. Однажды я решил попробовать Freetype, пропатченный Infinality. И TF2 починился! Без удаления шрифта, без редактирования конфига.

В Ubuntu этот патч уже наложен по умолчанию. Следовало собирать игру в окружении с не патченным Freetype. Тогда бы игра работала одинаково хорошо как в системах без патча, так и с ним. Кстати, что? Freetype в игре? Не в GTK-приложении? Нигде такого не видел. Только в игре под названием Osmos.

Единственный недостаток RHEL6 в качестве сборочного окружения - отсутствие Wayland/Weston. Если игра использует SDL для рисования окна с игрой, и GTK для рисования лаунчера, ей не нужно беспокоиться о том, какой графический сервер используется: SDL/GTK определит это сам. Осталось только компильнуть эти самые SDL/GTK с поддержкой и иксов, и Wayland. Только как, если в системе его нет?

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск мультимедийной библиотеки SDL 2.0.7, opennews, 24-Окт-17, 11:04  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру