Steam (Русский)

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-preferences-desktop-locale.pngЭта статья или раздел нуждается в переводеTango-preferences-desktop-locale.png

Примечания: Статья скопирована из английской версии и нуждается в переводе (обсуждение: Talk:Steam (Русский)#)

Из Wikipedia:

Steam — сервис цифрового распространения компьютерных игр и программ, принадлежащий компании Valve, известному разработчику компьютерных игр. Steam выполняет функции службы активации, загрузки через интернет, автоматических обновлений и новостей для игр как самой Valve, так и сторонних разработчиков по соглашению с Valve, таких как Epic Games, THQ, 2K Games, Activision, Capcom, Codemasters, Eidos Interactive, 1С, GSC Game World, id Software, SEGA, Atari, Rockstar Games, Telltale Games, Ubisoft, Bethesda Softworks и многих других фирм, оформивших контракт на дистрибьюцию.

Contents

Установка

Примечание:
  • Arch Linux не имеет официальной поддержки.
  • Поскольку клиент Steam является 32-битным приложением, вам необходимо включить multilib репозиторий, если у вас 64-битная система. Также может понадобиться установить multilib-devel, чтобы предоставить некоторые важные multilib библиотеки.

Steam можно установить с помощью пакета steam, доступного в официальных репозиториях. Если у вас 64-битная система, сначала включите репозиторий multilib.

Steam не сопровождается для этого дистрибутива. Поэтому пользователям придётся самим исправить некоторые недочёты в работе:

  • Если у вас 64-битная система, вам нужно установить lib32-alsa-plugins, чтобы работал звук в 32-битных играх.
  • Некоторые игры имеют зависимости, которые не установлены в вашей системе. Если игра вылетает при запуске, (часто даже без сообщения об ошибке), тогда убедитесь, что вы установили все библиотеки, перечисленные в Steam/Game-specific troubleshooting.

Запуск Steam

Режим Big Picture (из Display Manager)

Чтобы запустить Steam в режиме Big Picture из менеджера дисплеев (таких как LightDM), создайте файл /usr/share/xsessions/steam-big-picture.desktop со следующим содержимым:

/usr/share/xsessions/steam-big-picture.desktop
[Desktop Entry]
Name=Steam Big Picture Mode
Comment=Start Steam in Big Picture Mode
Exec='/usr/bin/steam -bigpicture'
TryExec='/usr/bin/steam -bigpicture'
Icon=
Type=Application

Также это можно сделать из Steam > Настройки > Интерфейс, отметьте галочкой 'Запускать Steam в режиме Big Picture' и запускайте Steam обычным образом. С некоторыми оконными менеджерами такой способ работает лучше, чем вариант с командной строкой.

Запуск Steam свернутым в области уведомлений (silent mode)

Если при старте появляется главное окно Steam, вы можете добавить параметр -silent к команде запуска, чтобы окно не отображалось:

/usr/bin/steam -silent %U

либо же вы можете отредактировать следующий .desktop файл, добавив этот параметр вручную:

~/.config/autostart/steam.desktop
[Desktop Entry]
Name=Steam
Comment=Application for managing and playing games on Steam
Exec=/usr/bin/steam -silent %U
Icon=steam
Terminal=false
Type=Application
Categories=Network;FileTransfer;Game;
MimeType=x-scheme-handler/steam;
Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends;
...

Решение проблем

Совет: Скрипт /usr/bin/steam перенаправляет стандартный вывод из stdout и stderr Steam в файл /tmp/dumps/${USER}_stdout.txt. Это означает, что вам не обязательно запускать Steam в терминале для ознакомления с данным выводом.
Примечание: В дополнение к описанию здесь, любой баг/исправление/ошибка должны быть (если ещё не) сообщены в баг-трекер компании Valve на их странице GitHub.

Проблемы с драйверами nvidia версии 361.28

При запуске некоторых игр возникает ошибка, появившаяся в драйверах nvidia версии 361.28

"Missing basic OpenGL v1.0 -> v2.0 required OpenGL functionality."

До исправления NVIDIA данной ошибки вы можете использовать следующий параметр для запуска для проблемной игры:

__GLVND_DISALLOW_PATCHING=1 %command%

либо же вы можете откатить версию драйверов nvidia до 361.16

Проблемы среды выполнения Steam

Steam устанавливает собственные, часто устаревшие версии библиотек, также называемые "Steam Runtime" (среда выполнения Steam). Данные библиотеки, вероятно, будут часто конфликтовать с теми, которые включены в Arch Linux.

Возможные симптомы

Некоторые из возможных симптомов данных проблем проявляются в зависании или сбоях при запуске клиента Steam, а также в виде следующих ошибок:

libGL error: unable to load driver: some_driver_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: some_driver
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
Failed to load libGL: undefined symbol: xcb_send_fd
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
OpenGL GLX context is not using direct rendering, which may cause performance problems. (смотри ниже)
Could not find required OpenGL entry point 'glGetError'! Either your video card is unsupported or your OpenGL driver needs to be updated.
Примечание: Неправильно настроенный firewall (брандмауэр) также может вызывать проблемы в работе Steam, которые схожи с симптомами проблем среды выполнения, вследствие того, что у Steam происходит сбой всякий раз, когда клиент не может установить соединение со стимовскими серверами, а также большинство игр просто не запускаются из-за того, что Steam API не загружается.

Временные решения

Вы можете решить данную проблему заставив Steam принудительно использовать актуальные версии библиотек (установленные с помощью pacman) следующими двумя способами.

Использование динамического компоновщика

Динамический компоновщик (man 8 ld.so) может загружать определённые библиотеки с помощью переменной окружения LD_PRELOAD.

LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1' steam

При использовании .desktop файла вы можете использовать команду в строке Exec=

env LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1' /usr/bin/steam %U
Примечание: Указанное выше значение '$LIB' не является переменной, а выступает как указание компоновщику использовать соответствующую архитектуру для библиотеки. Одиночные кавычки необходимы для предотвращения определения командной оболочки значения $LIB как переменной.
Удаление библиотек среды выполнения Steam

Запустите следующую команду для удаления конфликтных библиотек среды выполнения Steam, вызывающих проблемы в Arch Linux:

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete

Если указанная выше команда не сработала, то запустите её ещё раз, а затем запустите следующую команду.

find ~/.local/share/Steam/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete
Примечание: Во время обновления Steam часто восстанавливает собственные библиотеки среды выполнения, поэтому до окончательного решения проблемы вам следует после окончания обновления Steam закрыть клиент, удалить библиотеки и запустить Steam опять.

Если вы хотите восстановить файлы, которые были удалены указанной выше командой, то вы можете воспользоваться встроенной функцией сброса Steam.

Важно: --reset также удалит игры (каталог по умолчанию SteamApps).
bc|steam --reset

Проблема при использовании нескольких мониторов

Использование нескольких мониторов может вызвать следующую ошибку: ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. которая приводит к сбою при запуске игры. При возникновении данной ошибки вы можете отключить дополнительные экраны и затем запустить игру. В случае успешного запуска игры вы можете включить экраны снова.

Также вы можете попробовать выполнить данную команду:

export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH

и затем запустить steam.

Родная среда выполнения: steam.sh line 756 ошибка сегментации

Valve GitHub issue 3863

Согласно вышеупомянутому отчёту в Steam происходит сбой с ошибкой /home/<username>/.local/share/Steam/steam.sh: line 756: <различный числовой код> Segmentation fault (core dumped) при запуске с параметром STEAM_RUNTIME=0.

Единственное предложенное решение - это копирование собственных 32-битных библиотек Steam libusb и libgudev в /usr/lib32:

# cp $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libgudev* /usr/lib32
# cp $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libusb* /usr/lib32

Следует отметить, что данный способ необходимо применять в тех системах, где установлены lib32-libgudev и lib32-libusb

Кнопка закрытия только сворачивает окно

Valve GitHub issue 1025

Чтобы окно Steam закрывалось (и убиралось из панели задач) при нажатии крестика, но сам Steam продолжал работать в трее, установите переменную окружения STEAM_FRAME_FORCE_CLOSE в значение 1. (См. Переменные окружения#Графические приложения). Это можно сделать, запустив Steam следующей командой:

$ STEAM_FRAME_FORCE_CLOSE=1 steam

Если вы запускаете Steam через .desktop файл, вы должны изменить строку с Exec следующим образом:

 Exec=sh -c 'STEAM_FRAME_FORCE_CLOSE=1 steam' %U. 

Для использования данной переменной окружения при запуске Steam вы можете добавить export STEAM_FRAME_FORCE_CLOSE=1 в скрипт /usr/bin/steam

Flash не работает на 64-битных системах

Статья на сайте поддержки Steam

Сначала убедитесь, что пакет lib32-flashplugin установлен. Теперь должно заработать. Если это не так, создайте папку локальной версии Flash плагина для Steam:

$ mkdir ~/.steam/bin32/plugins/

и создайте символьную ссылку на глобальный файл lib32 flash plugin в этой папке:

$ ln -s /usr/lib32/mozilla/plugins/libflashplayer.so ~/.steam/bin32/plugins/

Текст повреждён или не отображается

Инструкция для Windows от поддержки Steam также работает и на Linux.

Вы можете установить их пакетом steam-fontsAUR из AUR (Русский), или вручную, скачав и установив SteamFonts.zip.

SetLocale('en_US.UTF-8') не срабатывает при запуске игры

Раскомментируйте en_US.UTF-8 UTF-8 в файле /etc/locale.gen, затем выполните locale-gen от имени суперпользователя.

Игра вылетает немедленно после запуска

Если игра сразу же вылетает, попробуйте отключить: "Enable the Steam Overlay while in-game" в Properties игры.

OpenGL не использует прямой рендеринг

Статья на сайте поддержки Steam

Возможно, вы не установили 32-битный графический драйвер. Узнайте из статьи Xorg какой пакет вам нужно установить.

Вы можете проверить/протестировать, установлен ли он правильно, установив lib32-mesa-demos и запустив следующую команду:

$ glxinfo32 | grep OpenGL.

Ошибка libGL при запуске некоторых игр

Если у вас возникает ошибка вида Failed to load libGL: undefined symbol: xcb_send_fd, это может происходить из-за устаревших библиотек среды выполнения Steam. Удаление ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libxcb.so.1 заставит Steam загружать версии библиотек, установленных pacman'ом.

OpenGL GLX context не использует прямой рендеринг, из-за чего происходят проблемы с производительностью или Steam вешает Xorg

Steam распространяется со своими собственными версиями некоторых библиотек, и они иногда настолько устаревают, что не могут работать с системными библиотеками Arch Linux. Удаление библиотек, распространяющихся со Steam приведёт к тому, что Steam будет вынужден использовать новые версии из Arch Linux. Обсуждение на форуме.

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6

Проблемы с 64-битными играми, таких как XCOM

Steam распространяется со своими собственными версиями некоторых библиотек, и они иногда настолько устаревают, что не могут работать с системными библиотеками Arch Linux. Удаление библиотек, распространяющихся со Steam приведёт к тому, что Steam будет вынужден использовать новые версии из Arch Linux. [1].

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6

Нет звука в некоторых играх

Если в некоторых играх нет звука, и инструкции из статьи Steam/Game-specific troubleshooting не решили проблему, то использование родной среды выполнения может дать положительный результат.

Ошибка "You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1"

У вас может возникнуть такая ошибка при первом запуска Steam. Убедитесь, что вы установили lib32-версии всех ваших графических драйверов. Например, если вы установили catalyst-utils-pxp[ссылка недействительна: package not found], xf86-video-dri[ссылка недействительна: package not found], intel-dri[ссылка недействительна: replaced by mesa], mesa-libgl для AMD и Intel двойных карт, то вам следует установить lib32-catalyst-utils-pxp[ссылка недействительна: package not found], lib32-intel-dri[ссылка недействительна: replaced by lib32-mesa], lib32-mesa-libgl.

Игры не запускаются на старом оборудовании Intel

На старом оборудовании Intel, если игра при запуске немедленно вылетает, это может происходить из-за того, что оборудование не поддерживает последний OpenGL. Это проявляется как ошибка gameoverlayrenderer.so в /tmp/dumps/mobile_stdout.txt, но читая /tmp/gameoverlayrenderer.log вы видите ошибку GLXBadFBConfig.

Однако, это можно исправить, заставив игру использовать более позднюю версию OpenGL, чем она требует. Нажмите правой кнопкой мыши по игре, выберите Свойства. Затем нажмите "Установить параметры запуска" во вкладке "Основное" и вставьте следующее:

MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140 %command%

Это заставит игру использовать последнюю версию OpenGL.

Некоторые игры не запускаются

Некоторые игры не запускаются и выводят что-то вроде:

ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Это значит, что прилагающаяся libstdc++.so конфликтует с чем-то описанным здесь. Решением является установка переменной окружения STEAM_RUNTIME в значение 0 и выполнение следующей команды:
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6

Запуск игр с дополнительными параметрами, такими как Bumblebee/Primus

Steam может запускать игры, используя ваши собственные команды. Чтобы это сделать, перейдите в вашу Библиотеку игр, щёлкните правой кнопкой мыши по нужной игре, выбирете Свойства, Установить параметры запуска. Steam заменит тег %command% на команду, на ту, которую он выполнит по факту. Например, чтобы запустить Team Fortress 2 с primusrun и разрешением 1920x1080, вы должны ввести:

primusrun %command% -w 1920 -h 1080

Если вы используете ядро Linux-ck, вы можете уменьшить задержки и увеличить производительность, запустив игру в SCHED_ISO (низкие задержки, избежание перегрузки CPU) с помощью schedtool

# schedtool -I -e %command% other arguments

Отключение отдельных композиторов при запуске игр

В дополнение к этому, используйте %command% для того, чтобы убивать отдельные композиторы, (такие как Xcompmgr или Compton), из-за которых игра может глючить и тормозить на некоторых системах, и запускать их снова после выхода из игры, добавив в опции запуска игры следующее:

 killall compton && %command%; nohup compton &

Замените compton в приведённой выше команде на ваш композитор. Вы также можете добавить -options к %command% или compton.

Steam будет родительским процессом для любой команды, написанной после %command% и ваш Steam статус будет отображаться как "в игре". Поэтому, в этом примере мы используем композитор через nohup, таким образом он не будет привязан к процессу Steam (и будет продолжать работать после закрытия Steam), а завершение команды амперсандом сбросит ваш статус Steam.

Using native runtime

Steam, by default, ships with a copy of every library it uses, packaged within itself, so that games can launch without issue. This can be a resource hog, and the slightly out-of-date libraries they package may be missing important features (Notably, the OpenAL version they ship lacks HRTF and surround71 support). To use your own system libraries, you can run Steam with:

$ STEAM_RUNTIME=0 steam

However, if you're missing any libraries Steam makes use of, this will fail to launch properly. An easy way to find the missing libraries is to run the following commands:

$ cd ~/.local/share/Steam/ubuntu12_32
$ LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}" ldd $(file *|sed '/ELF/!d;s/:.*//g')|grep 'not found'|sort|uniq
Note: The libraries will have to be 32-bit, which means you may have to download some from the AUR if on x86_64, such as NetworkManager.

Once you've done this, run steam again with STEAM_RUNTIME=0 steam and verify it's not loading anything outside of the handful of steam support libraries:

$ cat /proc/$(pidof steam)/maps|sed '/\.local/!d;s/.*  //g'|sort|uniq

One easy way to gather and install all of those libraries is a package in the AUR that's really way harder to find than it should be, called steam-native.

Skins for Steam

Note: Using skins that are not up-to-date with the version of the Steam client may cause visual errors.

The Steam interface can be fully customized by copying its various interface files in its skins directory and modifying them.

An extensive list of skins can be found on Steam's forums.

Steam skin manager

The process of applying a skin to Steam can be greatly simplified using steam-skin-managerAUR[ссылка недействительна: сохранено в aur-mirror]. The package also comes with a hacked version of the Steam launcher which allows the window manager to draw its borders on the Steam window.

As a result, skins for Steam will come in two flavors, one with and one without window buttons. The skin manager will prompt you whether you use the hacked version or not, and will automatically apply the theme corresponding to your GTK+ theme if it is found. You can of course still apply another skin if you want.

The package ships with two themes for the default Ubuntu themes, Ambiance and Radiance.

Changing the Steam friends notification placement

Note: A handful of games do not support this, for example this can not work with XCOM: Enemy Unknown.

Use a skin

You can create a skin that does nothing but change the notification corner. To save yourself from creating these manually I have uploaded them to mediafire. You can download them here and then extract them into your home folder (make sure it is not extracted into a subdirectory, i.e. the .local folder in the zip needs to go into your home directory) after that you will have to open Steam, go to it's Settings, and enter the Interface tab. Then in the drop-down list where it says < default skin > you can select the desired skin and finally move that notification out of your way!

If you would like to manually create the files, here is how you can do it. First you need to create the directories:

 mkdir -p $HOME/Top-Right/resource
 cp -R $HOME/.steam/steam/resource/styles $HOME/Top-Right/resource/
 mv $HOME/Top-Right $HOME/.local/share/Steam/skins/
 cd .local/share/Steam/skins/
 cp -R Top-Right Top-Left && cp -R Top-Right Bottom-Right

Then with a text editor of your choosing open the file you wish to modify, the gameoverlay.style will change the corner for the in-game overlay whereas the steam.style will change it for your desktop. In this example I will use nano and the in-game overlay file.

 nano Top-Right/resource/styles/gameoverlay.style

Now find the entry: Notifications.PanelPosition in whichever file you opened and change it to the appropriate value, for example for Top-Right:

 Notifications.PanelPosition     "TopRight"

This line will look the same in both files. Repeat the process for all the 3 variants (Top-Right, Top-Left and Bottom-Left) and adjust the corners for the desktop and in-game overlay to your satisfaction for each skin, then save the files.

To finish you will have to select the skin in Steam as explained above. You can use these files across distributions and even between Windows and Linux (OS X has it's own entry for the desktop notification placement)

On The fly patch

This method is more compatible with future updates of Steams since the files in the skins above are updated as part of steam and as such if the original files change, the skin will not follow the graphics update to steam and will have to be re-created every time something like that happens. Doing things this way will also give you the ability to use per-game notification locations as you can run a patch changing the location of the notifications by specifying it in the launch options for games.

Steam updates the files we need to edit everytime it updates (which is everytime it is launched) so the most effective way to do this is patching the file after Steam has already been launched.

First you will need this patch(pastebin ver). you can edit the entry and change it between "BottomRight"(default), "TopRight" "TopLeft" and "BottomLeft" but I will assume you used "TopRight" as in the original file. Save that file as $HOME/.steam/topright.patch.

Note: For pastebin to work you need to copy the raw data from line 1 through line 12 (line 12 is whitespace, but the patch will fail without it, this is why I provided a mediafire version too) you basically need to start copying behind the "-" sign at the bottom of the raw paste data and go up from there.

Next create an alias in your $HOME/.bashrc

 alias steam_topright='pushd $HOME/.steam/ && patch -p1 -f -r - --no-backup-if-mismatch < topright.patch && popd'

Log out and back in to refresh the aliases. Launch Steam and wait for it to fully load, then run the alias

 $ steam_topright

And most games you launch after this will have their notification in the upper right corner.

You can also duplicate the patch and make more aliases for the other corners if you don't want all games to use the same corner so you can switch back.

To automate the process you will need a script file as steam launch options cannot read your aliases. The location and name of the file could for example be $HOME/.scripts/steam_topright.sh, and assuming that's the path you used, it needs to be executable:

 $ chmod +755 $HOME/.scripts/steam_topright.sh

The contents of the file should be the following:

 #!/bin/sh
 pushd $HOME/.steam/ && patch -p1 -f -r - --no-backup-if-mismatch < topright.patch && popd

And the launch options should be something like the following.

 $HOME/.scripts/steam_topright.sh && %command%

There is another file in the same folder as gameoverlay.style folder called steam.style which has an entry with the exact same function as the file we patched and will change the notification corner for the desktop only (not in-game), but for editing this file to actually work it has to be set before steam is launched and the folder set to read-only so steam cannot re-write the file. Therefore the only two ways to modify that file is to make the directory read only so steam cannot change it when it is launched (can break updates) or making a skin like in method 1.

Смотрите также