У меня вейленд без xwayland, и мне захотелось поиграть в quake2. Для начала нашел единственный работающий порт (games/quake2lnx) — тот вариант, что лежит на сайте icculus.org.
Вывод графики там через кучу либ, плюс есть софтовый и opengl рендереры (opengl аж в 2 вариантах, один по графону похож на оригинал, второй улучшенный, типа с партиклами).
Я взял и выпилил все лишнее, а часть работающую на sdl 1.2 перевел на sdl2. В итоге на вейланде игра заработала. Олсо, теперь она компиляется более-менее без варнингов на clang и gcc.
Код q2 — просто ад, куча выходов за пределы массива, куча глобал стейта, размазанного по коду итд. Обнаружил сдедующие проблемы:
1) В софтварном рендерере падение при отрисовке прозрачных поверхностей (не пофиксил, просто выключил).
2) Там же баги при отрисовке, когда камера под водой (пофиксил).
3) Там же иногда баги, связанные, что кординаты спроецированного на экран объекта выходят за пределы экрана (не пофиксил).
4) Падение при выводе звука, если вывод графона притормаживает (пробовал запускать через remmina).
А тут на тебе, поменял работу, так что комплюктеры больше видеть не могу))) Поэтому выкладываю как есть и жду пул реквестов. Игра играбельна при использовании OpenGL рендерера (который по графену сильно уступает софтварному, на мой взгляд).
https://github.com/shamazmazum/quake2sdl
Устанавливаете, а потом ставите оригинальный pak0.pak в /usr/local/share/quake2/baseq2 (или /usr/share/quake2/baseq2, смотря куда ставили игру) При компиляции с -DRETEX=ON ставите другие паки отсюда http://icculus.org/quake2/files/. При компиляции с -DQMAX=ON ставите maxpak.pak в /usr/local/lib/quake2sdl/baseq2
Для FreeBSD есть порт https://github.com/shamazmazum/freebsd-ports/tree/master/games/quake2sdl (скопируйте в /usr/ports/games)