🎮 Зачем это нужно

Запуск игр через Steam на Linux - это часто «танцы с бубном»: разные движки требуют разных флагов, под AMD и NVIDIA нужны разные переменные окружения, а инструменты вроде Gamescope и MangoHud нужно вручную встраивать в команду запуска.

Решение: steamscope.sh - скрипт-обёртка, который:

  • ✅ Автоматически определяет видеокарту (AMD/NVIDIA) и применяет нужные оптимизации
  • ✅ Поддерживает флаги под движки: Source, Unreal, Unity
  • ✅ Интегрирует Gamescope, Gamemode, MangoHud, FSR одной командой
  • ✅ Работает как %command% в настройках запуска Steam
  • ✅ Не ломает стандартный запуск - всё опционально

💡 Скрипт не заменяет Proton или Steam - он делает их работу предсказуемой и настраиваемой.


📦 Установка

Шаг 1: Скачать скрипт

# Создать директорию (если нет)
mkdir -p ~/.steam/steam/

# Скачать скрипт
curl -o ~/.steam/steam/steamscope.sh \
  https://gist.githubusercontent.com/ponfertato/85fc964664423eae1ac0a7ee91d53db6/raw/steamscope.sh

# Сделать исполняемым
chmod +x ~/.steam/steam/steamscope.sh

Шаг 2: Настроить игру в Steam

  1. Правой кнопкой по игре → Свойства
  2. В поле Параметры запуска добавить:
    ~/.steam/steam/steamscope.sh %command%
    
  3. (Опционально) Добавить флаги:
    ~/.steam/steam/steamscope.sh --gamemode --mangohud --engine=source %command%
    

Готово. При запуске игры скрипт автоматически подхватит настройки.


⚙️ Параметры запуска (категории)

🚀 Производительность

ФлагОписаниеДля кого
--gamemodeВключает gamemoderun для приоритета процессовВсе, особенно на слабых системах
--fsrВключает FSR-апскейлинг через VKD3D (AMD) / DXVK (NVIDIA)AMD GPU, низкий нативный FPS
--dxvkПринудительно использует DXVK вместо D9VKИгры с DirectX 9/10/11

👁 Мониторинг

ФлагОписаниеПример вывода
--mangohudПоказывает оверлей с FPS, загрузкой CPU/GPU, температурамиFPS: 87 │ CPU: 45% │ GPU: 72°C

🖥 Режим работы

ФлагОписаниеЗачем
--gamescopeЗапускает игру в изолированной сессии Wayland через GamescopeСтабильный FPS, адаптивная синхронизация, масштабирование
--resolution=1280x720Задает разрешение для Gamescope (по умолчанию - нативное)Тестирование, снижение нагрузки

🎯 Движки

ФлагПоддерживаемые движкиПримеры игр
--engine=sourceSource 1/2CS2, TF2, Garry’s Mod, Left 4 Dead 2
--engine=unrealUnreal Engine 3/4/5Risk of Rain 2, Deep Rock Galactic, Satisfactory
--engine=unityUnity7 Days to Die, Valheim, Among Us

Что добавляет каждый движок:

  • Source: -high -threads N +mat_vsync 0 +fps_max 0 +exec autoexec.cfg
  • Unreal: -dx12 -nomansky -notexturestreaming -nomovie
  • Unity: -screen-width W -screen-height H -nolog -batchmode

🔧 Как это работает (под капотом)

Автоматическое определение железа

# Скрипт проверяет видеокарту через lspci
GPU_INFO=$(lspci -k 2>/dev/null | awk '/VGA|3D/,/Kernel driver/ {if (/Kernel driver in use/) print $NF}' | tail -1)

# Для AMD:
[[ "$GPU_INFO" == *"amdgpu"* ]] && USE_AMD=true
# → Добавляет: RADV_PERFTEST=aco, AMD_DEBUG=nodcc

# Для NVIDIA:
[[ "$GPU_INFO" == *"nvidia"* ]] && USE_NVIDIA=true
# → Добавляет: PROTON_ENABLE_NVAPI=1, __NV_PRIME_RENDER_OFFLOAD=1

Сборка финальной команды

Скрипт строит команду «слоями»:

[gamemoderun] → [mangohud] → [gamescope -- ...] → [ИГРА + флаги движка]

Каждый слой добавляется только если соответствующий флаг передан.

Обработка %command%

Steam передаёт команду запуска как %command%. Скрипт:

  1. Находит место после исполняемого файла (но не внутри proton, steam-runtime и т.п.)
  2. Вставляет флаги движка после исполняемого файла, но до аргументов игры
  3. Это гарантирует, что флаги попадут именно в игру, а не в лаунчер

🎯 Примеры для популярных игр

Counter-Strike 2 (Source Engine, AMD)

~/.steam/steam/steamscope.sh \
  --engine=source \
  --gamemode \
  --mangohud \
  --fsr \
  --gamescope \
  %command%

Что получит игра:

  • Приоритет процессов через gamemoderun
  • Оверлей MangoHud с метриками
  • Апскейлинг FSR через VKD3D (для повышения FPS)
  • Запуск в Gamescope с адаптивной синхронизацией
  • Оптимизированные флаги Source: -high -threads 8 +fps_max 0

Deep Rock Galactic (Unreal Engine, NVIDIA)

~/.steam/steam/steamscope.sh \
  --engine=unreal \
  --gamemode \
  --dxvk \
  --mangohud \
  %command%

Особенности:

  • --dxvk включает DXVK для лучшей совместимости с Vulkan на NVIDIA
  • Флаги Unreal отключают тяжёлые эффекты: -nomansky -notexturestreaming
  • UE5_ALLOW_LINUX_DEBUGGING=1 для стабильности на Linux

7 Days to Die (Unity, кросс-платформа)

~/.steam/steam/steamscope.sh \
  --engine=unity \
  --gamemode \
  --fsr \
  --resolution=1280x720 \
  %command%

Зачем:

  • --resolution снижает нагрузку для плавного геймплея
  • --fsr компенсирует потерю детализации апскейлингом
  • Флаги Unity отключают логирование: -nolog -batchmode

🛠 Советы по настройке

Начинай с минимума

# Только игра (базовый запуск)
~/.steam/steam/steamscope.sh %command%

# + мониторинг
~/.steam/steam/steamscope.sh --mangohud %command%

# + оптимизация
~/.steam/steam/steamscope.sh --gamemode --mangohud %command%

Добавляй параметры по одному - так проще найти причину проблем.

Если игра падает

  1. Отключи --gamescope - самый частый источник конфликтов
  2. Отключи --gamemode - может конфликтовать с системными настройками
  3. Проверь логи:
    journalctl -f | grep -i steam
    

Разрешение и масштабирование

  • По умолчанию скрипт берёт нативное разрешение через xrandr
  • Для принудительного изменения: --resolution=1280x720
  • В сочетании с --gamescope и --fsr даёт гибкое управление качеством/производительностью

Локализация

Скрипт устанавливает:

export LANG="ru_RU.UTF-8"
export LC_ALL="ru_RU.UTF-8"

Если игра требует английскую локаль - переопредели в параметрах запуска:

LANG=en_US.UTF-8 ~/.steam/steam/steamscope.sh %command%

⚠️ Частые проблемы

# "gamescope: command not found"
→ Установить:
  # Arch: sudo pacman -S gamescope
  # Debian/Ubuntu: sudo apt install gamescope
  # Fedora: sudo dnf install gamescope

# "gamemoderun: command not found"
→ Установить:
  # Все дистрибутивы: sudo apt install gamemode или аналог

# Игра игнорирует флаги движка
→ Убедиться, что %command% стоит в конце строки
→ Проверить, что игра действительно на нужном движке (не все «названия» совпадают с реальностью)

# Нет оверлея MangoHud
→ Проверить, что mangohud установлен и в PATH
→ Для некоторых игр требуется: export MANGOHUD_DLSYM=1 (скрипт делает это автоматически)

# Низкий FPS после включения --fsr
→ FSR - это апскейлинг, а не магия: он повышает FPS за счёт качества
→ Попробуй снизить --resolution вместе с --fsr

# Скрипт не определяет видеокарту
→ Убедиться, что установлен pciutils: sudo apt install pciutils
→ Проверить вывод: lspci -k | grep -A2 -i vga

🔐 Безопасность и приватность

Скрипт не собирает данные, не отправляет ничего в сеть и работает полностью локально.

Что он делает:

  • Читает lspci для определения GPU (только для оптимизаций)
  • Устанавливает переменные окружения для процесса игры
  • Не модифицирует файлы игры или системы

Рекомендации:

  • Скачивай скрипт только с официального gist
  • Проверяй хэш при обновлении (опционально)
  • Не передавай скрипт с чувствительными данными в аргументах

🗂 Чеклист перед использованием

  • Установил зависимости: gamemode, mangohud, gamescope (по желанию)
  • Скачал скрипт в ~/.steam/steam/steamscope.sh и сделал исполняемым
  • Протестировал запуск одной игры с минимальными флагами
  • Проверил, что %command% стоит в конце строки параметров запуска
  • Ознакомился с локальной регуляторикой по использованию оверлеев в играх (если важно)

Ссылки