The OpenNET Project / Index page

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



"Выпуск Wine 6.10"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "Выпуск Wine 6.10" +2 +/
Сообщение от Zenitur (ok), 05-Июн-21, 13:16 
Я начал пользоваться Wine примерно с версии 0.9.11 или 0.9.12. С той, которая была в SUSE 10.1. Я пытался запустить sol.exe и получал замедленную систему (мышь передвигалась рывками) и ничего в итоге не запустилось. Спросил в чате - сказали "попробуй запустить winecfg". И действительно: при запуске winecfg создался WINEPREFIX, и после этого все программы стали запускаться. Странно. Но в будущих версиях всё исправили, и теперь не важно, какая программа будет запускаться первой, в любом случае создастся WINEPREFIX. Но у меня уже привычка: создавать новый WINEPREFIX именно этой командой.

В этот момент оказалось, что есть более новые версии эмулятора (я для удобства буду называть его так). На тот момент 0.9.30. Скачал и установил её, попробовал позапускать разные игры. Точно работала GTA 3 и игры PopCap. Для меня основной целью были Worms Armageddon и Quake 3. Первая запустилась с чёрным экраном. Спросил в чате "почему". Ответили, что есть сайт под названием AppDB, где можно смотреть, какие программы работают, а какие нет. И если что-то не работает, можно ли починить.

Оказалось что тут баг, охватывающий WA и Diablo I. Его можно исправить хаком. Наложить патч на Wine, и всё. Есть даже готовая библиотека ddraw.dll.so, которую можно просто скачать и положить рядом с экзешником игры. Ничего компилировать не придётся. Мне стало интересно, почему патч не примут в апстрим? Оказалось что Wine не практикует использование хаков наподобие "если запускается WINWORD.EXE, то применить эти хаки".

Потом вышла игра Сталкер. В тот момент актуальной версией была 0.9.43, и в ней был баг, препятствующий запуску. Помог патч всего лишь в несколько строчек. Игра работала в первый день после релиза. Правда, динамическое освещение пока что не работало, только статичное (фактически режим DirectX 8), но ведь работало.

В ноябре 2007 года вышел документ, описывающий запуск DirectX 9.0c в Wine. А через несколько месяцев - обновлённая версия. А потом вышел winetricks, позволяющий ставить DirectX и .NET автоматически, а не выполняя инструкции вручную. Все кричали "скажи прощай Cedega". И действительно, она после этого долго не протянула. После запуска DirectX 9.0c под Wine, в Cedega осталось не так уж много игр, которые не работают под Wine.

Однажды я попробовал скомпилировать Wine из исходников. И - о чудо! - в Морровинде заработала пиксельно-шейдерная вода! А в сборке из дистрибутива - нет! Оказалось что Wine имеет фичу glsl=disabled, и в этом случае на NVIDIA будет применяться какой-то другой способ трансляции шейдеров Direct3D в OpenGL. А конкретно в ассемблер. Таким образом, на NVIDIA работало больше игр, а на тех играх, которые и так работали, вырастала производительность. Но увы, этот способ работает только на DirectX 9-играх, но не DirectX 10 и новее.

Про то, что можно прописать в настройках glsl=disabled, я тогда не знал. Как же я тогда это случайно включил, скомпилировав из исходников? Наверное, причина была в том, что в те времена практиковались заголовочные файлы OpenGL от вендора (NVIDIA или ATi), и только потом стали пользоваться заголовочными файлами от Khronos Group. Вайн скомпилировался с файлами от вендора, и фича включилась. Хотя можно было использовать дистрибутивный Wine, и просто включить эту фичу, выполнив "winetricks glsl=disabled".

Я тогда зарепортил несколько багов, которые были исправлены. В игре "Затерянный мир" (игра наподобие Settlers) нельзя было начать новую игру, так как ругалось на мультимедиа-кодек от Microsoft. В тот раз нашёлся немецкий игрок в эту же игру, который докопался до истины и помог разработчикам Wine исправить ошибку. В игре Italian Job (гоночка) все автомобили были закрашены зеркальным цветом, нашёлся тоже какой-то иностранный игрок, который сказал "похоже я знаю где баг, попробуй с этими патчами, а то у меня нет копии игры". Попробовал, исправилось.

Потом был Wine 1.0, в котором появилась начальная поддержка MS Office 2003 и 2007, а также полная поддержка Photoshop CS2.

Потом началась разработка Wine 1.1.x. Внезапно обнаружились такие игры, в которых нельзя было оглядываться персонажем вокруг себя. Мышь поворачивалась только на 180°. Оказалось, что в новых версиях DirectInput появилась новая возможность Raw Input. В линуксе она появилась в libXi 1.3. Для Wine вышел патч, добавляющий таковую поддержку, но его долго не принимали в апстрим. Руководитель проекта сказал, что стабильный релиз 1.2 выйдет без неё, а в следующий нестабильный релиз 1.3 включат этот патч. Так что приходилось компилировать Wine с этим патчем.

Игры, подверженные багу: Unreal Tournament 3, Сталкер 2 и 3 (имею в виду Чистое небо и Зов Припяти). На самом деле больше, это только те, в которые играл я.

Внезапно в моей openSUSE 10.2 (на тот момент - устаревший релиз) стали плохо рендериться шрифты в Wine. Актуальной версией Wine была 1.2. Странно, но я не видел ничего про изменение шрифтов в ChengeLog-ах. Чуть позже в ChangeLog-ах мелькнуло повышение минимально необходимой версии FreeType. Видать, именно из-за моего кейса. Тем не менее, Crossover 11.3, базирующийся на Wine 1.2, нормально рендерил шрифты у меня. Странно. Это был последний релиз с поддержкой RHEL 5 и openSUSE 10.2.

Также в Wine 1.2 произошёл переход от Documents and Settings к Users, и от Program Files к Program Filex (x86). Мне это не нравилось, я не собирался эмулировать Windows 7. Но я так и не нашёл, где это можно выключить.

Также из Wine 1.2 убрали код, реализующий mp3, из библиотеки quartz. Вместо этого добавили внешнюю зависимость от библиотеки libmpg123. Судя по коммиту, удалённый код и так был скопирован из mpg123, так что добавление внешней зависимости вместо копирования кода было правильным решением.

Наконец, в Wine 1.2 добавили поддержку OpenAL. Раньше виндовая библиотека openal32.dll и так работала, но теперь добавили библиотеку openal32.dll.so, которая транслирует вызовы в нативную линуксовую библиотеку. Удобненько.

Ну и наконец, добавили поддержку Gstreamer 0.10. У меня таковая ломала звук в Oblivion, поэтому я открывал winecfg, и прописывал библиотеку winegstreamer как disabled.

При подготовке релиза Wine 1.4, переписали звуковую систему. Сделали библиотеку mmdevapi, которая появилась в Windows Vista и 7. И пустили звук dsound и winmm через mmdevapi (кроме midi), как в новых версиях Windows. Случайно при этом отломали аппаратное ускорение звука в dsound (нет, не EAX, а там что-то про аппаратный буфер, не разбираюсь). В winecfg раньше был выбор "Эмуляция" или "Полное", теперь нет.

Также при компилировании Wine 1.4 добавили зависимость от prelink при компиляции. Убрали только в Wine 1.8.

Дальше я не следил настолько пристально. В Wine 1.7 (нестабильная ветка) добавили CSMT - многопоточное Direct3D. Давало до 100% ускорения игр, но не для всех игр. CSMT был экспериментален, и в основной Wine не был включён. Нужно было наложить набор патчей wine-staging.

Ну а последней версией, которая у меня нормально работала, была wine-staging 2.21. Потому что у меня дистр 2009 года, и в связи с этим есть какие-то проблемы. С версии 2.21 я обновился до 3.10, и там создаётся кривой WINEPREFIX, который ждёт чего-то 60 секунд перед запуском любого приложения, а иногда приложения стартуют не с первого раза. А версия 4.0 вообще показывает чёрное окно у любого приложения. Либо вообще не запускается. Хотел зарепортить баги, но было лень. А теперь уже поздно.

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

Оглавление
Выпуск Wine 6.10, opennews, 05-Июн-21, 00:20  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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