Пару слов о производительности и оптимизации
На дворе 2021 год, а в головах у многих людей (как минимум меня) не может утихнуть противостояние между производительности конюшни (прим. так называется osu!stable, если слово stable перевести как существительное) и osu!lazer.
Несмотря на уже проделанную работу, вопрос оптимизации для многих стоит остро. Попробуем кратко разобраться в этом всем. Уточню лишь, что у меня уровень понимания данной темы средний, поэтому некоторые тезисы могут вызвать кринж, но надеюсь, что я правильно все понимаю. Если что, у меня процессор Intel i3-9100 и видеокарта GeForce 960.
- osu!stable и ее хваленная производительность.
Не нужно забывать, что осу была создана изначально не очень опытным в программировании Пеппи еще в 2007 году, когда процессоры еще могли работать на одном ядре, поэтому осу с тех времен (по настоящее время) может работать только с одним ядром процессора (однопоточный режим работы) в большинстве случаев, если не считать костыли.
Все мы знаем, что конюшня запускается на любом компьютере. Это является ее главной проблемой. Она запускается и чувствует себя нормально только на компьютерах. Все из-за принципов ее работы. Одна из важнейший частей игры — инпут лаг (задержка ввода), привязана к вашему текущему значению FPS (кадры в секунду), что в свою очередь влияет на комфорт игры. Многие игроки по приходу в игру не знают этого понятия, поэтому могут играть с любой задержкой и привыкать к ней. Это нормально. Стоит упомянуть, что во время самой игры значение фпс не показывается, а вместо них показывается количество ms задержки, что как раз говорит о задержке ввода в текущий момент (меньше — лучше). Ms, если что, не прямой показатель задержки ввода, а время, за которое компьютер рисует кадр. Ввод же подстраивается под это значение и обычно не может его превышать.
Однако, почему все обстоит именно так? У осу есть несколько параметров работы:
Вертикальная синхронизация — количество кадров становится равно герцовке вашего монитора. Если у вас обычный ноут/комп, то это значение часто равно 60 кадрам или же 16.66 ms. Если 75, то 13 ms. Если выше, то значение ms будет меньше. В этом состоянии игра в основном потребляет ресурсы процессора, нежели видеокарты. Он, хоть и должен быть самым оптимизированным, таковым по факту не является. Из-за того, что количество фпс ограничено, сильно увеличивается задержка ввода, что наоборот усугубляет ваш игровой опыт. А еще он делает больно компьютерам, у которых слабый процессор. Демонстрировать производительность конюшни я буду через ФОТОГРАФИИ МОНИТОРА. Потому что я могу себе это позволить и я хочу делать именно так. Сюда еще идет фактор, что невозможно нормально заскринить диспетчер при полноэкранной осу (а мне нужна именно полноэкранная, ибо в окне нагрузка меньше, но задержка больше, а нам это не нужно).
Первая фотография сделана специально так, чтобы было видно осу на втором мониторе, а еще задержку в 13 мс (у меня монитор 75 герц). Смотреть в диспетчере задач нужно на ЦП и Графический процессор (я знаю, что их видно плохо, есть вторая фотография, где посмотреть надо именно на ЦП). Я запускаю карту и жду около минуты, чтобы в диспетчере было достаточно данных. Забавно, но первую половину карты осу не могла нормально выровнять потребление процессора и только во второй половине поняла, сколько ресурсов ей нужно. Здесь она почти не потребляет ресурсы видеокарты, а потребляет в основном процессор.


Затем идет режим Power Saving (устанавливает задержку в 150 фпс, нужен только для ноутбуков) и Optimal (600 кадров). Первый я скипну за ненадобностью, так что сразу перейдем к оптималу. Он устанавливает задержку примерно в 2.2 ms, что уже является вполне играбельным. По ресурсам он почти не потребляет процессор (он почти в полном простое), а еще потребляет среднее количество ресурсов видеокарты. Он считается оптимальным с точки зрения именно потребления ресурсов, а не удобства игры. Да, из-за внутреннего устройства осу приходится с этим мириться, что она жрет непомерно много, давая вот такие костыли.
Последним идет режим, который использует большинство игроков — Нет (во время игры). Во время игры осу пытается выжать максимум фпс, чтобы задержка была наименьшей. Интересно, что она все еще жрет почти только видеокарту, а процессор едва ли загружен. Видеокарта нужна, как мы уже знаем, для более быстрой прорисовки кадров, что ведет к меньшей задержке. Но ваша видеокарта будет загружена в потолок. Из-за этого фактора становится невозможным представить порт текущей осу на мобильные устройства. В них нет такого видеоядра, есть только центральный процессор, который в соло не сможет выжать для осу внятную производительность, потому что осу не может нормально задействовать процессор для отрисовки кадров без сильной потери производительности (на самом деле не только из-за этого, но как факт, и не нужно приводить в пример осу!дроид, я говорю именно про прямой порт конюшни). А еще осу не может в многопоточный режим, поэтому все данные ввода и вывода обрабатываются одновременно, что усугубляет и без того такую себе картину.
Вы сможете возразить, что у вас осу не тормозит и играется отлично! Потому что у вас есть видеокарта! Забери у вас видеокарту и вы будете страдать. Вы сможете играть на голом процессоре, но вы сможете только играть, не более.
2. Что может предложить osu!lazer?
В лазере есть классический VSync, который работает также, как и в конюшне, но тут он дает иной результат. Остальные режимы привязаны к вашей герцовке, но лишь частично. В лазере больше нет прямой привязки инпут лага к вашему фпс. Все это возможно благодаря Multithreaded режиму, когда лазер работает в 4 потоках — аудио, ввод, обновление данных и вывод. Это абсолютно новые понятия в данном контексте, но именно они позволяют получать лазеру очень весомое преимущество перед конюшней в долгосрочной перспективе.
Вы можете включить однопоточный режим, после чего лазер будет работать также, как и конюшня. Установка здешних переключателей прямо влияет только на вывод. Задержка (если режим многопоточный) ВСЕГДА будет минимальной. Однопоточный режим в основном нужен для мобильных устройств, где лазер старается в приоритете экономить энергию без жертвования производительности (нельзя пожертвовать тем, чего нет).
На большинстве компьютеров можно смело включать многопоточный режим и все. А вот включать максимальное количество кадров теперь… бессмысленно. Лазеру больше не нужно жрать ресурсы в потолок, чтобы дать вам наименьшую задержку ввода. Ему нужны ресурсы только на обработку и вывод. Посмотрим же, сколько он хавает. Здесь уже будут скриншоты, потому что лазер, что очень странно, меньше всего ресурсов потребляет в режиме «в окне без рамок» (аж в 2 раза при включенном VSync). Он здесь вообще едва ли потребляет ресурсы. Если же переключить лазер в полноэкранный режим, то нагрузка на процессор увеличится ровно в 2 раза, что… необычно. Да, если что, это потребление лазера во время игры со включенным VSync, но в многопотоке.
Если же включить однопоток, то мы вообще практически не увидим никакого потребления. Да, при однопоточном VSync играть неудобно, ибо задержка будет высокая (как в конюшне), но вспомните, сколько потребляет она, а сколько — лазер. Именно в таком режиме лазере по дефолту запускается на мобильных телефонах. Что, на самом деле, позволяет ему там в принципе работать.
Сразу скажу, что в лазере есть наиболее оптимальный режим, при котором стоит играть большинству — 2х герцовка + многопоток. Все, лазеру больше ничего не нужно. Потребление ресурсов соответствующее. В этом режиме, к слову, теряется разница между многоэкранным или оконным режимом. Они потребляют плюс-минус одинаково при одинаковой задержке.
Как вы можете заметить, лазер почти везде опирается в основном на процессор, что позволяет ему освободить ресурсы видеокарты, не жертвуя ничем. Именно по этой причине если у вас слабый процессор, то у вас могут быть проблемы с лазером. Ему все равно на вашу видеокарту. Ему нужен ваш процессор. С голым процессором вы даже сможете СТРИМИТЬ (не жать ноты, а именно запускать стрим), полагаясь только на процессор. Лазер будет работать как обычно. Пруф — https://www.youtube.com/watch?v=MtwPGq9xGSw (тестовый 40-минутный стрим на голом процессоре, где к концу стрима процессор был под 65 градусов всего). И да, при всем этом у вас может подлагивать интерфейс лазера, что весьма забавно, но уже давно должно быть пофикшено. Да, меню в лазере потребляет больше, чем непосредственно игровой процесс.
Обзор 4 и 8х герцовки банально не имеет смысла. Лазер очевидно будет потреблять больше ресурсов, но меньше, чем при безлимитном. Кстати о нем. Он просто потребляет больше ресурсов. Все. И опять же, он потребляет в основном процессор, а не видеокарту. Да, фпс он рисует меньше, чем в конюшне (в среднем в 4 раза), потому что в этом теперь просто нет смысла.
Несмотря на это все, оптимизация лазера не доведена до конца. Из-за смещения акцента в сторону процессора лазер практически потерял возможность нормально воспроизводить щитмапы с тысячами объектов. Не сказать, что это сильная потеря, но как факт. Зато он может запускаться теперь на любом устройстве.
При всем этом у вас все равно могут быть вопросы относительно того, почему лазер тормозит именно у вас? Понятия не имею, почему он тормозит именно у тебя. Процессор у тебя значит слабый, комп засран, да что угодно может быть. Лазер работает иначе, ему нужны другие ресурсы, поэтому результат может сильно отличаться.
