Что делать если вы купили Gothic 1 Remake в Steam, а игра не работает или работает не так?
Именно в такой ситуации я оказался буквально пару месяцев назад и хочу поделиться историей решения проблемы.
Наши вводные:
Современный ноутбук с Ryzen 9 HX и 32 gb оперативной памяти
Операционная система Arch Linux
Библиотека из 455 игр, процентов 90 из которых доступны только для Windows
В принципе, для обычного пользователя, уже давно существует официальный пакет Steam для Linux с функцией запуска игр через Proton, но он не торт. Не все игры в нём работают хорошо, запустить что-то рядом с игрой (в том же префиксе) сложно, а значит все моды, Cheat Engine и любые другие способы себя развлечь недоступны.
Следовательно, возникает вопрос: а какие есть ещё варианты?
С этим вопросом я обратился в спортлото к Gemini и попросил поискать в интернете какое-то решение моей проблемы, но ничего найдено не было.
Тогда я подумал примерно так: если игра как-то ± запускается в Proton, пусть и не так хорошо как я хочу, а протон построен на Wine, может быть я смогу запустить Steam и эту игру в Wine?
Так на моем компьютере оказался установлен Wine из репозиториев Arch, а затем, когда оказалось, что Wine из репозиториев открывает Steam как пустое чёрное окно, Wine, собранный из исходников, но всё не то.
Какие плюсы и минусы у Wine, собранного из master ветки?
NTSync по умолчанию, в ядре оно уже есть, а значит игры работают чуть лучше.
GStreamer не ломает сборку, работает, а значит внутри Wine видосики будут рендериться на GPU или расширениях, а не процессоре.
Сборка по умолчанию для X11, который успел устареть два раза, то есть для запуска на моем компьютере нужно использовать XWayland что плохо.
Сборка по умолчанию использует GL renderer который так же успел устареть два раза, а хочется Vulkan.
Иногда поддерживающие Wine принимают в master достаточно спорные и сомнительные патчи вызывающие проблемы с уже работающими программами.
Включаем сборку с Wayland и Vulkan, запускаем Steam и снова черное окно.
Где-то здесь программист Саша по версии 2018, 2020 или даже 2022 года, скорее всего, сдался бы.
Нет никакой проблемы разобраться в коде на Си. Иногда это даже проще кода на Go или JS, так как всё происходит явно, но объём работы и, что важнее, поиска информации, такой, что можно работать в режиме 8/5/2 несколько месяцев и всё равно не получить никакого результата.
Теперь всё по-другому
Я не люблю разговоры, что ИИ всех заменит. Я использую ИИ в работе и слишком хорошо понимаю, какие у этого подхода проблемы и пробелы. Они не на уровне кода. Я даже уверен, что могу после длительного спора доказать любому, что определение ИИ как «ИИ» некорректное.
Но кто мы, блин, такие, чтобы в 2026 году, не пользоваться бесконечным генератором осмысленного текста?
Мне очень понравилось сравнение, которое придумал кто-то из пользователей запрещенной в РФ соцсети, кто представил это как фентезийную вселенную, где волшебник осваивает заклинание призыва призывателей. Да каждый следующий из них работает процентов на 10 хуже, чем предыдущий, но работают же.
Давайте подумаем:
Допустим мы, как кожаные мешки, решили сделать ещё один сомнительный патч для Wine. Какая наша последовательность действий?
Кажется, первое, что нужно сделать — собрать команду, которая будет работать над необходимой нам функциональностью. Ну примерно…

Я бы хотел быть миллионером, плавать на яхте по Средиземному морю и по щелчку пальцев нанимать любых экспертов из любого уголка нашей планеты, но пока я — не он, а поэтому командой будет ИИ, а значит…
Дорогая команда, давайте разберёмся, почему здесь чёрный экран.
Программист Саша не очень представляет, как делать отладку Windows-приложений, запущенных в Wine на Linux. Это, в целом, уже звучит как заклинание.
Программист Саша хорошо разбирается в Go и Rust и как написать приложение без упора в IO. Что такое Vulkan и что такое рендеринг?
Совершенно непонятно, но можно спросить аналитика, а главное, там, где раньше мы получали галлюцинацию, теперь есть Exa и Bright Data, которые можно подключить, как MCP, и попросить найти настоящую информацию.
Сегодня Саша не программист. Надеваем модный костюм с белым воротничком и вот мы — почти бизнес-заказчик.
Описываем менеджеру нашу проблему, аналитику говорим поискать в интернете похожие кейсы, а разработчикам — собрать и запустить Steam внутри Wine с включённым отладчиком.
Тут должна быть реклама моего собственного мультиролевого агента, которого я использовал в процессе разработки, но я её не придумал.
Так мы обнаруживаем, что CEF (это такая коробка с Chromium, вокруг которой построен Steam) при GPU-рендеринге пытается писать на экран из параллельных процессов, а в Wayland такое нельзя.
Где-то здесь я бы мог начать показывать много примеров кода, там гонки данных, веселье с NT синхронизацией на Linux, и прочий демонический треш, но из 8 тысяч строк кода, которые пришлось перепроверять и иногда переписывать за агентами, сложно выбрать что-то конкретное, поэтому вот ссылка на ветку, а я разберу только…
Cамые неожиданные, по мнению автора, как сетевого программиста, кейсы:
В Windows процессы из одной группы могут писать в одно окно. В современном Linux — нет. Говорят, что это безопасно и правильно, но нам это действительно нужно.
В целом, это было главной проблемой, потому что в веб-фронте, к которому автор привык, об этом даже не думают, а в бэкэнде мы обычно стараемся изолировать объекты и прятать их за mutex, либо использовать атомарные указатели, создавать пулы объектов и доставать из них ресурсы в момент использования.
В случае с черным окном Steam, оказалось, что несколько потоков пишут в одно и то же окно, и это не может работать, если не изобрести самодельный композитор внутри Wine. Что я там говорил про сомнительные патчи?
Весёлое — синхронизация всего этого добра. При ресайзе элементы меняют размер с разной скоростью, в итоге анимация выглядит как Windows XP.
В Windows и, в целом, на уровне производителей к каждому монитору прикрепляют некий EDID с массивом информации о мониторе. В современном Linux композитор съедает EDID и изолирует от приложений эту информацию.
Звучит безопасно, но некоторые игры не позволяют выбирать монитор, если у него нет EDID. Например, Gothic 1 Remake.
Пришлось сочинять генератор подложного EDID. Тупо, но зато можно выбирать монитор и его разрешение.
Масштабирование DPI в Wine это какой-то ужас. У нас есть реальное разрешение экрана и то которое пользователь указал сам, scale экрана в процентах и параметр DPI в Wine. Как на основании таких вводных посчитать размеры окна и его частей решительно непонятно.
Отдельный анекдот — fractional scaling, который только начали внедрять и без которого float размеры не работают. Умножать разрешение на scale в процентах, в целочисленной системе счисления — весело, но больно.
Вся концепция Vulkan построена вокруг слоев (layers) которые “накладываются” друг на друга. Это очень интересно пока мы не оказываемся в ситуации когда у нас слои начинают слоиться в Linux, продолжают в Windows и игра начинает работать поверх этого всего.
На удивление не вызывает особых просадок, но бывает забавно, когда в Linux включен слой валидации который начинает отсыпать ошибки внутри какой-нибудь очередной инди-игры.
Резюме
Работать над нормальной поддержкой Wayland в Wine было очень интересно и познавательно.
Рисование интерфейса и работа с графикой — во много те же грабли с IO и синхронизацией, только сложнее.
На моем ноутбуке FPS, от ~40 с GL рендерингом и XWayland и ~50 в Proton, вырос до весьма приятных ~60.
Объем кода до первого не-черного окна был 500 строк, после нормализации вырос до 8к строк, а сейчас, после дополнительных доработок, оптимизации и добавления настоящей поддержки геймпадов, которая не тянет на отдельную статью (но серьезно, почему в 2026 никто не сделал это, кроме меня?), разрастается до страшных 20к, которые мне все пришлось прочитать.
В master ветку Wine мой PR не забрали, сказали что ИИ не имеет права писать код, да и бог с ними.
Wine — идеальный проект для современного переписывания на Rust, кодовая база иногда настолько ужасна, что невозможно представить как это переписать более логично и согласованно и Си здесь вообще не помогает.
В процессе разработки я использовал собственное приложение-агента, где в чате может жить несколько моделей с разными ролями, это очень классно помогает в таких сложных проектах и тут могла быть его реклама, но оно пока не готово, а рекламу не придумал.
Работа над этим проектом потребовала УЙМУ времени. Если бы в июне я не оказался свободен — я бы это не сделал никогда.
Если по какой-то причине вы тоже являетесь пользователем Arch Linux можете тоже поставить Wine с моим сомнительным патчем из AUR. Обещаю его поддерживать как минимум пока не найду работу.
Стим не будет мигать, игры вроде готики запустятся и будут стабильно работать, в том числе с геймпадом и даже в режиме D-input.

paru -S wine-gohryt-wayland-wow64