Files
for-servers/client/windows-game-optimize.ps1
T

167 lines
8.3 KiB
PowerShell

# game-optimize.ps1 — оптимизация Windows 11 под игры (сеть + FPS + input lag)
# ЗАПУСК: PowerShell от Администратора
# Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# .\game-optimize.ps1
#
# ВНИМАНИЕ: некоторые твики требуют перезагрузки
$ErrorActionPreference = "Stop"
$Host.UI.RawUI.WindowTitle = "Game Optimization — Windows 11"
Write-Host "============================================" -ForegroundColor Cyan
Write-Host " Game Optimization — Windows 11" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan
Write-Host ""
# Проверка прав администратора
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "ОШИБКА: запустите от Администратора" -ForegroundColor Red
exit 1
}
# ── 1. Сеть (TCP/IP) ─────────────────────────────────────
Write-Host "[1/7] Сетевые оптимизации..." -ForegroundColor Yellow
# TCP autotuning
netsh int tcp set global autotuninglevel=normal 2>$null
Write-Host " TCP autotuning: normal"
# RSS
netsh int tcp set global rss=enabled 2>$null
Write-Host " RSS: enabled"
# Chimney offload
netsh int tcp set global chimney=enabled 2>$null
Write-Host " TCP Chimney: enabled"
# Initial RTO (вместо 1 сек — 2 сек, меньше ретрансмитов)
netsh int tcp set global initialRto=2000 2>$null
Write-Host " Initial RTO: 2000ms"
# Отключить автотюнинг окна (Windows иногда агрессивно уменьшает)
netsh int tcp set heuristics disabled 2>$null
Write-Host " Heuristics: disabled"
# ── 2. Network Throttling ────────────────────────────────
Write-Host "[2/7] Network throttling — off..." -ForegroundColor Yellow
$path = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile"
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name "NetworkThrottlingIndex" -Value 0xffffffff -Type DWord
Set-ItemProperty -Path $path -Name "SystemResponsiveness" -Value 0 -Type DWord
Write-Host " Throttling: OFF (FFFFFFFF)"
# ── 3. Power Plan — Ultimate Performance ─────────────────
Write-Host "[3/7] Электропитание..." -ForegroundColor Yellow
$plan = powercfg /list | Select-String "Ultimate Performance"
if (-not $plan) {
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 2>$null
}
powercfg /setactive e9a42b02-d5df-448d-aa00-03f14749eb61 2>$null
# Отключить USB selective suspend
powercfg /setacvalueindex scheme_current 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
powercfg /setdcvalueindex scheme_current 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
# Отключить PCI Express power saving
powercfg /setacvalueindex scheme_current 501a4d13-42af-4429-9fd1-a8218c268e20 ee12f906-d277-404b-b6da-e5fa1a576df5 0
powercfg /setdcvalueindex scheme_current 501a4d13-42af-4429-9fd1-a8218c268e20 ee12f906-d277-404b-b6da-e5fa1a576df5 0
Write-Host " Ultimate Performance: ACTIVE"
Write-Host " USB suspend: OFF"
Write-Host " PCIe savings: OFF"
# ── 4. FPS / Input lag ───────────────────────────────────
Write-Host "[4/7] FPS + input lag..." -ForegroundColor Yellow
# Game Mode — включить
Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AutoGameModeEnabled" -Value 1 -Type DWord -Force
# Game DVR — отключить (режет FPS)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\ApplicationManagement\AllowGameDVR" -Name "value" -Value 0 -Type DWord -Force
# Отключить прозрачность (экономит GPU)
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" -Name "EnableTransparency" -Value 0 -Type DWord -Force
# Отключить анимации
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Value ([byte[]](0x90,0x12,0x03,0x80,0x10,0x00,0x00,0x00)) -Type Binary -Force
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop\WindowMetrics" -Name "MinAnimate" -Value 0 -Type String -Force
# Priority Control (оптимизация на фоновые службы НЕ для игр — наоборот, программы)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl" -Name "Win32PrioritySeparation" -Value 0x26 -Type DWord -Force
Write-Host " Game Mode: ON"
Write-Host " Game DVR: OFF"
Write-Host " Transparency: OFF"
Write-Host " Animations: OFF"
# ── 5. HPET + таймеры ───────────────────────────────────
Write-Host "[5/7] Таймеры (HPET)..." -ForegroundColor Yellow
bcdedit /deletevalue useplatformclock 2>$null
bcdedit /set useplatformclock false 2>$null
bcdedit /set disabledynamictick yes 2>$null
Write-Host " HPET: OFF (снижает input lag)"
Write-Host " Dynamic tick: OFF"
# ── 6. Nagle / TCP ───────────────────────────────────────
Write-Host "[6/7] Nagle алгоритм..." -ForegroundColor Yellow
# Отключить Nagle = меньше задержка TCP
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "TCPNoDelay" -Value 1 -Type DWord -Force
# TCP ACK frequency — отправлять ACK на каждый пакет (не ждать)
$ifaces = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces" -ErrorAction SilentlyContinue
foreach ($iface in $ifaces) {
Set-ItemProperty -Path $iface.PSPath -Name "TcpAckFrequency" -Value 1 -Type DWord -Force -ErrorAction SilentlyContinue
}
Write-Host " Nagle: OFF"
Write-Host " TCP ACK frequency: 1"
# ── 7. Предупреждения ────────────────────────────────────
Write-Host "[7/7] Ручные твики (не автоматизированы)..." -ForegroundColor Yellow
Write-Host ""
Write-Host " !!! ОБЯЗАТЕЛЬНО СДЕЛАТЬ ВРУЧНУЮ !!!" -ForegroundColor Red
Write-Host ""
Write-Host " 1. VBS / Core Isolation OFF:" -ForegroundColor White
Write-Host " Settings → Windows Security → Device Security → Core Isolation → OFF" -ForegroundColor Gray
Write-Host " ИЛИ: bcdedit /set hypervisorlaunchtype off" -ForegroundColor Gray
Write-Host " (+5-15% FPS, -2ms input lag)" -ForegroundColor DarkGreen
Write-Host ""
Write-Host " 2. MSI Mode для GPU + NIC:" -ForegroundColor White
Write-Host " Скачай MSI Utility v3, запусти от админа" -ForegroundColor Gray
Write-Host " GPU → MSI + High priority" -ForegroundColor Gray
Write-Host " NIC → MSI + High priority" -ForegroundColor Gray
Write-Host " (-3ms input lag)" -ForegroundColor DarkGreen
Write-Host ""
Write-Host " 3. NIC coalescing:" -ForegroundColor White
Write-Host " Device Manager → Network Adapter → Properties → Advanced" -ForegroundColor Gray
Write-Host " Interrupt Moderation → OFF" -ForegroundColor Gray
Write-Host " Receive Buffers → 4096" -ForegroundColor Gray
Write-Host " Transmit Buffers → 4096" -ForegroundColor Gray
Write-Host ""
# ── Итог ─────────────────────────────────────────────────
Write-Host "============================================" -ForegroundColor Cyan
Write-Host " Готово" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan
Write-Host ""
$restart = Read-Host "Требуется перезагрузка. Перезагрузить сейчас? (y/n)"
if ($restart -eq "y") {
Write-Host "Перезагружаем..." -ForegroundColor Yellow
Restart-Computer -Force
}