Fallout4 под wine (и другие) + gamepad

Возможно, кому-то пригодится и сэкономит время.

Предыстория.
Иногда люблю поиграть пару-тройку часиков, а иногда в результате засиживаюсь подольше. И вот играя в Fallout 4, интерфейс которого явно заточен под приставки и управление геймпадом, пришла мысль попробовать подключить оный девайс и попробовать поиграть сидя на диване перед телеком. До этого был опыт подключения джойстика (который для авиа-космо симуляторов), и помнилось, что проблем никаких нету, определялся и работал "из коробки". Для пробы закупил самый дешёвый (ну почти) геймпад... а не тут то было.

Дано:
Kubuntu 18.10. Игра Fallout 4 под wine.
Геймпад самый дешёвый Defender Zoom. Имеет 2 режима, в которых распознаётся как Xbox360 (ID 045e:028e) и PS3 (ID 2563:0575). Переключение режимов длительным нажатием "Mode" . После подключения определяется (модулем xpad, запускается сам при подключении геймпада) как xbox360.

В этом режиме не удалось заставить работать: определяется, но не видятся нажатия кнопок и движения стиков. Переключаем в режим PS3. KDE-шная утилита для джойстика в параметрах системы видит все кнопки и стики.
Далее. Убил некоторое кол-во времени, мучаясь с пакетами xboxdrv , joystick. В первом так и не заработал как xbox controller, опять же определялся, но нажатий не видел; второй имеет интересные, но необязательные (как я понял уже потом) тулзы для диагностики (jstest) и калибровки (jscal) джойстика.

В PS3-режиме геймпада игра его вообще не видела. Оказывается, некоторые современные игры работают с джойстиками только через xinput.

Что помогло:
На гитхабе репозиторий kozec/dumbxinputemu (xinput reimplementation compatibile with DirectInput controllers). Качаем архив, кидаем файлы оттуда в директорию, где лежат бинарники игры. В вайне редактируем замещения для библиотек xinput1_3 и xinput9_1_0, устанавливаем "сторонняя (windows)". В скрипте запуска я добавлял:
export XINPUT_NO_IGNORE_JS=1
export XINPUT_IGNORE_EVDEV=1

возможно, заработает и без этого.
Запускаем игру. Ура, джойстик работает, подсказки клавиш изменились на соответсвующие геймпаду. Запускаем игру... но клавиши все перепутаны, некоторые не работают, стики тоже частично.
Пробовал переназначать кнопки сначала в самой игре, а потом с помощью jscal (из состава joystick) и jstest-gtk. Но часть из кнопок, а так же правый стик так и не заработали. Поэтому продолжаем.

Идём снова на гитхаб к kozec, на этот раз в kozec/sc-controller. Эта утилита в целом для работы стим-контроллера без самого стима, но добавлена поддержка и других джойстиков. Качаем (есть deb-пакеты для Ubuntu), ставим, не забываем про зависимости (она GTK-шная, но что поделаешь). Запускаем, заходим в настройки -> Controllers. Ставим галку "Enable evdev support" (требуется python-evdev). В самом низу нажимаем кнопку "Register new controller" и добавляем наш джойстик, указав его тип. После этого в осн.меню создаём новый профиль и переназначаем все клавиши в соответсвии с небходимостью. Мне ещё потребовалось поменять местами оси на левом стике. Не забываем нажать сохранить. Видим, что в /dev/input появилось ещё одно js* устройство. Возможно, sc-controller попросит решить за вас проблему с правами на /dev/input или что-то подобное, запросит для этого root-права (само приложение запускалось от непривилегированного пользователя). Заходим в игру, проверяем что все клавиши и стики работают как надо и наслаждаемся игрой, сидя на диване.

Возможно, потребуется создавать разные профили для разных игр.
В Ведьмаке 3 геймпад тоже заработал.

0
masterlan - 26 Январь, 2019 - 15:34
Изображение пользователя masterlan.

Skiv-maks, подскажите, как вы ставили в систему WINE.
Моя 18.10 заявляет что при установке оного:
amarok будет удалён
amarok-utils будет удалён
git будет удалён
kate будет удалён
kde-runtime будет удалён
kdelibs-bin будет удалён
kdelibs5-plugins будет удалён
kinfocenter будет удалён
ktexteditor-katepart будет удалён
kubuntu-desktop будет удалён
libapache2-mod-php5.6 будет удалён
libapache2-mod-php7.2 будет удалён
libapache2-mod-php7.3 будет удалён
libeditorconfig0 будет удалён
libgdal20 будет удалён
libkf5texteditor5 будет удалён
libkhtml5 будет удалён
libkjsapi4 будет удалён
libkjsembed4 будет удалён
libmp3splt будет удалён
mp3splt будет удалён
mysql-workbench будет удалён
nginx-core будет удалён
php будет удалён
php5.6 будет удалён
php5.6-cli будет удалён
php5.6-fpm будет удалён
php7.1-cgi будет удалён
php7.1-fpm будет удалён
php7.2 будет удалён
php7.2-cgi будет удалён
php7.2-cli будет удалён
php7.2-fpm будет удалён
plasma-desktop будет удалён
plasma-widgets-addons будет удалён
plasma-workspace будет удалён
qgit будет удалён
sddm-theme-breeze будет удалён

Что в моём "супе" не так?
Почему так радикально?
И главное, как с этим бороться ?

0
Skiv-maks - 26 Январь, 2019 - 17:23

Очень странная у вас ситуация.
#apt show wine
Package: wine
Version: 3.0.3-2
...
Depends: wine64 (>= 3.0.3-2) | wine32 (>= 3.0.3-2), wine64 (<< 3.0.3-2.1~) | wine32 (<< 3.0.3-2.1~)
...
Breaks: wine-stable (<< 3.0.1ubuntu1~)
Replaces: wine-stable (<< 3.0.1ubuntu1~)

Не должен wine влиять на все приведённые вами пакеты, проблема скорее всего в чём-то другом.
Думаю, лучше отдельную тему создать с вашим вопросом.

Я ставил стандартным apt install wine, но конкретно Fallout 4 запускался в отдельном wineprefix, подготовленном не мной, там используется не системный wine. Подробнее на известном торрент-трекере.

0
Fogma - 28 Январь, 2019 - 11:13
Изображение пользователя Fogma.

откуда такой древний wine? уже 4 версию выкатили stable.

0
masterlan - 28 Январь, 2019 - 14:16
Изображение пользователя masterlan.

Кстати сказать, при попытке установить 4-ый , моя система выкатила такой же вышеупомянутый мною список "к удалению".

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры