linux-gaming.rst 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960
  1. .. ARU (c) 2018 - 2024, Pavel Priluckiy, Vasiliy Stelmachenok and contributors
  2. ARU is licensed under a
  3. Creative Commons Attribution-ShareAlike 4.0 International License.
  4. You should have received a copy of the license along with this
  5. work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
  6. .. _linux-gaming:
  7. ********************
  8. Wine / Linux Gaming
  9. ********************
  10. .. index:: wine, wine-builds, gaming
  11. .. _main-components:
  12. =========================
  13. Основные составляющие
  14. =========================
  15. Переходя к запуску Windows-игр на Linux-системах, сто́ит иметь в виду, что
  16. никаких эмуляторов Windows на Linux не существует, и весь запуск
  17. осуществляется с помощью открытой реализации Windows API — Wine, а также
  18. средств ретрансляции команд DirectX в доступные графические API на Linux
  19. (Vulkan, OpenGL) с помощью DXVK или иных ретранслятора кода.
  20. .. index:: about, wine, gaming
  21. .. _about-wine:
  22. ----------------------
  23. Что такое Wine?
  24. ----------------------
  25. Wine - слой совместимости для запуска Windows-приложений (в том числе игр) из
  26. под Linux (Unix-подобных систем). Благодаря нему вы по факту сможете поиграть
  27. в большинство игр из вашей библиотеки Steam/GOG/Epic Games Store. Исключением
  28. разве что являются игры с встроенными анти-чит системами, хотя благодаря
  29. усилиям Valve, вероятно, это уже не будет являться такой большой проблемой.
  30. Конечно, все не так гладко как хотелось бы, ведь для запуска и обеспечения
  31. работоспособности многих программ/игр придется ещё изрядно повозиться с его
  32. настройкой, однако сама такая возможность в принципе является незаменимой для
  33. Linux пользователей, в частности геймеров.
  34. .. index:: wine-builds, gaming
  35. .. _wine-builds:
  36. -------------
  37. Сборки Wine
  38. -------------
  39. Существуют различные сборки Wine. Подобный зоопарк появился ввиду накопления
  40. большого количества различных патчей (сторонних изменений) которые по какой-то
  41. причине не могут быть приняты в обычный Wine. Кроме того, стоит понимать что,
  42. как и в случае с ядрами, обычный Wine это прежде всего свободная реализация
  43. Windows API, которая подразумевает запуск любых Windows приложений. При этом
  44. он не заточен конкретно под игры или любой другой софт. Именно поэтому в том
  45. числе и появились такие вещи как Proton от компании Valve, *являющимся по сути
  46. тем же Wine*, но с упором именно на игровую составляющую, исправляющий многие
  47. проблемы обычного Wine связанные с играми.
  48. На текущий момент есть две официальные "сборки" Wine которые поддерживаются
  49. непосредственно разработчиками:
  50. * wine - обычная, стабильная версия, содержащая только проверенные изменения
  51. от разработчиков, и которая условно универсальна для любых приложений.
  52. * wine-staging - содержащая те изменение которые пока не могут попасть в
  53. обычную версию, но которые могут помочь исправить определенные баги и
  54. улучшить работу конкретных программ и частей Wine.
  55. Но существуют также много альтернативных сборок основанных на Wine-staging с
  56. упором именно на игры, о них написано далее.
  57. .. index:: installation, wine-staging, gaming, dependencies
  58. .. _wine-staging:
  59. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  60. Установка wine-staging вместе с зависимостями
  61. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  62. Бинарные версии ПО всегда доступны в репозиториях и очень удобны, но они не
  63. могут обеспечить достойный уровень производительности. Для начала советуюм
  64. поставить wine-staging вместе со всеми зависимостями, а уже затем будем
  65. собирать различные кастомные сборки.
  66. ::
  67. 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
  68. .. note:: Если вы не хотите устанавливать себе в систему целый ворох 32-битных
  69. пакетов, то вы можете собрать кастомную версию Wine с использованием режима
  70. WoW64, что описано ниже в разделе :ref:`wine-wow64-build`.
  71. .. index:: installation, wine, wine-builds
  72. .. _alternative-wine-builds:
  73. ------------------------------
  74. Альтернативные сборки Wine
  75. ------------------------------
  76. По умолчанию обычные сборки Wine недостаточно хорошо заточены для комфортной
  77. игры ввиду их универсальности, т.к. это все таки свободная реализация WinAPI и
  78. она не обязана использоваться только для запуска игр из под Windows в Linux.
  79. Но существуют также альтернативные сборки Wine, с большим количеством
  80. различных патчей и улучшений, нацеленных в основном как раз на игры.
  81. .. index:: installation, wine, wine-builds, wine-tkg, native-compilation
  82. .. _wine-tkg-git:
  83. ^^^^^^^^^^^
  84. WINE-TKG
  85. ^^^^^^^^^^^
  86. `WINE-TKG <https://github.com/Frogging-Family/wine-tkg-git>`_ - это, наверное,
  87. лучшая сборка Wine для опытных пользователей которые хотят улучшить свой опыт
  88. игры под линуксом. Преимуществом данной сборки перед другими является огромное
  89. количество вложенных в неё патчей из разных источников (В том числе
  90. портированных из Proton). Поэтому мы настоятельно рекомендуем её к установке
  91. если вы хотите получить не только больше производительности, но и
  92. совместимости с различными Windows играми.
  93. **Установка**
  94. ::
  95. git clone https://github.com/Frogging-Family/wine-tkg-git.git
  96. cd wine-tkg-git/wine-tkg-git
  97. По аналогии с linux-tkg, wine-tkg предоставляет возможность предварительно
  98. настроить себя перед установкой на применение различных патчей и твиков через
  99. редактирование файла *customization.cfg*::
  100. nano customization.cfg
  101. Здесь нас интересует не так много настроек. По сути можете оставлять все
  102. значения по умолчанию, кроме следующих параметров:
  103. ``_staging_version="v9.20"`` - Устанавливает желаемую для сборки версию Wine.
  104. ``_use_ntsync="true"`` - К сожалению, текущие реализации воспроизведения
  105. работы примитивов синхронизации между потоками приложений для wineserver,
  106. такие как Esync и Fsync, работают с недостаточной точностью и полностью не
  107. воссоздают то же поведение, которое есть в Windows, что имеет такие неприятные
  108. эффекты, как кратковременные и практически незаметные глазу скачки FPS, а
  109. также проблемы с запуском целого ряда игр и приложений. Чтобы это исправить
  110. было предложено создать отдельный модуль в ядре Linux, который полностью
  111. реализует работу примитивов синхронизации Windows с максимальной
  112. производительностью, называемый ``ntsync`` (ранее известный под названием
  113. winesync/fastsync). Для Wine были подготовлены патчи, которые заменяют
  114. встроенную реализацию в wineserver с использованием данного модуля, применение
  115. которых и активирует данная опция. Обратите внимание, что на данный момент для
  116. использования NTSync вам нужно установить одно из предложенных ядер в разделе
  117. :ref:`custom-kernels`, которое содержит модуль ``ntsync``, к примеру
  118. ``linux-zen`` или ``linux-cachyos``, иначе будет использоваться встроенная
  119. синхронизация wineserver, которая отличается низкой производительностью в
  120. многопоточных приложениях Windows запускаемых через Wine. Крайне рекомендуется
  121. к включению.
  122. .. warning:: Перед включением ``_use_ntsync="true"`` стоит отключить
  123. использование патчей для Esync и Fsync так как они конфликтуют с NTSync.
  124. Для этого нужно изменить значения соответствующих параметров с ``true`` на
  125. ``false``::
  126. _use_esync="false"
  127. _use_fsync="false"
  128. Также перед сборкой Wine необходимо установить заголовочный файл, описывающий
  129. полные возможности примитивов NTSync::
  130. git clone https://aur.archlinux.org/ntsync-header
  131. cd ntsync-header
  132. makepkg -si
  133. ``_launch_with_dedicated_gpu="false"`` - Активирует запуск приложений через
  134. дискретный графический процессор на ноутбуках с PRIME. Работает только когда
  135. установлен пакет ``switcheroo-control`` и включена соответствующая служба.
  136. Если у вас ноутбук, то установите ``true``.
  137. ``_update_winevulkan="true"`` - Включает свежие обновления библиотеки
  138. winevulkan. Обязательно оставляйте включенным.
  139. ``_FS_bypass_compositor="true"`` - Задействует обход композитора приложениями
  140. запускаемыми через Wine. Очень полезная и нужная опция для исправления проблем
  141. задержек и заиканий в играх, в случае когда системный композитор пытается
  142. лишний раз произвести композитинг над окном с игрой запущенной через Wine.
  143. Обязательно включаем.
  144. ``_proton_fs_hack="true"`` - Включает еще один очень нужный патч. Вносит
  145. исправление с помощью которого изменяя разрешение игры в полноэкранном режиме
  146. у вас не будет изменяться разрешение вашего рабочего стола. Включаем.
  147. ``_msvcrt_nativebuiltin="true"`` - Делает встроенную реализацию библиотек MS
  148. VC++ в Wine предпочтительной к использованию. Чинит запуск некоторых игр,
  149. поэтому желательно включить.
  150. ``_win10_default="false"`` - Устанавливает в качестве версии по умолчанию
  151. Windows 10 в Wine. Не рекомендуется к включению в виду того, что это может
  152. задействовать vkd3d в некоторых играх работающих на DirectX 12, что однако
  153. ведет к ухудшению производительности по сравнению с DXVK при возможности
  154. запустить игру с DirectX 11.
  155. ``_wayland_driver="true"`` - Включает использование нативной поддержки Wayland
  156. в Wine. Обратите внимание, что работает только для версий Wine 9 и выше.
  157. Обратите внимание, что поддержка Wayland в Wine на текущий момент реализована
  158. не полностью и все ещё находится в процессе доработки, однако на текущем этапе
  159. её развития вы уже можете запускать игры, получая хороший уровень
  160. производительности. При переключении обратно на использование X сессии Wine
  161. вернется к использованию классического драйвера ``winex11.drv``. Обратите
  162. внимание, что даже собрав Wine с данным параметром, поддержка Wayland по
  163. умолчанию будет выключена, чтобы её задействовать вам нужно будет выполнить
  164. команду внутри нужно префикса::
  165. wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
  166. Чтобы избежать использования Xwayland по умолчанию нужно будет сбросить
  167. значение переменной ``DISPLAY``, то есть оставить её без значения перед
  168. запуском Wine::
  169. DISPLAY= wine example.exe
  170. .. attention:: По умолчанию wine-tkg не использует нативные флаги которые мы
  171. указывали ранее в ``/etc/makepkg.conf``. Их нужно указать вручную
  172. отредактировав *wine-tkg-profiles/advanced-customization.cfg*::
  173. nano wine-tkg-profiles/advanced-customization.cfg # Отредактируйте строчки ниже
  174. _GCC_FLAGS="-O2 -ftree-vectorize -march=native"
  175. _CROSS_FLAGS="-O2 -ftree-vectorize -march=native"
  176. На этом все, остальные настройки оставьте по умолчанию.
  177. Теперь можно перейти к самой сборке и установке wine-tkg: ``makepkg -sric``
  178. .. index:: installation, proton, gaming, native-compilation
  179. .. _proton-ge-custom:
  180. ^^^^^^^^^^^^^^^^^^
  181. Proton-GE-Custom
  182. ^^^^^^^^^^^^^^^^^^
  183. Proton-GE-Custom это форк проекта Proton для запуска Windows-игр с
  184. дополнительными патчами и оптимизациями не вошедшими в основную ветку Proton,
  185. а также улучшение совместимости с некоторыми играми (например, Warframe).
  186. Позволяет играть во многие проекты которые не заводятся с обычным Wine или
  187. Proton.
  188. **I. Установка (бинарная версия):**::
  189. git clone https://aur.archlinux.org/proton-ge-custom-bin
  190. cd proton-ge-custom-bin
  191. makepkg -sric
  192. **II. Установка (компиляция, имеет много зависимостей):**::
  193. git clone https://aur.archlinux.org/proton-ge-custom
  194. cd proton-ge-custom
  195. makepkg -sric
  196. Дабы использовать Proton-GE в качестве альтернативы обычному Proton, после
  197. установки Proton-GE-Custom вам нужно перезапустить Steam и зайти в *Свойства*
  198. нужной вам игры, прожать в: *Совместность -> Принудительно использовать
  199. определенный инструмент совместности Steam Play -> Proton-9.XX-GE-1*. Готово,
  200. теперь можно запустить игру.
  201. .. index:: installation, wine, wow64, nomultilib
  202. .. _wine-wow64-build:
  203. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  204. Сборка Wine-tkg без лишнего мусора
  205. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  206. Должно быть вы заметили, что во время установки wine-staging вместе с ним мы устанавливали
  207. целую кипу различных 32-битных зависимостей, которые по сути дубликатами
  208. соответствующих нативных библиотек используемых Wine, но в 32-разрядном
  209. эквиваленте. Это необходимо, чтобы Wine имел возможность запускать 32-битные Windows
  210. приложения. Конечно, такой расклад не очень приятен, ведь все эти зависимости
  211. часто используются только лишь Wine, а все остальные программы уже давно
  212. отказались от поддержки 32 бит (исключение - Steam). Хорошая новость в том, что с недавних пор Wine
  213. поддерживает запуск 32-битных приложений без единой лишней библиотеки!
  214. Новая экспериментальная подсистема WoW64 - это ещё один встроенный транслятор
  215. Wine, который осуществляет переход нативных библиотечных вызовов из 32 бит в
  216. 64 бит, сохраняя при этом возможность запуска 32-битных приложений.
  217. К сожалению, чтобы задействовать новый WoW64 нужно выполнить пересборку Wine с
  218. включением некоторых дополнительных флагов. Удобно сделать это для Wine-tkg::
  219. git clone https://github.com/Frogging-Family/wine-tkg-git.git
  220. cd wine-tkg-git/wine-tkg-git
  221. nano wine-tkg-profiles/advanced-customization.cfg # Отредактируем строчки ниже
  222. _NOLIB32="wow64" # Задействуем новый режим
  223. makepkg -sric # Сборка и установка
  224. После выставления всех нужных флагов и компиляции вы получите полностью
  225. 64-битный Wine, на что вам укажет специальная строчка в логах ::
  226. starting L"Z:\\XXX.exe" in experimental wow64 mode
  227. .. index:: installation, wine, about, prefixes
  228. .. _wine-usage:
  229. --------------------
  230. Использование Wine
  231. --------------------
  232. Использование Wine на деле является довольно простым. Чтобы запустить любое
  233. Windows-приложение достаточно использовать простую команду::
  234. wine программа.exe
  235. .. danger:: НИКОГДА НЕ ЗАПУСКАЕТЕ WINE ИЗ ПОД SUDO/ROOT! Это поможет
  236. вам избежать проблем в будущем, в том числе с безопасностью.
  237. Немного иной командой запускаются MSI установщики::
  238. wine msiexec /i программа.msi
  239. При использовании Wine важным понятием является префикс (его также называют
  240. бутылкой). Префикс, это как бы файловая система Windows в миниатюре, а по
  241. совместительству это рабочая директория, где будут устанавливаться/работать
  242. все Windows программы которые вы будете запускать из под Wine. Стоит понимать,
  243. что программы запускаемые через Wine по прежнему будут думать что они работают
  244. в Windows, хотя на самом деле это не так. Поэтому Wine и понадобилось
  245. воссоздать файловую структуру каталогов Windows внутри Linux (Unix). Префикс
  246. по умолчанию - это скрытая директория *~/.wine* в папке вашего пользователя.
  247. Если вы её откроете то увидите следующее:
  248. .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image3.png
  249. Как мы видим, в префиксе находятся файлы с расширением .reg (файлы реестра
  250. Windows), директории *dosdevices* и *drive_c*. Файлы реестра используются Wine
  251. для, собственно, воссоздания работы реестра Windows в Linux. К ним также будут
  252. обращаться программы запускаемые через Wine. Директория *dosdevices* содержит
  253. символические ссылки на примонтированные устройства (разделы) в вашей системе
  254. Linux. Это понадобилось для того чтобы представить их в виде MS-DOS томов, ибо
  255. Windows приложения опять таки не знают что они работают под Linux, и им нужны
  256. привычные им диски D, E и т.д. Один из таких "виртуальных дисков"
  257. располагается в другом каталоге - *drive_c* (диск C:). Если вы его откроете то
  258. увидите "замечательную" структуру каталогов Windows:
  259. .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image8.png
  260. Именно сюда и будут устанавливаться все Windows программы и работать они как
  261. правило тоже будут именно рамках этой директории.
  262. Вы можете переназначить префикс по умолчанию через переменную окружения
  263. *WINEPREFIX*, указав Wine использовать другую директорию для его расположения
  264. вместо *~/.wine*. Например::
  265. WINEPREFIX=~/Games wine game.exe # Если директории не было, Wine её создаст.
  266. Учитывайте, что при смене префикса через переменную окружения WINEPREFIX не
  267. переносится его содержимое, т.е. программы установленные в одном префиксе не
  268. будут скопированы в новый. Но если вам нужно просто сменить название префикса
  269. с сохранением его содержимого, то просто переименуете название директории, а
  270. затем переназначьте переменную, например::
  271. mv ~/old_wineprefix ~/new_wineprefix
  272. WINEPREFIX=~/.new_wineprefix wine приложение.exe
  273. Префиксы бывают 32-битные и 64-битные в соответствии с разрядностью систем
  274. Windows (по умолчанию создаются 64-битные). Указать разрядность префикса можно
  275. через переменную *WINEARCH*. Для запуска старых видеоигр мы рекомендуем
  276. использовать 32-битный префикс во избежание проблем с совместимостью::
  277. WINEPREFIX=~/.wine32 WINEARCH=win32 wine oldgame.exe
  278. Если вы уже создали 64-битный префикс, то переназначить его разрядность через
  279. переменную *WINEARCH* не получится. Создайте новый и перенесите нужную вам
  280. программу.
  281. Проверить разрядность уже существующего префикса можно командой (можно также
  282. проверить по наличию директории *"Program Files (x86)"* внутри префикса)::
  283. grep '#arch' ~/.wine/system.reg
  284. (Где '.wine' - путь до нужного вам префикса)
  285. .. index:: wine, envars, staging, shared_memory, writecopy
  286. .. _wine_envvars:
  287. ----------------------------------
  288. Переменные окружения Wine-Staging
  289. ----------------------------------
  290. Набор патчей ``wine-staging`` добавляет некоторые дополнительные переменные
  291. окружения, которые задействуют дополнительные оптимизации.
  292. ``STAGING_WRITECOPY=1`` - Wine будет выполнять загрузку одинаковых dll
  293. библиотек, требуемых приложениям, только один раз за время работы, и создавать
  294. копию, только при наличии модификаций, что должно значительно снизить
  295. потребление памяти. Это также больше соответствует оригинальному поведению
  296. Windows.
  297. .. warning:: Данная переменная окружения не работает при использовании WoW64:
  298. https://github.com/Frogging-Family/wine-tkg-git/pull/1282
  299. Указывать данные переменные следует перед командой запуска Wine или в
  300. настройках Lutris.
  301. .. image:: images/wine-envvars.jpg
  302. .. index:: installation, native-compilation, dxvk, async, lowlatency, gaming
  303. .. _dxvk:
  304. -----
  305. DXVK
  306. -----
  307. В Linux отсутствует полноценная реализация DirectX по вполне понятным
  308. причинам. Но присутствуют альтернативные графические API, работающие под любые
  309. платформы. Прежде всего это OpenGL и Vulkan. В следствии этого в Wine есть так
  310. называемый ретранслятор кода - wined3d. Он переводит вызовы DirectX в
  311. известные любой Linux системе OpenGL вызовы. Однако OpenGL не одно и тоже что
  312. и DirectX, поэтому возникают множество проблем. Самая главная из которых -
  313. значительно более худшая производительность OpenGL по сравнению с DirectX.
  314. Именно поэтому если вы запустите любую игру через "голый" Wine вы получите
  315. ужасный FPS, т.к. она будет работать с использованием wined3d. По этой причине
  316. был разработан другой ретранслятор кода - DXVK. Он переводит DirectX вызовы
  317. уже не в OpenGL, а в Vulkan - более современный графический API, который
  318. достигает паритета по возможностям и производительности с DirectX.
  319. Установка DXVK - это первое что должен сделать любой игрок который собирается
  320. запустить Windows-игру под Linux. Хотя при использовании любой версии Proton
  321. DXVK уже есть из коробки, для игр запускаемых через обычный Wine его придется
  322. устанавливать вручную.
  323. Мы рекомендуем устанавливать `dxvk-mingw-git
  324. <https://aur.archlinux.org/dxvk-git.git>`_ для лучшей производительности:
  325. .. warning:: Последние версии DXVK требуют поддержки драйвером вашего GPU
  326. версии по крайне мере API Vulkan 1.3. Если вы являетесь обладателем
  327. видеокарты NVIDIA поколения Kepler (Geforce GTX 6xx/7xx), то вы ограничены
  328. поддержкой Vulkan 1.2, и вам нет смысла устанавливать DXVK по этой
  329. инструкции. Вместо этого используйте последнюю доступную версию DXVK
  330. 1.10.3, которую можно выбрать к использованию в настройках Lutris.
  331. **Установка:**::
  332. git clone https://aur.archlinux.org/dxvk-git.git
  333. cd dxvk-git
  334. makepkg -sric
  335. После установки пакета DXVK не задействуется сразу, его библиотеки ещё нужно
  336. "распаковать" по отдельности в каждый префикс Wine (это не относиться к играм
  337. запускаемым через Lutris/Proton, в них DXVK включён по умолчанию)::
  338. WINEPREFIX=~/prefix setup_dxvk install # Где "prefix" - это путь до вашего префикса Wine
  339. .. warning:: DXVK осуществляет ретрансляцию вызовов только для игр
  340. использующих версии DirectX 8, 9, 10 и 11. Для DirectX 12 для понадобиться
  341. использовать vkd3d. Подробнее о нем вы можете прочитать ниже.
  342. .. note:: Начиная с версии 2.0 и выше DXVK компилирует шейдеры заранее, так
  343. чтобы бы вы не сталкивались с заиканиями непосредственно вовремя игры. К
  344. сожалению, не во всех играх это работает как следует, к таковым относятся
  345. некоторые проекты разработанные на движке Unreal Engine. Тем не менее, с
  346. помощью определенных опций самого движка все же можно позволить DXVK
  347. собирать шейдеры в фоне во время загрузки игры. Для игр на базе Unreal
  348. Engine 4/5 нужно отредактировав файл
  349. ``%LOCALAPPDATA%/game_name/Saved/Config/WindowsNoEditor/Engine.ini`` (путь
  350. к конфигурационному файлу внутри префикса может отличаться от игры к игре)::
  351. [/script/engine.renderersettings]
  352. r.Shaders.Optimize=1
  353. r.CreateShadersOnLoad=1
  354. niagara.CreateShadersOnLoad=1
  355. r.ShaderDevelopmentMode=0
  356. r.CompileShadersForDevelopment=0
  357. Аналогично для игр использующих UnrealEngine 3 существует параметр
  358. ``bInitializeShadersOnDemand=False`` (спасибо @Iglu47 для предоставленную
  359. информацию).
  360. .. index:: installation, wine, vkd3d, gaming, native-compilation
  361. .. _vkd3d:
  362. -------------
  363. vkd3d
  364. -------------
  365. vkd3d - это ретранслятор кода, аналогичный DXVK, но уже конкретно для версии
  366. DirectX 12. Стоит отметить, что существует две отдельно разрабатываемые версии
  367. vkd3d, одна из которых разрабатывается командой Wine, а другая - Valve. Мы
  368. рекомендуем вам использовать ту что от Valve, т.к. она наиболее заточена под
  369. современные игры, а также достаточно хорошо поддерживает Raytracing.
  370. **Установка vkd3d-proton**
  371. Для Proton и Lutris установка vkd3d задействован по умолчанию, и никаких
  372. дополнительных манипуляций обычно не требуется. Однако для обычного Wine нужна
  373. его отдельная установка. Мы установим vkd3d-proton из AUR,
  374. нативно-скомпилировав его под свой процессор::
  375. git clone https://aur.archlinux.org/vkd3d-proton-mingw.git # Скачивание исходников
  376. cd vkd3d-proton-mingw # Переход в директорию
  377. makepkg -sric # Сборка и установка
  378. Так же как и в случае с DXVK, после установки пакета, vkd3d нужно
  379. предварительно распоковать в нужный Wine префикс::
  380. setup_vkd3d_proton install ~/.wineprefix
  381. (Где '~/.wineprefix' - это путь до нужного вам префикса)
  382. .. image:: images/vkd3d-configure.png
  383. .. index:: wine, dxvk, gaming, about
  384. .. _wine-references:
  385. ------------------------------------
  386. Полезные ссылки по теме Wine и DXVK
  387. ------------------------------------
  388. **Скачать готовые сборки Wine и DXVK**
  389. https://github.com/Kron4ek/Wine-Builds
  390. https://mirror.cachyos.org/?search=wine
  391. **Почитать, что это такое**
  392. https://www.newalive.net/234-sborki-dxvk-i-d9vk.html
  393. https://www.newalive.net/231-wine-tk-glitch.html
  394. .. index:: gamemode, lutris, gaming
  395. .. _additional-components:
  396. =================================
  397. Дополнительные компоненты
  398. =================================
  399. Не являются обязательными, но могут помочь повысить производительность системы
  400. или облегчить настройку.
  401. .. index:: installation, gamemode, lutris, gaming
  402. .. _lutris-and-additions:
  403. --------
  404. Lutris
  405. --------
  406. Lutris - это удобный графический интерфейс по обслуживанию всей вашей игровой
  407. библиотеки (включая все купленные игры Steam/GOG/Epic Games) в одном
  408. приложении. Через него вы сможете достаточно просто запускать нативные игры,
  409. игры запускаемые при помощи эмуляторов, и конечно Wine. Все это объединено в
  410. одном приложении-комбайне, содержащим много настроек и интеграций с различными
  411. сервисами.
  412. **Установка**
  413. Все проще некуда::
  414. sudo pacman -S lutris
  415. Тем не менее, стоит удостовериться что вы установили полный набор зависимостей
  416. для Wine. Об этом вы можете прочитать в предыдущих разделах.
  417. .. image:: images/lutris.png
  418. **Интеграция с GOG/Epic/Steam**
  419. Сразу после установки стоит сделать некоторые базовые вещи. А именно подключить
  420. интеграцию с сервисами Steam/GOG/Epic Games. Это позволит синхронизировать
  421. локальную библиотеку Lutris'a вместе с перечисленными площадками и выполнять
  422. установку игр в два клика. Подключать все конечно не обязательно, так что
  423. делайте это если считаете нужным.
  424. **1.** Зайдем в настройки: В правом верхнем углу найдите три горизонтальные
  425. полоски и в контекстном меню выберите *"Preferences"*. После этого выберите
  426. *"Services"* и включите те сервисы, которыми вы пользуетесь.
  427. **1.1**
  428. .. image:: images/lutris-context-menu.png
  429. **1.2**
  430. .. image:: images/lutris-preferences.png
  431. **2.** Теперь вернитесь в главное окно и наведите курсор на левую панель в
  432. графу *"Sources"*, и ниже выбирите нужную вам платформу. Справа от курсора
  433. будет иконка входа. После этого перед вами появится окно авторизации, после
  434. прохождения которой у вас появится возможность устанавливать и запускать все
  435. игры из вашей внешней библиотеки (Steam/GOG/Epic Games).
  436. Пример подключения аккаунта GOG представлен ниже на скриншотах.
  437. **2.1**
  438. .. image:: images/lutris-auth-icon.png
  439. **2.2**
  440. .. image:: images/lutris-gog-auth.png
  441. **2.3**
  442. .. image:: images/lutris-gog-library.png
  443. Аналогичная операция проделывается с Epic Games Store:
  444. **2.4**
  445. .. image:: images/lutris-auth-epic-icon.png
  446. **2.5**
  447. .. image:: images/lutris-epic-auth.png
  448. **2.6**
  449. .. image:: images/lutris-epic-library.png
  450. .. index:: installation, gamemode, gaming, lutris
  451. .. _gamemode:
  452. --------------
  453. Gamemode
  454. --------------
  455. Gamemode - утилита для максимальной выжимки системы во время игры. Установку
  456. gamemode можно выполнить следующей командой::
  457. sudo pacman -S gamemode lib32-gamemode
  458. Lutris, как правило использует gamemode по умолчанию (в случае его наличия в
  459. системе), однако вы также можете активировать или деактивировать его в
  460. параметрах.
  461. Для запуска игры в ручную с использованием gamemode необходимо выполнить
  462. команду::
  463. gamemoderun ./game
  464. Для запуска игр через Steam с использованием gamemode необходимо прописать
  465. команду в параметрах запуска игры (находятся в свойствах игры в Steam)::
  466. gamemoderun %command%
  467. Из коробки gamemode применяет не так много оптимизаций, поэтому есть смысл
  468. включить использование некоторых параметров, которые отключены по умолчанию.
  469. Задействовать их можно создав конфиг для gamemode (комментарии сопровождаются
  470. символом ``;`` в начале)::
  471. mkdir -p ~/.config/gamemode
  472. nano ~/.config/gamemode/gamemode.ini # Пропишите следующее строчки
  473. [general]
  474. ; Повышает приоритет игры до максимума
  475. renice=19
  476. ; Отключает раздельные блокировки шины памяти.
  477. ; Одна инструкция с раздельной блокировкой может занимать шину
  478. ; памяти в течение примерно 1 000 тактов, что может приводить к
  479. ; кратковременным зависаниям системы в таких играх как God of War.
  480. disable_splitlock=1
  481. ; Устанавливает режим работы процессора на максимальную производительность
  482. desiredgov=performance
  483. [gpu]
  484. ; Установит профиль вашей видеокарты NVIDIA на максимальную
  485. ; производительность на время игры.
  486. nv_powermizer_mode=1
  487. ; Аналогично для AMD. Не забывайте следить за температурой вашего GPU!
  488. amd_performance_level=high
  489. .. warning:: Ananicy/Ananicy-cpp и gamemode конфликтуют - не используйте их вместе!
  490. .. index:: nvidia, dlss, proton, image-scaling, gaming
  491. .. _nvidia-dlss-with-proton:
  492. -------------------------------------------------------
  493. Использование DLSS с видеокартами NVIDIA через Proton
  494. -------------------------------------------------------
  495. Для того чтобы использовать DLSS вам потребуется:
  496. * Видеокарта поддерживающая данную технологию (видеокарты серии RTX и выше).
  497. * Убедиться, что используемая версия Proton не ниже **6.3-8**! (**поддержка
  498. DLSS начинается с данной версии!**)
  499. * Указать параметры запуска игры в свойствах игры Steam
  500. ``PROTON_HIDE_NVIDIA_GPU=0 PROTON_ENABLE_NVAPI=1``
  501. * Некоторые игры, как правило, которые используют DX11, для корректной работы
  502. могут также потребовать включения *dxgi.nvapiHack = False* в *dxvk.conf.* Для
  503. этого выполните инструкции ниже::
  504. mkdir -p ~/.config/dxvk/dxvk.conf
  505. echo "dxgi.nvapiHack = False" > ~/.config/dxvk/dxvk.conf
  506. После этого не забудьте дописать *DXVK_CONFIG_FILE=~/.config/dxvk/dxvk.conf*
  507. в приведённом ниже примере перед ``%command%``.
  508. Пример для использования в Steam::
  509. PROTON_HIDE_NVIDIA_GPU=0 PROTON_ENABLE_NVAPI=1 %command%
  510. .. attention:: Поскольку для DLSS необходимо специальное машинное обучение, то
  511. для запуска необходимо чтобы игра поддерживала DLSS, т.е. в настройках игры
  512. должен быть параметр включения данной функции. **Иначе DLSS работать не
  513. будет!**
  514. .. index:: gamescope, fps, installation
  515. .. _gamescope:
  516. ----------
  517. Gamescope
  518. ----------
  519. Gamescope - это сессионный композитор, используемый для повышения
  520. производительности в играх. По сути, он запускает отдельный менеджер
  521. окон специально для вашей игры поверх текущего графического окружения.
  522. Преимуществом Gamescope являтся снижение задержек во время игры и
  523. возможность произвольно изменять собственное разрешение окна и
  524. разрешение экрана для игры, при этом не меняя исходное разрешение
  525. вашего рабочего окружения. У gamescope также есть встроенная поддержка
  526. технологий FSR и NVIDIA Image Scaling.
  527. **Установка** ::
  528. sudo pacman -S gamescope
  529. **Использование**
  530. Прямо перед командой запуска игры (gamescope работает как для Wine,
  531. так и для нативных игр) добавьте команду ``gamescope``.
  532. Чтобы изменить разрешение в котором будет работать gamescope
  533. используйте параметры ``-W`` и ``-H`` для ширины и высоты
  534. соотвественно. Аналогичные параметры есть для указания ширины и высоты
  535. окна с игрой ``-w`` и ``-h``.
  536. Используйте параметр ``-F`` с аргументами ``fsr`` или ``nis`` для
  537. задействования технологий AMD FSR и NVIDIA Image Scaling
  538. соотвественно.
  539. Для достижения растягивающего масштабирования используйте ``-S stretch``.
  540. Например при запуске CS2 с параметрами
  541. ``gamescope -f -w 2048 -h 1536 -W 3440 -H 1440 -r 165 -S stretch --``
  542. получаем картинку 4:3 без черных полос по бокам. ``-r`` отвечает за герцовку.
  543. .. warning:: Для правильной работы с закрытым драйвером NVIDIA на последних
  544. версиях требуется бета версия Vulkan драйвера 535.43.20.
  545. .. warning:: Если Gamescope не выводит изображение на видеокартах AMD,
  546. используйте переменую окружения ``RADV_DEBUG=nodcc`` или
  547. ``R600_DEBUG=nodcc``.
  548. .. index:: setup, gamescope, tty, latency
  549. .. _tty_gamescope:
  550. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  551. Запуск gamescope в отдельном tty
  552. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  553. Как следует из данного определения, gamescope является сессионным
  554. композитором. Это также означает, что он может быть запущен как часть уже
  555. запущенной графической сессии (т. е. внутри графического окружения), так и сам
  556. представлять собой независимую графическую сессию. Для того, чтобы gamescope
  557. смог стать автономным композитором необходимо запустить его в отдельном tty,
  558. т.е. вне другой графической среды. По сути такой прием аналогичен запуску
  559. отдельного X сервера, но в случае с gamescope это позволяет ему получить
  560. некоторые дополнительные возможности, которые нельзя получить при запуске из
  561. под графической среды если она сама их не поддерживает (например в случае с
  562. GNOME):
  563. - Поддержка VRR (при указании опции ``--adaptive-sync``)
  564. - Поддержка прямого отображения кадров минуя дополнительные этапы обработки,
  565. что значительно уменьшает задержки ввода (при указании
  566. ``--immediate-flips``)
  567. Для того чтобы запустить gamescope в таком режиме вам нужно перейти в
  568. отдельный, незанятый другой графической сессией, tty, например tty3, при
  569. помощи сочетания клавиш ``Ctrl+Alt+F3`` (последняя цифра указывает номер TTY).
  570. После этого перед вами появится приглашение для ввода логина и пароля от
  571. вашего пользователя. Если авторизация прошла успешно, то перед вами появится
  572. приглашение вашей системной оболочки. В ней вы должны запустить gamescope
  573. вместе с указанием приложения, которое вы хотите использовать внутри сессии
  574. gamescope. Например::
  575. gamescope -W 1920 -H 1080 -e -f --xwayland-count 2 --immediate-flips -r 144 -O HDMI-0 -- wine ~/Games/game.exe
  576. Ключи ``-W`` и ``-H`` указывают ширину и высоту выбранного ключом ``-O``
  577. вывода соответственно, а ключ ``-r`` указывает частоту развертки. После ``--``
  578. идет команда запуска приложения, которое вы хотите запустить внутри gamescope.
  579. Обратите внимание, что вы так же можете запустить клиент Steam внутри
  580. gamescope, и все запускаемые вами игры тоже будут работать внутри этой сессии.
  581. Специально для Steam также нужно экспортировать переменную окружения (указать
  582. перед командой gamescope) ``STEAM_MULTIPLE_XWAYLANDS=1`` для того чтобы можно
  583. было использовать Steam одновременно с вашей обычной графической сессией
  584. (возврат на которую осуществляется при помощи сочетания клавиш
  585. ``Ctrl+Alt+F1``) и gamescope сессией на другом tty.
  586. .. index:: fps, monitoring, mangohud, dxvk
  587. .. _fps_monitoring:
  588. ------------------------------
  589. Мониторинг FPS в играх.
  590. ------------------------------
  591. .. index:: installation, fps, monitoring, mangohud
  592. .. _mangohud:
  593. ^^^^^^^^^^^^^
  594. Mangohud
  595. ^^^^^^^^^^^^^
  596. Включение мониторинга в играх как в MSI Afterburner.
  597. .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/ARU/images/image9.png
  598. :align: center
  599. **Установка** ::
  600. sudo pacman -S lib32-mangohud mangohud
  601. Графический помощник для настройки вашего MangoHud. ::
  602. sudo pacman -S goverlay
  603. Для использования mangohud в играх через Steam необходимо добавить команду в
  604. параметры запуска игры (находятся в свойствах игры Steam)::
  605. mangohud %command%
  606. (Для указания нескольких команд необходимо разделять их **пробелом**)
  607. .. index:: installation, fps, monitoring, dxvk
  608. .. _dxvk-hud:
  609. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  610. Альтернатива: DXVK Hud (*Только для игр запускаемых через Wine/Proton*)
  611. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  612. Вы также можете использовать встроенную в DXVK альтернативу для мониторинга -
  613. DXVK Hud. Он не такой гибкий как MangoHud, но также способен выводить значения
  614. FPS, график времени кадра, нагрузку на GPU. Использовать данный HUD можно задав
  615. переменную окружения *DXVK_HUD*. К примеру, ``DXVK_HUD=fps,frametimes,gpuload``
  616. выводит информацию о FPS, времени кадра, и нагрузке на GPU.
  617. Полный список значений переменной вы можете узнать - `здесь
  618. <https://github.com/doitsujin/dxvk#hud>`__.
  619. .. index:: installation, xpad, xpadneo, xone, gamepad, usb, bluetooth
  620. .. _gamepad_setup:
  621. -------------------------
  622. Настройка геймпадов Xbox
  623. -------------------------
  624. .. index:: xpad, usb, gamepad
  625. .. _xpad_setup:
  626. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  627. Настройка стандартного xpad
  628. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  629. К сожалению далеко не все Xbox-совместимые геймпады распознаются встроенным
  630. драйвером Xpad при подключении посредством USB, поэтому приходится явно
  631. указывать его использование для данных устройств. Делается это при помощи
  632. правил Udev (менеджера устройств в Linux). Но перед их написанием нужно
  633. определить ID вендора и самого устройства. Это можно сделать через команду
  634. ``lsusb`` (если у вас её нет, то установите пакет ``usbutils``)::
  635. lsusb
  636. После вы получите информацию о всех подключенных USB устройствах системе. Нас
  637. интересует два числа разделяемых двоеточием, это и будет ID производителя и
  638. самого устройства (в примере ниже это ``11c1`` и ``2001`` соответственно). ::
  639. ...
  640. Bus 001 Device 002: ID 11c1:2001 Controller
  641. ...
  642. После этого создадим правило udev с произвольным именем файла:
  643. .. code-block:: shell
  644. :caption: ``sudo nano /etc/udev/rules.d/10-xbox-gamepad.rules``
  645. # Generic xbox controller
  646. ACTION=="add", ATTRS{idVendor}=="11c1", ATTRS{idProduct}=="2001", \
  647. RUN+="/sbin/modprobe xpad", \
  648. RUN+="/bin/sh -c 'echo %s{idVendor} %s{idProduct} > /sys/bus/usb/drivers/xpad/new_id'"
  649. В аттрибуты ``idVendor`` и ``idProduct`` мы указываем полученные значения из команды
  650. lsusb (не забудьте про кавычки!).
  651. Теперь нам нужно загрузить новые правила через следующую команду::
  652. sudo udevadm control --reload-rules
  653. Переподключите ваш геймпад к компьютеру и он должен стать доступным для
  654. использования (проверить можно через наличие файла ``/dev/input/js0``).
  655. .. index:: installation, gamepad, xone, usb
  656. .. _xone-dkms:
  657. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  658. Альтернативный драйвер - Xone
  659. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  660. Драйвер xpad внутри ядра имеет весьма ограниченную поддержку геймпадов
  661. подключаемых через USB, но имеется также сторонний драйвер - Xone, не входящий
  662. в основную линию разработки. Xone нацелен в основном на поддержку контроллеров
  663. Xbox One/Xbox One Series S/Xbox One Series X и позволяет по сравнению с
  664. обычным драйвером xpad в ядре управлять подсветкой геймпада, обрабатывать
  665. аудио вывод подключенной к геймпаду гарнитуры, а также имеет полноценное
  666. управление питанием.
  667. **Установка** ::
  668. git clone https://aur.archlinux.org/xone-dkms
  669. cd xone-dkms
  670. makepkg -sric
  671. .. index:: installation, gamepad, xpadneo, dkms, bluetooth
  672. .. _xpadneo-dkms-git:
  673. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  674. Драйвер xpadneo с поддержкой Bluetooth
  675. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  676. И драйвер xpad, и драйвер xone не поддерживают работу с геймпадами,
  677. работающими через Bluetooth. Xpadneo - это новый драйвер для поддержки работы
  678. всех последних контроллеров от Microsoft, например таких как контроллер
  679. Microsoft Xbox One S, и их клонов, подключаемых через Bluetooth.
  680. Среди преимуществ драйвера следует отметить следующее:
  681. - Поддержка Trigger Force Feedback (чего даже нет в Microsoft Windows)
  682. - Поддержка подключения более одного контроллера
  683. - Поддержка индекации уровня заряда
  684. Полный список возможностей драйвера можно увидеть `здесь
  685. <https://github.com/atar-axis/xpadneo#advantages-of-this-driver>`__.
  686. **Установка** ::
  687. git clone https://aur.archlinux.org/xpadneo-dkms
  688. cd xpadneo-dkms
  689. makepkg -sric
  690. .. vim:set textwidth=78: