123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960 |
- .. ARU (c) 2018 - 2024, Pavel Priluckiy, Vasiliy Stelmachenok and contributors
- ARU is licensed under a
- Creative Commons Attribution-ShareAlike 4.0 International License.
- You should have received a copy of the license along with this
- work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
- .. _linux-gaming:
- ********************
- Wine / Linux Gaming
- ********************
- .. index:: wine, wine-builds, gaming
- .. _main-components:
- =========================
- Основные составляющие
- =========================
- Переходя к запуску Windows-игр на Linux-системах, сто́ит иметь в виду, что
- никаких эмуляторов Windows на Linux не существует, и весь запуск
- осуществляется с помощью открытой реализации Windows API — Wine, а также
- средств ретрансляции команд DirectX в доступные графические API на Linux
- (Vulkan, OpenGL) с помощью DXVK или иных ретранслятора кода.
- .. index:: about, wine, gaming
- .. _about-wine:
- ----------------------
- Что такое Wine?
- ----------------------
- Wine - слой совместимости для запуска Windows-приложений (в том числе игр) из
- под Linux (Unix-подобных систем). Благодаря нему вы по факту сможете поиграть
- в большинство игр из вашей библиотеки Steam/GOG/Epic Games Store. Исключением
- разве что являются игры с встроенными анти-чит системами, хотя благодаря
- усилиям Valve, вероятно, это уже не будет являться такой большой проблемой.
- Конечно, все не так гладко как хотелось бы, ведь для запуска и обеспечения
- работоспособности многих программ/игр придется ещё изрядно повозиться с его
- настройкой, однако сама такая возможность в принципе является незаменимой для
- Linux пользователей, в частности геймеров.
- .. index:: wine-builds, gaming
- .. _wine-builds:
- -------------
- Сборки Wine
- -------------
- Существуют различные сборки Wine. Подобный зоопарк появился ввиду накопления
- большого количества различных патчей (сторонних изменений) которые по какой-то
- причине не могут быть приняты в обычный Wine. Кроме того, стоит понимать что,
- как и в случае с ядрами, обычный Wine это прежде всего свободная реализация
- Windows API, которая подразумевает запуск любых Windows приложений. При этом
- он не заточен конкретно под игры или любой другой софт. Именно поэтому в том
- числе и появились такие вещи как Proton от компании Valve, *являющимся по сути
- тем же Wine*, но с упором именно на игровую составляющую, исправляющий многие
- проблемы обычного Wine связанные с играми.
- На текущий момент есть две официальные "сборки" Wine которые поддерживаются
- непосредственно разработчиками:
- * wine - обычная, стабильная версия, содержащая только проверенные изменения
- от разработчиков, и которая условно универсальна для любых приложений.
- * wine-staging - содержащая те изменение которые пока не могут попасть в
- обычную версию, но которые могут помочь исправить определенные баги и
- улучшить работу конкретных программ и частей Wine.
- Но существуют также много альтернативных сборок основанных на Wine-staging с
- упором именно на игры, о них написано далее.
- .. index:: installation, wine-staging, gaming, dependencies
- .. _wine-staging:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Установка wine-staging вместе с зависимостями
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Бинарные версии ПО всегда доступны в репозиториях и очень удобны, но они не
- могут обеспечить достойный уровень производительности. Для начала советуюм
- поставить wine-staging вместе со всеми зависимостями, а уже затем будем
- собирать различные кастомные сборки.
- ::
- sudo pacman -S wine-staging winetricks wine-mono giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse libgpg-error lib32-libgpg-error alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo sqlite lib32-sqlite libxcomposite lib32-libxcomposite libxinerama lib32-libgcrypt libgcrypt lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader
- .. note:: Если вы не хотите устанавливать себе в систему целый ворох 32-битных
- пакетов, то вы можете собрать кастомную версию Wine с использованием режима
- WoW64, что описано ниже в разделе :ref:`wine-wow64-build`.
- .. index:: installation, wine, wine-builds
- .. _alternative-wine-builds:
- ------------------------------
- Альтернативные сборки Wine
- ------------------------------
- По умолчанию обычные сборки Wine недостаточно хорошо заточены для комфортной
- игры ввиду их универсальности, т.к. это все таки свободная реализация WinAPI и
- она не обязана использоваться только для запуска игр из под Windows в Linux.
- Но существуют также альтернативные сборки Wine, с большим количеством
- различных патчей и улучшений, нацеленных в основном как раз на игры.
- .. index:: installation, wine, wine-builds, wine-tkg, native-compilation
- .. _wine-tkg-git:
- ^^^^^^^^^^^
- WINE-TKG
- ^^^^^^^^^^^
- `WINE-TKG <https://github.com/Frogging-Family/wine-tkg-git>`_ - это, наверное,
- лучшая сборка Wine для опытных пользователей которые хотят улучшить свой опыт
- игры под линуксом. Преимуществом данной сборки перед другими является огромное
- количество вложенных в неё патчей из разных источников (В том числе
- портированных из Proton). Поэтому мы настоятельно рекомендуем её к установке
- если вы хотите получить не только больше производительности, но и
- совместимости с различными Windows играми.
- **Установка**
- ::
- git clone https://github.com/Frogging-Family/wine-tkg-git.git
- cd wine-tkg-git/wine-tkg-git
- По аналогии с linux-tkg, wine-tkg предоставляет возможность предварительно
- настроить себя перед установкой на применение различных патчей и твиков через
- редактирование файла *customization.cfg*::
- nano customization.cfg
- Здесь нас интересует не так много настроек. По сути можете оставлять все
- значения по умолчанию, кроме следующих параметров:
- ``_staging_version="v9.20"`` - Устанавливает желаемую для сборки версию Wine.
- ``_use_ntsync="true"`` - К сожалению, текущие реализации воспроизведения
- работы примитивов синхронизации между потоками приложений для wineserver,
- такие как Esync и Fsync, работают с недостаточной точностью и полностью не
- воссоздают то же поведение, которое есть в Windows, что имеет такие неприятные
- эффекты, как кратковременные и практически незаметные глазу скачки FPS, а
- также проблемы с запуском целого ряда игр и приложений. Чтобы это исправить
- было предложено создать отдельный модуль в ядре Linux, который полностью
- реализует работу примитивов синхронизации Windows с максимальной
- производительностью, называемый ``ntsync`` (ранее известный под названием
- winesync/fastsync). Для Wine были подготовлены патчи, которые заменяют
- встроенную реализацию в wineserver с использованием данного модуля, применение
- которых и активирует данная опция. Обратите внимание, что на данный момент для
- использования NTSync вам нужно установить одно из предложенных ядер в разделе
- :ref:`custom-kernels`, которое содержит модуль ``ntsync``, к примеру
- ``linux-zen`` или ``linux-cachyos``, иначе будет использоваться встроенная
- синхронизация wineserver, которая отличается низкой производительностью в
- многопоточных приложениях Windows запускаемых через Wine. Крайне рекомендуется
- к включению.
- .. warning:: Перед включением ``_use_ntsync="true"`` стоит отключить
- использование патчей для Esync и Fsync так как они конфликтуют с NTSync.
- Для этого нужно изменить значения соответствующих параметров с ``true`` на
- ``false``::
- _use_esync="false"
- _use_fsync="false"
- Также перед сборкой Wine необходимо установить заголовочный файл, описывающий
- полные возможности примитивов NTSync::
- git clone https://aur.archlinux.org/ntsync-header
- cd ntsync-header
- makepkg -si
- ``_launch_with_dedicated_gpu="false"`` - Активирует запуск приложений через
- дискретный графический процессор на ноутбуках с PRIME. Работает только когда
- установлен пакет ``switcheroo-control`` и включена соответствующая служба.
- Если у вас ноутбук, то установите ``true``.
- ``_update_winevulkan="true"`` - Включает свежие обновления библиотеки
- winevulkan. Обязательно оставляйте включенным.
- ``_FS_bypass_compositor="true"`` - Задействует обход композитора приложениями
- запускаемыми через Wine. Очень полезная и нужная опция для исправления проблем
- задержек и заиканий в играх, в случае когда системный композитор пытается
- лишний раз произвести композитинг над окном с игрой запущенной через Wine.
- Обязательно включаем.
- ``_proton_fs_hack="true"`` - Включает еще один очень нужный патч. Вносит
- исправление с помощью которого изменяя разрешение игры в полноэкранном режиме
- у вас не будет изменяться разрешение вашего рабочего стола. Включаем.
- ``_msvcrt_nativebuiltin="true"`` - Делает встроенную реализацию библиотек MS
- VC++ в Wine предпочтительной к использованию. Чинит запуск некоторых игр,
- поэтому желательно включить.
- ``_win10_default="false"`` - Устанавливает в качестве версии по умолчанию
- Windows 10 в Wine. Не рекомендуется к включению в виду того, что это может
- задействовать vkd3d в некоторых играх работающих на DirectX 12, что однако
- ведет к ухудшению производительности по сравнению с DXVK при возможности
- запустить игру с DirectX 11.
- ``_wayland_driver="true"`` - Включает использование нативной поддержки Wayland
- в Wine. Обратите внимание, что работает только для версий Wine 9 и выше.
- Обратите внимание, что поддержка Wayland в Wine на текущий момент реализована
- не полностью и все ещё находится в процессе доработки, однако на текущем этапе
- её развития вы уже можете запускать игры, получая хороший уровень
- производительности. При переключении обратно на использование X сессии Wine
- вернется к использованию классического драйвера ``winex11.drv``. Обратите
- внимание, что даже собрав Wine с данным параметром, поддержка Wayland по
- умолчанию будет выключена, чтобы её задействовать вам нужно будет выполнить
- команду внутри нужно префикса::
- wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Чтобы избежать использования Xwayland по умолчанию нужно будет сбросить
- значение переменной ``DISPLAY``, то есть оставить её без значения перед
- запуском Wine::
- DISPLAY= wine example.exe
- .. attention:: По умолчанию wine-tkg не использует нативные флаги которые мы
- указывали ранее в ``/etc/makepkg.conf``. Их нужно указать вручную
- отредактировав *wine-tkg-profiles/advanced-customization.cfg*::
- nano wine-tkg-profiles/advanced-customization.cfg # Отредактируйте строчки ниже
- _GCC_FLAGS="-O2 -ftree-vectorize -march=native"
- _CROSS_FLAGS="-O2 -ftree-vectorize -march=native"
- На этом все, остальные настройки оставьте по умолчанию.
- Теперь можно перейти к самой сборке и установке wine-tkg: ``makepkg -sric``
- .. index:: installation, proton, gaming, native-compilation
- .. _proton-ge-custom:
- ^^^^^^^^^^^^^^^^^^
- Proton-GE-Custom
- ^^^^^^^^^^^^^^^^^^
- Proton-GE-Custom это форк проекта Proton для запуска Windows-игр с
- дополнительными патчами и оптимизациями не вошедшими в основную ветку Proton,
- а также улучшение совместимости с некоторыми играми (например, Warframe).
- Позволяет играть во многие проекты которые не заводятся с обычным Wine или
- Proton.
- **I. Установка (бинарная версия):**::
- git clone https://aur.archlinux.org/proton-ge-custom-bin
- cd proton-ge-custom-bin
- makepkg -sric
- **II. Установка (компиляция, имеет много зависимостей):**::
- git clone https://aur.archlinux.org/proton-ge-custom
- cd proton-ge-custom
- makepkg -sric
- Дабы использовать Proton-GE в качестве альтернативы обычному Proton, после
- установки Proton-GE-Custom вам нужно перезапустить Steam и зайти в *Свойства*
- нужной вам игры, прожать в: *Совместность -> Принудительно использовать
- определенный инструмент совместности Steam Play -> Proton-9.XX-GE-1*. Готово,
- теперь можно запустить игру.
- .. index:: installation, wine, wow64, nomultilib
- .. _wine-wow64-build:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Сборка Wine-tkg без лишнего мусора
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Должно быть вы заметили, что во время установки wine-staging вместе с ним мы устанавливали
- целую кипу различных 32-битных зависимостей, которые по сути дубликатами
- соответствующих нативных библиотек используемых Wine, но в 32-разрядном
- эквиваленте. Это необходимо, чтобы Wine имел возможность запускать 32-битные Windows
- приложения. Конечно, такой расклад не очень приятен, ведь все эти зависимости
- часто используются только лишь Wine, а все остальные программы уже давно
- отказались от поддержки 32 бит (исключение - Steam). Хорошая новость в том, что с недавних пор Wine
- поддерживает запуск 32-битных приложений без единой лишней библиотеки!
- Новая экспериментальная подсистема WoW64 - это ещё один встроенный транслятор
- Wine, который осуществляет переход нативных библиотечных вызовов из 32 бит в
- 64 бит, сохраняя при этом возможность запуска 32-битных приложений.
- К сожалению, чтобы задействовать новый WoW64 нужно выполнить пересборку Wine с
- включением некоторых дополнительных флагов. Удобно сделать это для Wine-tkg::
- git clone https://github.com/Frogging-Family/wine-tkg-git.git
- cd wine-tkg-git/wine-tkg-git
- nano wine-tkg-profiles/advanced-customization.cfg # Отредактируем строчки ниже
- _NOLIB32="wow64" # Задействуем новый режим
- makepkg -sric # Сборка и установка
- После выставления всех нужных флагов и компиляции вы получите полностью
- 64-битный Wine, на что вам укажет специальная строчка в логах ::
- starting L"Z:\\XXX.exe" in experimental wow64 mode
- .. index:: installation, wine, about, prefixes
- .. _wine-usage:
- --------------------
- Использование Wine
- --------------------
- Использование Wine на деле является довольно простым. Чтобы запустить любое
- Windows-приложение достаточно использовать простую команду::
- wine программа.exe
- .. danger:: НИКОГДА НЕ ЗАПУСКАЕТЕ WINE ИЗ ПОД SUDO/ROOT! Это поможет
- вам избежать проблем в будущем, в том числе с безопасностью.
- Немного иной командой запускаются MSI установщики::
- wine msiexec /i программа.msi
- При использовании Wine важным понятием является префикс (его также называют
- бутылкой). Префикс, это как бы файловая система Windows в миниатюре, а по
- совместительству это рабочая директория, где будут устанавливаться/работать
- все Windows программы которые вы будете запускать из под Wine. Стоит понимать,
- что программы запускаемые через Wine по прежнему будут думать что они работают
- в Windows, хотя на самом деле это не так. Поэтому Wine и понадобилось
- воссоздать файловую структуру каталогов Windows внутри Linux (Unix). Префикс
- по умолчанию - это скрытая директория *~/.wine* в папке вашего пользователя.
- Если вы её откроете то увидите следующее:
- .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image3.png
- Как мы видим, в префиксе находятся файлы с расширением .reg (файлы реестра
- Windows), директории *dosdevices* и *drive_c*. Файлы реестра используются Wine
- для, собственно, воссоздания работы реестра Windows в Linux. К ним также будут
- обращаться программы запускаемые через Wine. Директория *dosdevices* содержит
- символические ссылки на примонтированные устройства (разделы) в вашей системе
- Linux. Это понадобилось для того чтобы представить их в виде MS-DOS томов, ибо
- Windows приложения опять таки не знают что они работают под Linux, и им нужны
- привычные им диски D, E и т.д. Один из таких "виртуальных дисков"
- располагается в другом каталоге - *drive_c* (диск C:). Если вы его откроете то
- увидите "замечательную" структуру каталогов Windows:
- .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image8.png
- Именно сюда и будут устанавливаться все Windows программы и работать они как
- правило тоже будут именно рамках этой директории.
- Вы можете переназначить префикс по умолчанию через переменную окружения
- *WINEPREFIX*, указав Wine использовать другую директорию для его расположения
- вместо *~/.wine*. Например::
- WINEPREFIX=~/Games wine game.exe # Если директории не было, Wine её создаст.
- Учитывайте, что при смене префикса через переменную окружения WINEPREFIX не
- переносится его содержимое, т.е. программы установленные в одном префиксе не
- будут скопированы в новый. Но если вам нужно просто сменить название префикса
- с сохранением его содержимого, то просто переименуете название директории, а
- затем переназначьте переменную, например::
- mv ~/old_wineprefix ~/new_wineprefix
- WINEPREFIX=~/.new_wineprefix wine приложение.exe
- Префиксы бывают 32-битные и 64-битные в соответствии с разрядностью систем
- Windows (по умолчанию создаются 64-битные). Указать разрядность префикса можно
- через переменную *WINEARCH*. Для запуска старых видеоигр мы рекомендуем
- использовать 32-битный префикс во избежание проблем с совместимостью::
- WINEPREFIX=~/.wine32 WINEARCH=win32 wine oldgame.exe
- Если вы уже создали 64-битный префикс, то переназначить его разрядность через
- переменную *WINEARCH* не получится. Создайте новый и перенесите нужную вам
- программу.
- Проверить разрядность уже существующего префикса можно командой (можно также
- проверить по наличию директории *"Program Files (x86)"* внутри префикса)::
- grep '#arch' ~/.wine/system.reg
- (Где '.wine' - путь до нужного вам префикса)
- .. index:: wine, envars, staging, shared_memory, writecopy
- .. _wine_envvars:
- ----------------------------------
- Переменные окружения Wine-Staging
- ----------------------------------
- Набор патчей ``wine-staging`` добавляет некоторые дополнительные переменные
- окружения, которые задействуют дополнительные оптимизации.
- ``STAGING_WRITECOPY=1`` - Wine будет выполнять загрузку одинаковых dll
- библиотек, требуемых приложениям, только один раз за время работы, и создавать
- копию, только при наличии модификаций, что должно значительно снизить
- потребление памяти. Это также больше соответствует оригинальному поведению
- Windows.
- .. warning:: Данная переменная окружения не работает при использовании WoW64:
- https://github.com/Frogging-Family/wine-tkg-git/pull/1282
- Указывать данные переменные следует перед командой запуска Wine или в
- настройках Lutris.
- .. image:: images/wine-envvars.jpg
- .. index:: installation, native-compilation, dxvk, async, lowlatency, gaming
- .. _dxvk:
- -----
- DXVK
- -----
- В Linux отсутствует полноценная реализация DirectX по вполне понятным
- причинам. Но присутствуют альтернативные графические API, работающие под любые
- платформы. Прежде всего это OpenGL и Vulkan. В следствии этого в Wine есть так
- называемый ретранслятор кода - wined3d. Он переводит вызовы DirectX в
- известные любой Linux системе OpenGL вызовы. Однако OpenGL не одно и тоже что
- и DirectX, поэтому возникают множество проблем. Самая главная из которых -
- значительно более худшая производительность OpenGL по сравнению с DirectX.
- Именно поэтому если вы запустите любую игру через "голый" Wine вы получите
- ужасный FPS, т.к. она будет работать с использованием wined3d. По этой причине
- был разработан другой ретранслятор кода - DXVK. Он переводит DirectX вызовы
- уже не в OpenGL, а в Vulkan - более современный графический API, который
- достигает паритета по возможностям и производительности с DirectX.
- Установка DXVK - это первое что должен сделать любой игрок который собирается
- запустить Windows-игру под Linux. Хотя при использовании любой версии Proton
- DXVK уже есть из коробки, для игр запускаемых через обычный Wine его придется
- устанавливать вручную.
- Мы рекомендуем устанавливать `dxvk-mingw-git
- <https://aur.archlinux.org/dxvk-git.git>`_ для лучшей производительности:
- .. warning:: Последние версии DXVK требуют поддержки драйвером вашего GPU
- версии по крайне мере API Vulkan 1.3. Если вы являетесь обладателем
- видеокарты NVIDIA поколения Kepler (Geforce GTX 6xx/7xx), то вы ограничены
- поддержкой Vulkan 1.2, и вам нет смысла устанавливать DXVK по этой
- инструкции. Вместо этого используйте последнюю доступную версию DXVK
- 1.10.3, которую можно выбрать к использованию в настройках Lutris.
- **Установка:**::
- git clone https://aur.archlinux.org/dxvk-git.git
- cd dxvk-git
- makepkg -sric
- После установки пакета DXVK не задействуется сразу, его библиотеки ещё нужно
- "распаковать" по отдельности в каждый префикс Wine (это не относиться к играм
- запускаемым через Lutris/Proton, в них DXVK включён по умолчанию)::
- WINEPREFIX=~/prefix setup_dxvk install # Где "prefix" - это путь до вашего префикса Wine
- .. warning:: DXVK осуществляет ретрансляцию вызовов только для игр
- использующих версии DirectX 8, 9, 10 и 11. Для DirectX 12 для понадобиться
- использовать vkd3d. Подробнее о нем вы можете прочитать ниже.
- .. note:: Начиная с версии 2.0 и выше DXVK компилирует шейдеры заранее, так
- чтобы бы вы не сталкивались с заиканиями непосредственно вовремя игры. К
- сожалению, не во всех играх это работает как следует, к таковым относятся
- некоторые проекты разработанные на движке Unreal Engine. Тем не менее, с
- помощью определенных опций самого движка все же можно позволить DXVK
- собирать шейдеры в фоне во время загрузки игры. Для игр на базе Unreal
- Engine 4/5 нужно отредактировав файл
- ``%LOCALAPPDATA%/game_name/Saved/Config/WindowsNoEditor/Engine.ini`` (путь
- к конфигурационному файлу внутри префикса может отличаться от игры к игре)::
- [/script/engine.renderersettings]
- r.Shaders.Optimize=1
- r.CreateShadersOnLoad=1
- niagara.CreateShadersOnLoad=1
- r.ShaderDevelopmentMode=0
- r.CompileShadersForDevelopment=0
- Аналогично для игр использующих UnrealEngine 3 существует параметр
- ``bInitializeShadersOnDemand=False`` (спасибо @Iglu47 для предоставленную
- информацию).
- .. index:: installation, wine, vkd3d, gaming, native-compilation
- .. _vkd3d:
- -------------
- vkd3d
- -------------
- vkd3d - это ретранслятор кода, аналогичный DXVK, но уже конкретно для версии
- DirectX 12. Стоит отметить, что существует две отдельно разрабатываемые версии
- vkd3d, одна из которых разрабатывается командой Wine, а другая - Valve. Мы
- рекомендуем вам использовать ту что от Valve, т.к. она наиболее заточена под
- современные игры, а также достаточно хорошо поддерживает Raytracing.
- **Установка vkd3d-proton**
- Для Proton и Lutris установка vkd3d задействован по умолчанию, и никаких
- дополнительных манипуляций обычно не требуется. Однако для обычного Wine нужна
- его отдельная установка. Мы установим vkd3d-proton из AUR,
- нативно-скомпилировав его под свой процессор::
- git clone https://aur.archlinux.org/vkd3d-proton-mingw.git # Скачивание исходников
- cd vkd3d-proton-mingw # Переход в директорию
- makepkg -sric # Сборка и установка
- Так же как и в случае с DXVK, после установки пакета, vkd3d нужно
- предварительно распоковать в нужный Wine префикс::
- setup_vkd3d_proton install ~/.wineprefix
- (Где '~/.wineprefix' - это путь до нужного вам префикса)
- .. image:: images/vkd3d-configure.png
- .. index:: wine, dxvk, gaming, about
- .. _wine-references:
- ------------------------------------
- Полезные ссылки по теме Wine и DXVK
- ------------------------------------
- **Скачать готовые сборки Wine и DXVK**
- https://github.com/Kron4ek/Wine-Builds
- https://mirror.cachyos.org/?search=wine
- **Почитать, что это такое**
- https://www.newalive.net/234-sborki-dxvk-i-d9vk.html
- https://www.newalive.net/231-wine-tk-glitch.html
- .. index:: gamemode, lutris, gaming
- .. _additional-components:
- =================================
- Дополнительные компоненты
- =================================
- Не являются обязательными, но могут помочь повысить производительность системы
- или облегчить настройку.
- .. index:: installation, gamemode, lutris, gaming
- .. _lutris-and-additions:
- --------
- Lutris
- --------
- Lutris - это удобный графический интерфейс по обслуживанию всей вашей игровой
- библиотеки (включая все купленные игры Steam/GOG/Epic Games) в одном
- приложении. Через него вы сможете достаточно просто запускать нативные игры,
- игры запускаемые при помощи эмуляторов, и конечно Wine. Все это объединено в
- одном приложении-комбайне, содержащим много настроек и интеграций с различными
- сервисами.
- **Установка**
- Все проще некуда::
- sudo pacman -S lutris
- Тем не менее, стоит удостовериться что вы установили полный набор зависимостей
- для Wine. Об этом вы можете прочитать в предыдущих разделах.
- .. image:: images/lutris.png
- **Интеграция с GOG/Epic/Steam**
- Сразу после установки стоит сделать некоторые базовые вещи. А именно подключить
- интеграцию с сервисами Steam/GOG/Epic Games. Это позволит синхронизировать
- локальную библиотеку Lutris'a вместе с перечисленными площадками и выполнять
- установку игр в два клика. Подключать все конечно не обязательно, так что
- делайте это если считаете нужным.
- **1.** Зайдем в настройки: В правом верхнем углу найдите три горизонтальные
- полоски и в контекстном меню выберите *"Preferences"*. После этого выберите
- *"Services"* и включите те сервисы, которыми вы пользуетесь.
- **1.1**
- .. image:: images/lutris-context-menu.png
- **1.2**
- .. image:: images/lutris-preferences.png
- **2.** Теперь вернитесь в главное окно и наведите курсор на левую панель в
- графу *"Sources"*, и ниже выбирите нужную вам платформу. Справа от курсора
- будет иконка входа. После этого перед вами появится окно авторизации, после
- прохождения которой у вас появится возможность устанавливать и запускать все
- игры из вашей внешней библиотеки (Steam/GOG/Epic Games).
- Пример подключения аккаунта GOG представлен ниже на скриншотах.
- **2.1**
- .. image:: images/lutris-auth-icon.png
- **2.2**
- .. image:: images/lutris-gog-auth.png
- **2.3**
- .. image:: images/lutris-gog-library.png
- Аналогичная операция проделывается с Epic Games Store:
- **2.4**
- .. image:: images/lutris-auth-epic-icon.png
- **2.5**
- .. image:: images/lutris-epic-auth.png
- **2.6**
- .. image:: images/lutris-epic-library.png
- .. index:: installation, gamemode, gaming, lutris
- .. _gamemode:
- --------------
- Gamemode
- --------------
- Gamemode - утилита для максимальной выжимки системы во время игры. Установку
- gamemode можно выполнить следующей командой::
- sudo pacman -S gamemode lib32-gamemode
- Lutris, как правило использует gamemode по умолчанию (в случае его наличия в
- системе), однако вы также можете активировать или деактивировать его в
- параметрах.
- Для запуска игры в ручную с использованием gamemode необходимо выполнить
- команду::
- gamemoderun ./game
- Для запуска игр через Steam с использованием gamemode необходимо прописать
- команду в параметрах запуска игры (находятся в свойствах игры в Steam)::
- gamemoderun %command%
- Из коробки gamemode применяет не так много оптимизаций, поэтому есть смысл
- включить использование некоторых параметров, которые отключены по умолчанию.
- Задействовать их можно создав конфиг для gamemode (комментарии сопровождаются
- символом ``;`` в начале)::
- mkdir -p ~/.config/gamemode
- nano ~/.config/gamemode/gamemode.ini # Пропишите следующее строчки
- [general]
- ; Повышает приоритет игры до максимума
- renice=19
- ; Отключает раздельные блокировки шины памяти.
- ; Одна инструкция с раздельной блокировкой может занимать шину
- ; памяти в течение примерно 1 000 тактов, что может приводить к
- ; кратковременным зависаниям системы в таких играх как God of War.
- disable_splitlock=1
- ; Устанавливает режим работы процессора на максимальную производительность
- desiredgov=performance
- [gpu]
- ; Установит профиль вашей видеокарты NVIDIA на максимальную
- ; производительность на время игры.
- nv_powermizer_mode=1
- ; Аналогично для AMD. Не забывайте следить за температурой вашего GPU!
- amd_performance_level=high
-
- .. warning:: Ananicy/Ananicy-cpp и gamemode конфликтуют - не используйте их вместе!
- .. index:: nvidia, dlss, proton, image-scaling, gaming
- .. _nvidia-dlss-with-proton:
- -------------------------------------------------------
- Использование DLSS с видеокартами NVIDIA через Proton
- -------------------------------------------------------
- Для того чтобы использовать DLSS вам потребуется:
- * Видеокарта поддерживающая данную технологию (видеокарты серии RTX и выше).
- * Убедиться, что используемая версия Proton не ниже **6.3-8**! (**поддержка
- DLSS начинается с данной версии!**)
- * Указать параметры запуска игры в свойствах игры Steam
- ``PROTON_HIDE_NVIDIA_GPU=0 PROTON_ENABLE_NVAPI=1``
- * Некоторые игры, как правило, которые используют DX11, для корректной работы
- могут также потребовать включения *dxgi.nvapiHack = False* в *dxvk.conf.* Для
- этого выполните инструкции ниже::
- mkdir -p ~/.config/dxvk/dxvk.conf
- echo "dxgi.nvapiHack = False" > ~/.config/dxvk/dxvk.conf
- После этого не забудьте дописать *DXVK_CONFIG_FILE=~/.config/dxvk/dxvk.conf*
- в приведённом ниже примере перед ``%command%``.
- Пример для использования в Steam::
- PROTON_HIDE_NVIDIA_GPU=0 PROTON_ENABLE_NVAPI=1 %command%
- .. attention:: Поскольку для DLSS необходимо специальное машинное обучение, то
- для запуска необходимо чтобы игра поддерживала DLSS, т.е. в настройках игры
- должен быть параметр включения данной функции. **Иначе DLSS работать не
- будет!**
- .. index:: gamescope, fps, installation
- .. _gamescope:
- ----------
- Gamescope
- ----------
- Gamescope - это сессионный композитор, используемый для повышения
- производительности в играх. По сути, он запускает отдельный менеджер
- окон специально для вашей игры поверх текущего графического окружения.
- Преимуществом Gamescope являтся снижение задержек во время игры и
- возможность произвольно изменять собственное разрешение окна и
- разрешение экрана для игры, при этом не меняя исходное разрешение
- вашего рабочего окружения. У gamescope также есть встроенная поддержка
- технологий FSR и NVIDIA Image Scaling.
- **Установка** ::
- sudo pacman -S gamescope
- **Использование**
- Прямо перед командой запуска игры (gamescope работает как для Wine,
- так и для нативных игр) добавьте команду ``gamescope``.
- Чтобы изменить разрешение в котором будет работать gamescope
- используйте параметры ``-W`` и ``-H`` для ширины и высоты
- соотвественно. Аналогичные параметры есть для указания ширины и высоты
- окна с игрой ``-w`` и ``-h``.
- Используйте параметр ``-F`` с аргументами ``fsr`` или ``nis`` для
- задействования технологий AMD FSR и NVIDIA Image Scaling
- соотвественно.
- Для достижения растягивающего масштабирования используйте ``-S stretch``.
- Например при запуске CS2 с параметрами
- ``gamescope -f -w 2048 -h 1536 -W 3440 -H 1440 -r 165 -S stretch --``
- получаем картинку 4:3 без черных полос по бокам. ``-r`` отвечает за герцовку.
- .. warning:: Для правильной работы с закрытым драйвером NVIDIA на последних
- версиях требуется бета версия Vulkan драйвера 535.43.20.
- .. warning:: Если Gamescope не выводит изображение на видеокартах AMD,
- используйте переменую окружения ``RADV_DEBUG=nodcc`` или
- ``R600_DEBUG=nodcc``.
- .. index:: setup, gamescope, tty, latency
- .. _tty_gamescope:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Запуск gamescope в отдельном tty
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Как следует из данного определения, gamescope является сессионным
- композитором. Это также означает, что он может быть запущен как часть уже
- запущенной графической сессии (т. е. внутри графического окружения), так и сам
- представлять собой независимую графическую сессию. Для того, чтобы gamescope
- смог стать автономным композитором необходимо запустить его в отдельном tty,
- т.е. вне другой графической среды. По сути такой прием аналогичен запуску
- отдельного X сервера, но в случае с gamescope это позволяет ему получить
- некоторые дополнительные возможности, которые нельзя получить при запуске из
- под графической среды если она сама их не поддерживает (например в случае с
- GNOME):
- - Поддержка VRR (при указании опции ``--adaptive-sync``)
- - Поддержка прямого отображения кадров минуя дополнительные этапы обработки,
- что значительно уменьшает задержки ввода (при указании
- ``--immediate-flips``)
- Для того чтобы запустить gamescope в таком режиме вам нужно перейти в
- отдельный, незанятый другой графической сессией, tty, например tty3, при
- помощи сочетания клавиш ``Ctrl+Alt+F3`` (последняя цифра указывает номер TTY).
- После этого перед вами появится приглашение для ввода логина и пароля от
- вашего пользователя. Если авторизация прошла успешно, то перед вами появится
- приглашение вашей системной оболочки. В ней вы должны запустить gamescope
- вместе с указанием приложения, которое вы хотите использовать внутри сессии
- gamescope. Например::
- gamescope -W 1920 -H 1080 -e -f --xwayland-count 2 --immediate-flips -r 144 -O HDMI-0 -- wine ~/Games/game.exe
- Ключи ``-W`` и ``-H`` указывают ширину и высоту выбранного ключом ``-O``
- вывода соответственно, а ключ ``-r`` указывает частоту развертки. После ``--``
- идет команда запуска приложения, которое вы хотите запустить внутри gamescope.
- Обратите внимание, что вы так же можете запустить клиент Steam внутри
- gamescope, и все запускаемые вами игры тоже будут работать внутри этой сессии.
- Специально для Steam также нужно экспортировать переменную окружения (указать
- перед командой gamescope) ``STEAM_MULTIPLE_XWAYLANDS=1`` для того чтобы можно
- было использовать Steam одновременно с вашей обычной графической сессией
- (возврат на которую осуществляется при помощи сочетания клавиш
- ``Ctrl+Alt+F1``) и gamescope сессией на другом tty.
- .. index:: fps, monitoring, mangohud, dxvk
- .. _fps_monitoring:
- ------------------------------
- Мониторинг FPS в играх.
- ------------------------------
- .. index:: installation, fps, monitoring, mangohud
- .. _mangohud:
- ^^^^^^^^^^^^^
- Mangohud
- ^^^^^^^^^^^^^
- Включение мониторинга в играх как в MSI Afterburner.
- .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image9.png
- :align: center
- **Установка** ::
- sudo pacman -S lib32-mangohud mangohud
- Графический помощник для настройки вашего MangoHud. ::
- sudo pacman -S goverlay
- Для использования mangohud в играх через Steam необходимо добавить команду в
- параметры запуска игры (находятся в свойствах игры Steam)::
- mangohud %command%
- (Для указания нескольких команд необходимо разделять их **пробелом**)
- .. index:: installation, fps, monitoring, dxvk
- .. _dxvk-hud:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Альтернатива: DXVK Hud (*Только для игр запускаемых через Wine/Proton*)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Вы также можете использовать встроенную в DXVK альтернативу для мониторинга -
- DXVK Hud. Он не такой гибкий как MangoHud, но также способен выводить значения
- FPS, график времени кадра, нагрузку на GPU. Использовать данный HUD можно задав
- переменную окружения *DXVK_HUD*. К примеру, ``DXVK_HUD=fps,frametimes,gpuload``
- выводит информацию о FPS, времени кадра, и нагрузке на GPU.
- Полный список значений переменной вы можете узнать - `здесь
- <https://github.com/doitsujin/dxvk#hud>`__.
- .. index:: installation, xpad, xpadneo, xone, gamepad, usb, bluetooth
- .. _gamepad_setup:
- -------------------------
- Настройка геймпадов Xbox
- -------------------------
- .. index:: xpad, usb, gamepad
- .. _xpad_setup:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Настройка стандартного xpad
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- К сожалению далеко не все Xbox-совместимые геймпады распознаются встроенным
- драйвером Xpad при подключении посредством USB, поэтому приходится явно
- указывать его использование для данных устройств. Делается это при помощи
- правил Udev (менеджера устройств в Linux). Но перед их написанием нужно
- определить ID вендора и самого устройства. Это можно сделать через команду
- ``lsusb`` (если у вас её нет, то установите пакет ``usbutils``)::
- lsusb
- После вы получите информацию о всех подключенных USB устройствах системе. Нас
- интересует два числа разделяемых двоеточием, это и будет ID производителя и
- самого устройства (в примере ниже это ``11c1`` и ``2001`` соответственно). ::
- ...
- Bus 001 Device 002: ID 11c1:2001 Controller
- ...
- После этого создадим правило udev с произвольным именем файла:
- .. code-block:: shell
- :caption: ``sudo nano /etc/udev/rules.d/10-xbox-gamepad.rules``
- # Generic xbox controller
- ACTION=="add", ATTRS{idVendor}=="11c1", ATTRS{idProduct}=="2001", \
- RUN+="/sbin/modprobe xpad", \
- RUN+="/bin/sh -c 'echo %s{idVendor} %s{idProduct} > /sys/bus/usb/drivers/xpad/new_id'"
- В аттрибуты ``idVendor`` и ``idProduct`` мы указываем полученные значения из команды
- lsusb (не забудьте про кавычки!).
- Теперь нам нужно загрузить новые правила через следующую команду::
- sudo udevadm control --reload-rules
- Переподключите ваш геймпад к компьютеру и он должен стать доступным для
- использования (проверить можно через наличие файла ``/dev/input/js0``).
- .. index:: installation, gamepad, xone, usb
- .. _xone-dkms:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Альтернативный драйвер - Xone
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Драйвер xpad внутри ядра имеет весьма ограниченную поддержку геймпадов
- подключаемых через USB, но имеется также сторонний драйвер - Xone, не входящий
- в основную линию разработки. Xone нацелен в основном на поддержку контроллеров
- Xbox One/Xbox One Series S/Xbox One Series X и позволяет по сравнению с
- обычным драйвером xpad в ядре управлять подсветкой геймпада, обрабатывать
- аудио вывод подключенной к геймпаду гарнитуры, а также имеет полноценное
- управление питанием.
- **Установка** ::
- git clone https://aur.archlinux.org/xone-dkms
- cd xone-dkms
- makepkg -sric
- .. index:: installation, gamepad, xpadneo, dkms, bluetooth
- .. _xpadneo-dkms-git:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Драйвер xpadneo с поддержкой Bluetooth
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- И драйвер xpad, и драйвер xone не поддерживают работу с геймпадами,
- работающими через Bluetooth. Xpadneo - это новый драйвер для поддержки работы
- всех последних контроллеров от Microsoft, например таких как контроллер
- Microsoft Xbox One S, и их клонов, подключаемых через Bluetooth.
- Среди преимуществ драйвера следует отметить следующее:
- - Поддержка Trigger Force Feedback (чего даже нет в Microsoft Windows)
- - Поддержка подключения более одного контроллера
- - Поддержка индекации уровня заряда
- Полный список возможностей драйвера можно увидеть `здесь
- <https://github.com/atar-axis/xpadneo#advantages-of-this-driver>`__.
- **Установка** ::
- git clone https://aur.archlinux.org/xpadneo-dkms
- cd xpadneo-dkms
- makepkg -sric
- .. vim:set textwidth=78:
|