Значительно увеличиваем производительность StarCraft 2 под WINE

Изображение пользователя Shrine.

Доброго времени суток, уважаемые геймеры и просто люди, которые не прочь расслабиться за зрелищной RTS от Blizzard StarCraft II. Сегодня я расскажу вам, как значительно увеличить производительность в данной игре под wine.

Итак, многие пользователи столкнулись с проблемой чрезвычайно низкой производительности, запустив игру под wine. Причем, не важно, были ли отключены эффекты, или же игра была запущена на отдельном X-сервере. Так же на сайте wine можно часто увидеть советы запускать игру с ключом -opengl. Лично я его добавил на всякий случай, однако в техподдержке Blizzard не раз говорили, что в отличие от остальных игр этой фирмы, в StarCraft II этот ключ ничего не делает.Пруф Люди писали о том, что в исполняемом файле есть отсылки к таким файлам, как opengl32.dll, но как заставить игру использовать opengl никто так и не придумал.

На моей машине со следующими параметрами

при настройках графики
со следующими параметрами реестра

игра обычно выдавала около 15-20 FPS. Если поставить все на максимум, то получалось 3-5 FPS. В то же время на винде при таких же максимальных настройках у меня было 40-60 FPS. Снижалось до 30 во время битвы.

Блуждая по просторам интернета я наткнулся на маленький пост о том, что под wine starcraft2 не всегда использует весь потенциал вашего железа. То есть где-то есть компонент, который заставляет процесс засыпать на н-ое количество наносекунд и не нуждается в высокой производительности процессора, отчего последний работает в половину, а то и меньше, своей мощности.
Одним из решений этой проблемы является использование
taskset -p 2 'PID процесса'
Это заставит игру использовать практически 100% на одном из ядер и около 50% на другом, что дает значительный прирост производительности. В моем случае он составил около 15 FPS. В мирное время игра с данными настройками показывает 40-45 FPS, во время битвы снижается до 25, что вполне играбельно. Если вы сторонник геймплея и вам не важна графика, вы можете отключить эффекты и 3d портреты, что должно заметно освободить процессор и добавить вам еще 5-7 драгоценных кадров в секунду.

Следующей проблемой является то, что при быстром перемещении камеры из одной части карты в другую случаются заментые и немного раздражающие подвисания. Решить эту проблемы можно выставлением приоритета реального времени в графе "Планировщик ввода-вывода" в Системном мониторе. Так же я использовал
sudo renice -10 'PID процесса', что увеличивало приоритет процесса, однако, особой разницы я не заметил.

Нерешенной проблемой остается отсутствием фона или воды, вместо них лишь черный экран. Было замечено, что отключение фона (UMS Star Battle - битва в открытом космосе, карта - один большой фон, команда -hidebg позволяет отключить его) так же дает значительный прирост производительности. Порядка 5-6 FPS. Однако, отсутствие этих вещей сильно портит внешний вид.

Скриншоты до\после, отсутствие фона и влияние его отключения на производительность.

Надеюсь, кому-нибудь это поможет получить желаемый результат в wine и отобъет желание ставить винду ради игр(ы).

P.S. Я обычный пользователь, если где есть косяки в терминологии или в этом роде, сильно ногами не пинать. Я стараюсь.

Комментарии (22)

0
Гость - 30 Июнь, 2012 - 12:41

>>taskset -p 2 'PID процесса'
Это и с другими играми бодро работает. Спасибо.

0
Chibiko - 1 Июль, 2012 - 11:20
Изображение пользователя Chibiko.

Спс, в закладки, потестим 8)

0
Гость - 16 Декабрь, 2012 - 01:25

а если 4 ядра? taskset -p 4?)

0
Flameflower - 16 Декабрь, 2012 - 10:12
Изображение пользователя Flameflower.

Почитай, что делает taskset.
Таким образом ты лишь переназначаешь на каких ядрах у тебя будет считаться твой процесс.
Т.е. если это до тебя делал планировщик, то тут ты ручками сказал, что это считать здесь и баста карапузики. :)

0
Гость - 16 Декабрь, 2012 - 18:27

А скриптом это как то можно сделать, чтобы руками не делать каждый раз?

0
Flameflower - 16 Декабрь, 2012 - 20:09
Изображение пользователя Flameflower.

Можно.
Грепаешь PID и подставляешь его в кач-ве аргумента.

0
Гость - 16 Декабрь, 2012 - 21:38

эмм, а можно подробнее?)

+2
Chibiko - 17 Декабрь, 2012 - 08:46
Изображение пользователя Chibiko.

pidof processname - узнать PID процесса

0
Flameflower - 17 Декабрь, 2012 - 08:58
Изображение пользователя Flameflower.

Мать моя женщина...
А я то вывод ps грепаю...

0
Chibiko - 17 Декабрь, 2012 - 09:01
Изображение пользователя Chibiko.
0
Xenomorph - 17 Декабрь, 2012 - 09:49
Изображение пользователя Xenomorph.

pgrep тоже как вариант

0
Гость - 17 Декабрь, 2012 - 23:19

а подскажите, я правильно делаю?
wine /home/user/Программы/wow/Wow.exe
taskset -p 2 'pidof Wow.exe'

или лажа?) как отловить его, и сразу изменить проц для него?

0
DarkneSS - 18 Декабрь, 2012 - 01:12
Изображение пользователя DarkneSS.

Скорее всего taskset -p 2 `pidof wine`PS Кавычки имеют значение.

0
Chibiko - 18 Декабрь, 2012 - 07:12
Изображение пользователя Chibiko.

Тогда уж
taskset -p 2 `pidof wineserver`

0
Гость - 18 Декабрь, 2012 - 13:01

но в процессах у меня четко видко Wow.exe
почему wineserver

0
DarkneSS - 18 Декабрь, 2012 - 13:33
Изображение пользователя DarkneSS.

Проверьте, если отдаётся по pidof чонить осмысленное, используйте.

0
Гость - 18 Декабрь, 2012 - 13:59

ну я потом руками меняю проц для id и он показывает что было f стало 2, не работает..

0
DarkneSS - 18 Декабрь, 2012 - 14:31
Изображение пользователя DarkneSS.

Пробуйте wine и wineserver.

0
Гость - 18 Декабрь, 2012 - 15:06

wine - такого процесса нет, wineserver есть, пробовал - он не перенесся на другое ядро.

0
Гость - 18 Декабрь, 2012 - 15:20

а вообще имхо не работает эта фича... 4 ядра проц, 8 гиг оперативы, видяха последней модели NVIDIA - на альтераке все равно в толпе до 2 кадров в сек падает...

0
Flameflower - 18 Декабрь, 2012 - 17:08
Изображение пользователя Flameflower.

Господи, да играй ты в World of Warcraft под вендой. Ну не получишь ты тот же самый перфоманс под wine'ом. Даже если ты установишь себе crossover.

0
Гость - 18 Декабрь, 2012 - 17:36

Не стоит у меня винда, да и не охота две системы ставить.

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

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