LINUX.ORG.RU
ФорумTalks

Linux- специфичные фичи в разработке игр

 , ,


1

1

Сегодня поймал себя на мысли, что не могу припомнить ничего, связанного с графикой, и при этом не кроссплатформенного (вроде SDL), а специфично линуксового, использующего какие-то особенности ядра или иксов(кажется, у wayland самого по себе в этом плане нет особых преимуществ) для достижения возможностей, которых нет на других платформах. Хотя и для мака ничего похожего тоже не знаю(в iOS, правда, не устают повторять «используйте заточенное под нас», но по сути никакого резона в этом нет - openGL ES - он и в африке openGL).

Если я не ошибаюсь, и, с точки зрения игростроения, GNU/Linux - просто ещё одна запускалка десктопного openGL с наличием SDL(если есть проприетарные драйвера) и относительно обеглюченной на сегодняшний момент pulseAudio, что должно появиться у, допустим, Ubuntu, чтобы на одном и том же железе быстрее/лучше отрисовывалось, или, например, более быстро реализовывалось в каком-то высокоуровневом фреймворке, нещадно оптимизированном без оглядки на кроссплатформенность?

DirectX я вообще не использовал, SDL давно не щупал(это надо исправить), поэтому не могу ничего сказать об их сравнительном удобстве.

★★★★

В маке вроде как QuartzExtreme, но имеет ли он отношение к сабжу точно сказать не могу.

Jefail ★★★★
()

Ну так все правильно, разве нет? ОС-специфичные фичи для прикладного софта не нужны, тем более то в линуксе.

pss
()

при этом не кроссплатформенного (вроде SDL), а специфично линуксового

стартуй игру через systemd, отправляй события через dbus, и дело в шляпе) Не забудь пульсу и линуксовые сокеты

stevejobs ★★★★☆
()

а, чтобы игра работала быстрее, можно критичные части сделать в ведре

stevejobs ★★★★☆
()

Сегодня поймал себя на мысли, что не могу припомнить ничего, связанного с графикой, и при этом не кроссплатформенного (вроде SDL), а специфично линуксового, использующего какие-то особенности ядра или иксов

это же прекрасно! и говорит о продуманности архитектуры.

dikiy ★★☆☆☆
()

в разработке игр
особенности … иксов

Графические примитивы иксовые рисовать что ли? :}

кажется, у wayland самого по себе в этом плане нет особых преимуществ

Нет дурного посредника — иксов.

Deleted
()
Ответ на: комментарий от toney

Такой же посредник, как сейчас композитный WM. Но там иксы не нужны.

[…] Then the X server just does what it's told. It puts 1 image up on the screen. Basically, we made a second X server, because the first one was great. By second I mean hundred and five […]

© Daniel Stone об иксах и WM'ах.

Deleted
()

Линуксовый графический стек это самый быстрый OpenGL.

Собственно, что игроделам ещё надо то?

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

где-то это уже слышал, но до первоисточника ни разу не добирался

wingear ★★★★
() автор топика

Если я не ошибаюсь, и, с точки зрения игростроения, GNU/Linux - просто ещё одна запускалка десктопного openGL с наличием SDL(если есть проприетарные драйвера) и относительно обеглюченной на сегодняшний момент pulseAudio, что должно появиться у, допустим, Ubuntu, чтобы на одном и том же железе быстрее/лучше отрисовывалось, или, например, более быстро реализовывалось в каком-то высокоуровневом фреймворке, нещадно оптимизированном без оглядки на кроссплатформенность?

Да кто вас убунтариев знает, может у вас всё и одинаково, а вот на линуксе и хрюне OpenGL работает не одинаково. В некоторых случаях фпс выше частоты обновления экрана рулит и педалит, и есть там также полезная фича отключение стирания буфера экрана между кадрами. И вот ты методом научного тыка настраиваешь с ней такую плавную, без рывков, чёрных полос и рваных кадров, картинку в линуксе и не паришься, а потом портируешь всё это дело в вин32 и ругаешься на систему пытаясь сделать там также красиво и в полноэкранном режиме и в _оконном_. Ещё в винде плохо с паузами <1 миллисекунды и потоки менее герметичные вследствие использования другого менеджера памяти. То есть запаковал ты в линуксе класс в поток который у виндузятников там всё ломает и всё в линуксе работает, но только в линуксе:)

Napilnik ★★★★★
()

Предлагаете собрать игру как модуль ядра?

ya-betmen ★★★★★
()

Там ничего нет и не может быть. От ОС игре нужна ФС, ввод и инициализация GAPI.

ranka-lee
()

Я играю много и видел такие линукс-специфичные вещи. Первая - композитинг. Видео (2 Мб) того как по-разному отображается одно и то же приложение (заставка Nero) с включенным композитингом и с выключенным.

http://www.adobe.com/support/documentation/ru/air/2/releasenotes_users.html

Для поддержки прозрачности в приложениях AIR требуется использование композитного диспетчера окон и дополнительных серверных расширений X. Поддерживаются следующие компоненты: Композитные диспетчеры окон: Beryl, Compiz, Compiz-fusion. Серверные расширения X: Composite, Render, Shape

Сделаешь это в своём приложении? Получишь восторг пользователей!

Далее. Игра Awesomenauts. Если запускать её в окне, а потом сделать Alt-Tab для переключения на другое окно, звук исчезает. Но исчезает не весь звук, а только фоновая музыка. Звуки игры остаются! Это мега-удобно: допустим, игра говорит что идёт поиск игроков и осталось 3 минуты. Но она нашла игроков за 1:30 минуты. А я уже в другом окне! И тут я слышу из колонок запускающуюся ракету. Это ну вообще классно! Я такого нигде не видел.

Далее, всё тот же Alt-Tab. В статье Games на LOR Wiki есть программа actkbd, которая позволяет сворачивать полноэкранное приложение в линуксе. Оказывается, оно монопольно захватывает ввод иксов, а actkbd обходит эту проблему. Этой проблеме подвержены, например, все игры, портированные Icculus (более 90% проприетарных игр для Linux). Наверное, он соблюдает какие-то стандарты. А игра Osmos портировалась самими разработчиками игры (ссылка), там Alt-Tab работает! Более того, Alt + щелчок мыши таскает полноэкранное приложение как окно (во всяком случае в GNOME2). И то же самое с любой игрой в Wine! В GNOME2 всегда работает Alt-Tab и с зажатым Alt окно таскается.
И наконец, Steam Overlay позволяет сделать Alt-Tab на любой игре, которая его не поддерживает. Жмём Shift-Tab для вызова Steam Overlay, а потом Alt-Tab, и всё работает. А с учётом того что Steam позволяет добавлять в список игр любую нативную игру, для которой есть *.desktop ярлык в «главном меню», это мегакруто! Super Meat Boy в Steam нет, а я его добавил. И Quake III Arena тоже. И пользуюсь Alt-Tab'ом теперь.

Далее, как ведёт себя мышка в полноэкранных играх. Вот тот же Awesomenauts, когда игра идёт, мышкой нельзя выйти за границы окна. А когда меню, это можно сделать. А вот в Bastion мышка ну никак не хочет выходить из окна! Приходится делать Alt-Tab. Скорее всего потому что она на Mono, и Linux-специфичные вещи в ней недоступны. В отличие от трёх пунктов выше, правильное поведение мыши я встречал почти у всех игр в окне.

Что касается пульшаудио - да просто клади libopenal.so.1 в каталог с игрой и делай run.sh, который её подцепит. Библиотеку компилируй в компиляторе постарее (CentOS 5 с GCC 4.1 и GLIBC 2.4), чтобы она у всех гарантированно работала, и побольше звуковых систем туда включи. Они там работают через dlopen, поэтому в системе без PulseAudio или JACK не заругаются что libpulse и libjack в системе нет.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от Napilnik

Чего это сразу «убунтоид»?) Просто, как я понял, стим прогоняют на убунте, потом смотрят(или нет), что поломалось на остальных дистрибутивах. Года 2 была гента, но на новом ноуте после почти месяца попыток завести UEFI и optimus плюнул и поставил кубунту, в которой внезапно всё подхватилось. Пока вроде работает, если с облновлением отвалится, что-нибудь ещё попробую

wingear ★★★★
() автор топика

у тебя гейб спрашивал что ли как будушую хл3 гвоздями к гну/линуксу прибить? что бы остальным обломно было и все ломанулись покупать их приставку.

der_looser ★★
()
Ответ на: комментарий от der_looser

Нет, просто для понимания 3d графики хочется пойти дальше уроков с ogldev.atspace.co.uk и навелосипедить небольшой движок, как раз таки прибитый гвоздями, но не просто, а с каким-либо профитом от этого

wingear ★★★★
() автор топика
Ответ на: комментарий от wingear

Просто, как я понял, стим прогоняют на убунте, потом смотрят(или нет), что поломалось на остальных дистрибутивах.

Да как-то и десуры хватает. Примерно половина игр требует либы которых нет в неубунтах, но по идее, сколько там убунтологов и сколько виндузятников? Если у разработчиков нет уверенности что возня с убунтой окупится то можно просто сделать чуть получше вантузятный порт - тех больше.

на новом ноуте после почти месяца попыток завести UEFI и optimus

И в федоре тоже не заработало? Когда придётся покупать железо с UEFI то буду гуглить железо с возможностью его отключения, процедура нудная и длительная, но что поделаешь - продавцы на сайтах пишут не всю необходимую информацию. Насчёт оптимуса мну проще, использую fglrx и совместимое с ним ведро с иксами, а если гама требует именно штеуд, то она отправляется на три весёлых буквы.

Napilnik ★★★★★
()
Ответ на: комментарий от stevejobs

но почему не сделать игру частью ядра?

Thero ★★★★★
()
Ответ на: комментарий от toney

нет вэйланд не встаёт между мезой и игрой.

Thero ★★★★★
()
Ответ на: комментарий от wingear

и навелосипедить небольшой движок, как раз таки прибитый гвоздями, но не просто, а с каким-либо профитом от этого

Берёшь готовый движочек и делаешь к нему обвязку почаще втыкая в неё вызовы линуксовых процедур из ведра и баша с линуксовыми утилитами. Например можно средствами языка пожать файлы зипом а ты используй редкие линуксовые консольные архиваторы - вот весело кому-то будет портировать твой код на другие платформы. Управление сделай такое чтобы было неудобно на ведроиде и логику где-нибудь распараллель на десяток потоков и прошей рандомными вызовами чтобы было не свести в один поток - будет весело наблюдать как не x86 камни исчерпают ресурсы на середине разработки игры.

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.