Steam: Civilization V, Arch Linux и ERROR:Invalid resolutions constraints: 0x0 must not be greater than 0x0

Автор: | 04/27/2020
 

Имеется Arch Linux со Steam (см. Arch Linux: установка Steam).

Имеется Civilization V — моя любимейшая игра (хотя в стимовской версии наиграно всего 778 часов).

Драйвера NVIDIA, большинство игр работают без проблем, даже World Of Tanks, а вот Цивилизация не хотела запускаться никак.

Проблема существует давно, но как-то всё не доходили руки зафиксить, т.к. на компе всё-равно есть Win 10 второй системой, а играю крайне редко.

Проблема и решение не специфичны для Arch Linux, и решение должно работать на любой Linux-системе.

Собственно ошибки при запуске выглядят так:

...
Game update: AppID 8930 "", ProcID 1463098, IP 0.0.0.0:0
Starting app 8930
>>> Adding process 1463098 for game ID 8930
GameAction [AppID 8930, ActionID 2] : LaunchApp changed task to WaitingGameWindow with ""
ERROR: ld.so: object '/home/setevoy/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/setevoy/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
GameAction [AppID 8930, ActionID 2] : LaunchApp changed task to Completed with ""
>>> Adding process 1463099 for game ID 8930
...
[0427/121055.396740:ERROR:frame_sink_video_capturer_impl.cc(206)] Invalid resolutions constraints: 0x0 must not be greater than 0x0; and also within media::limits.
Game removed: AppID 8930 "", ProcID 1463099
...
Uploaded AppInterfaceStats to Steam
Exiting app 8930

Помню, что когда пытался запустить её в первый раз, ещё только после установки Steam — гуглил ошибки «from LD_PRELOAD cannot be preloaded«, и гугление ни к чему не привело.

Но сегодня вдруг обратил таки внимание на строку:

[0427/121055.396740:ERROR:frame_sink_video_capturer_impl.cc(206)] Invalid resolutions constraints: 0x0 must not be greater than 0x0; and also within media::limits.

Что привело к вот этому обсуждению, от 22 фев. 2018 (!)

Собственно решение — просто убрать видеоролик, который запускается заставкой при загрузке игры, так как из-за того, что ядер всего 4, и у каждого один поток — падает BinkPlayer, см. Civ5-LinuxPatch.md:

lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              1
Core(s) per socket:              4
Socket(s):                       1
...

Переходим в каталог игры:

cd .local/share/Steam/steamapps/common/Sid\ Meier\'s\ Civilization\ V

Переименовываем все файлы видео .mov  в .mov_bak:

for m in `find . -name \*.mov -type f`; do mv "$m" "$m"_bak; done

Собственно, вот они:

find . -name *_bak
./steamassets/civ5_opening_movie_en_us.mov_bak
./steamassets/civ5_opening_movie_fr_fr.mov_bak
./steamassets/civ5_opening_movie_de_de.mov_bak
./steamassets/assets/dlc/expansion2/civ5xp2_opening_movie_en_us.mov_bak
./steamassets/assets/dlc/expansion/civ5xp_opening_movie_en_us.mov_bak

И запускаем игру:

Готово.