Как улучшить производительность старых игр
Работая над графическим обновлением игры, передо мной встал вопрос: как улучшить её производительность? Исходного кода у меня не было, а обратный инжиниринг занял бы слишком много времени. Благо, познания в области Linux пригодились и здесь. В этом небольшом материале вы узнаете, как повысить производительность и избавиться от графических артефактов в старых играх на современных видеокартах.
Автор: Павел Прилуцкий | Источник: ixbt.games
Пояснение
Среди поклонников ретро-игр распространены четыре способа:
4GB Patch — бесплатная программа, позволяющая 32-битным приложениям задействовать 4 Гб RAM в 64-битных ОС.
DxWrapper — перехватчик и конвертер вызовов ранних версий DirectX.
DXVK — ретранслятор вызовов DirectX 9/10/11 в API Vulkan.
D3d8to9 — аналог DxWrapper, но без лишних опций и только для игр использующих DX8.
Сравним их эффективность на примере некогда популярной многопользовательской ролевой игры Perfect World и криминального экшена Grand Theft Auto: Vice City. Проекты созданы на базе устаревшего графического API, задействуют одно ядро процессора, всё ещё востребованы среди геймеров.
Тестирование
Замеры FPS производились MSI Afterburner 4.6.6 Beta 3.
К сожалению, из-за проблем с запуском пришлось заменить DXVK на нестабильную реализацию D8VK, из-за чего результаты тестирования на открытой местности вызывают сомнения. Тестовый же отрывок с D3d8to9 продемонстрировал проблемы с отображением оружия персонажа, которые при повторном замере более не проявились. Задействование программы, расширяющей диапазон буфера хранения данных, прибавило 3-5% к максимальному FPS. Общий прирост производительности от перевода MMORPG на «актуальные» графические API составил 20-35%.
Запуск классической версии Grand Theft Auto: Vice City на современных видеокартах приводит к забавному сбою: модели транспорта пропадают, а анимации сильно ускоряются. Установка D3d8to9 решает эту проблему. Показатели прироста производительности от перевода игры на DX9 практически идентичны Perfect World и составляют 20-40%.
Преимущества
Мы наглядно выяснили, что использование ретрансляторов в купе с программной на задействование 4 Гб способно прибавить старым играм пару процентов к максимальному FPS, а также исправить графические недостатки. Но зачем это нужно в век высокопроизводительных ПК, где буфер GPU насчитывает десятки гигабайт, а CPU давно перешагнули планку в 5 ГГц? Всё дело в том, что разработчики не всегда стремятся выпускать свои шедевры на отличные от Windows платформы, из-за чего многие хорошие проекты навсегда остаются запертыми в узких рамках операционной системы и устаревающих технологий. Ретрансляторы же позволяют вновь насладиться любимыми играми без необходимости переустанавливать ОС или искать на барахолках устаревшее железо. Не говоря уже о возможности активации FSR, DLSS, TXAA и т. п.
Заключение
Задействование графических ретрансляторов схоже по своей философии с эмуляторами игровых приставок, позволяя пользователю запускать старые игры без привязки к оборудованию, операционной системы и версии графического API. Однако не стоит забывать, что, в отличие от нативного выполнения, любая прослойка потребует дополнительных ресурсов и не всегда способна обеспечить точное воссоздание оригинальных эффектов. Использовать ли её или ограничиться нативным выполнением — решать только вам.