Решили: синхронизация кадров и потолок FPS переехали к IDisplayService; по умолчанию vSync включён, потолок — опция и работает только при выключенной синхронизации. Правило вынесено чистым типом FramePacing и закрыто тестом FramePacingTests.

Почему: до этого у игры не было ни того, ни другого. Application.targetFrameRate не встречался в коде ни разу, а vSyncCount приходил из уровня качества — и на активном уровне (m_CurrentQuality: 0, Very Low) он равен нулю. Замер в play mode это подтвердил живьём: targetFrameRate = -1, vSyncCount = 0, sync_interval = 0. Игра рисовала столько кадров, сколько потянет железо, ради кадров, которых никто не видит: нагрев, шум кулера, батарея.

Отвергли два варианта. Оставить владельцем уровень качества — тогда появление переключателя качества означало бы, что игрок, выбравший «покрасивее», молча меняет и синхронизацию: один факт с двумя владельцами. Обойтись одним targetFrameRate (первое предложение агента) — хуже, потому что документация Unity рекомендует обратный приоритет: vSyncCount это аппаратная синхронизация, а targetFrameRate — программный таймер, дающий микростаттер, и при vSyncCount > 0 он игнорируется целиком. Поэтому потолок обнуляется при включённой синхронизации: иначе в файле и в UI жило бы число, на которое игра не смотрит, и «поставил 60, идёт 165» читалось бы как баг.

Сказано: «Давай для начала замер профайлером? Заодно изучим вопрос оптимизации игры? А то мы про это вообще не вспоминали.» (06.08.2026, сессия f4d258ef). Заход начат по этой просьбе; приоритет «сначала vSync, потом development build» — тоже выбор Макса.

Грабли: QualitySettings.SetQualityLevel перезаписывает vSyncCount значением уровня. Поэтому ApplyPacing зовётся при каждом применении, а не один раз на старте: появится в игре смена качества — наш владелец обязан вернуть своё после неё. Отдельно: пасовка кадров применяется и в редакторе, в отличие от разрешения — причина щадить редактор относится к перекроенному Game view, а не к vSync, и разработчик должен видеть ту же плавность, что игрок.

Владелец правды: Core/Settings/FramePacing.cs, Game/Services/DisplayService.cs (ApplyPacing), тест FramePacingTests. Замер и остальные находки — docs/performance-progress.md (леса захода).