Серверная (www.it-simple.ru)

Как замедлить игры на Windows и Linux


Многие старые игры, запущенные на современном многоядерном и многобитном железе, начинают летать, причём в самом плохом смысле этого слова. То есть, скорость процесса игры в несколько раз быстрее, чем планировалось программистами. Выглядит это всё как ускоренное видео — cмешно, конечно, но играть невозможно.

И в то время, когда всё прогрессивное человечество пытается игры ускорить, мы их будем замедлять.

Windows

В винде проблема возникает, как правило, из-за многоядерности проца. «В лоб» решается довольно просто:

  1. Запускаем игру
  2. Вызываем диспетчер задач (Ctrl+Shift+Esc)
  3. На вкладке «процессы» находим процесс игры, давим на нём правой кнопкой мыши и выбираем «Установить связь» или «Задать соответствие» (в зависимости от версии системы может называться по-разному)
  4. Убираем все галки, кроме «CPU 0»
  5. Возвращаемся в игру

И так придётся делать при каждом запуске игры.

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

Ещё, говорят, помогает установка программ AntiTurbo или Moslo.

Linux

В линухах корни проблемы немного другие. Здесь частота процессора варьируется в зависимости от текущей нагрузки. И получается, что при запуске игры она одна, а после запуска — другая, повышенная.

Решается двумя способами.

Первый способ — зафиксировать частоту процессора.

В убунте, например, это делается так:

cpufreq-selector -g performance

Вернуть всё обратно можно передав значение ondemand вместо performance.

Кстати, в зависимости от дистрибутива, команда cpufreq-selector может называться cpufreq-set (в пакете cpufrequtils).
Можно пойти и другим путём, без привязки к определённой программе:

echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
...
echo performance > /sys/devices/system/cpu/cpuN/cpufreq/scaling_governor

Ещё можно использовать апплет частоты процессора панели GNOME.

powersave — всегда пониженная частота, режим экономии питания
performance — всегда повышенная частота, режим максимальной производительности
ondemand — режим выбирает система, в зависимости от задач и нагрузки (по умолчанию)

Второй способ — нагрузить процессор непосредственно перед запуском игры. Например, таким скриптом:

# Flood the CPU for four seconds so that it is running at the currect speed
RandomFork () {
while [ "$SECONDS" -le "4" ]; do
let MYRND="$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM*$RANDOM$RANDOM+$RANDOM*$RANDOM/$RANDOM*$RANDOM"
done
}