Обновление 2017+
Поскольку ответ был опубликован, Blizzard полностью переписала рендеринг Starcraft, поэтому описанные методы больше не работают с этой игрой. Теперь в него должен быть встроен апскейлер, а новый "обновленный" пакет текстур HD доступен для покупки через официальный магазин Blizzard.
Я решил оставить текст ниже таким, потому что он может быть полезен для работы со старыми играми с похожими движками, такими как оригинальный Diablo, или для игры со старыми пользовательскими картами, которые работают только с версией v1.16.1.
объяснение
По умолчанию сам монитор выполняет масштабирование. Разные мониторы имеют совершенно разные скейлеры - некоторые довольно хороши, а некоторые - болезненные, но ни один из них не является 2xsai или advmame. Обычно телевизоры с входами VGA масштабируются немного лучше, чем обычные мониторы.
Некоторые люди даже заходят так далеко, что покупают подержанные ЭЛТ-мониторы: они обычно дают лучшую картинку, потому что у них нет фиксированных физических пикселей - их разрешения аналоговые, "сглаживают" соседние пиксели, а старые игры обычно ожидают такого "масштабирования" произойдет.
Включение GPU scaling
(если доступно) заставляет видеокарту выполнять масштабирование, используя любой масштабер, реализованный на ее оборудовании. Он не настраивается, но может включать некоторую фильтрацию и, следовательно, выполнять работу лучше, чем ваш монитор.
Поскольку для этого вам нужно как минимум перехватить явные команды изменения разрешения из игры, любое решение проблемы - это своего рода взлом, который является очень сложной задачей, и любой взлом может вызвать проблемы с видео или геймплеем.
Другими словами, вам нужно каким-то образом взломать скейлер между выходом вашей игры и входом GPU.
Некоторые старые игры теперь имеют современные фанатские версии или обертки, которые могут поддерживать скейлеры, но в основном они ограничены эмуляторами (такими как MAME, PCSX, DOSBOX, SCUMMVM). Это потому, что им не нужно взламывать ОС / видеокарту и игру - они в любом случае эмулируют всю видеосистему, поэтому им проще просто применить фильтр к полученному изображению.
Для некоторых игр хаки были разработаны, чтобы показать большую часть игрового мира на экране (без масштабирования) - это не то, о чем вы просите, но, по крайней мере, игры выглядят не так безобразно, как при масштабировании.
Игры выводят свою графику по-разному - некоторые используют Windows API (GDI), некоторые используют видеокарту для визуализации 3D-изображения (Direct 3D, OpenGL), другие же (в основном 2D / псевдо-3D) используют DirectDraw для непосредственного вывода 2D-изображения на видеокарта. Может быть полезно знать, какая ваша игра использует, потому что могут быть разные инструменты или режимы для работы с каждым.
Из того, что я нашел:
- Кажется, что
Primitive wars
работают с DirectX/OpenGL
Starcraft (before 1.18)
, Horde 2
и Warlords 3
вероятно, используют DirectDraw
- Я не нашел никакой информации о
Dispel
и Rage of Mages 2
но, судя по ним, я бы тоже догадался о DirectDraw.
К сожалению, насколько я знаю, в любой из перечисленных игр нет хаков, которые поддерживают какие-либо продвинутые скалеры. Starcraft (1.16 и ниже) имеет несколько расширений, перечисленных ниже.
DDHack
Тем не менее, есть программа DDHack
или DirectDraw Hack
которую вы можете попробовать. Он обеспечивает по крайней мере какой-то масштабирующий эффект для игр DirectDraw. Не так хорошо, как 2xSAI, но лучше, чем ничего. Он работает только с некоторыми играми и может содержать ошибки, даже если он работает, но, вероятно, стоит попробовать.
Это работает так:
- Скачайте и распакуйте. Есть несколько версий, которые вы можете попробовать: Один, Два, Три
- Замените файл
ddraw.dll
в папке с игрой на файл, включенный в загрузку. Если вы не можете найти такой файл, скорее всего, он не будет работать с вашей игрой. Обязательно сделайте резервную копию оригинального файла!
- Отредактируйте файл
ddhack.cfg
с помощью простого текстового редактора, такого как блокнот. У него есть список опций, разделенных пробелами. Вероятно, вас интересуют halfnhalf
и bilinear
параметры - введите один из них в файл и сохраните. Если вы получаете только черный экран при запуске игры, попробуйте также включить опцию altwinpos
.
- Запустите игру. Если это работает, это должно выглядеть, по крайней мере, немного лучше.
DxWnd
Есть еще одна программа, которая теперь может работать с некоторыми типами игр (DirectDraw и Direct3D), но она имеет только билинейный скейлер. Полагаю, еще лучше, чем ничего.
- Загрузите его здесь, распакуйте и запустите
- Зайдите в
Menu -> Edit -> Add
чтобы создать новый игровой профиль.
- Введите
path
к игре, которую вы хотите запустить
- Снимите флажок
Run in window
если вы хотите запустить игру в полноэкранном режиме
- Перейдите в
Video -> Resolution
и установите его на собственное разрешение монитора.
- Под
DirectX -> Filtering
выберите Full Bilinear
- Нажмите
Ok
, выберите вновь созданный профиль, выберите Menu -> File -> Run
чтобы запустить игру
- Если игра не работает, выберите
Menu -> Edit -> Modify
и попробуйте настроить другие параметры в ней.
- Документация для DxWnd здесь
Теоретически, я полагаю, было бы не так сложно реализовать такие скейлеры, как 2xsai, в DxWnd, и исходный код открыт, но это все еще некоторая работа, которую кому-то нужно будет выполнить ...
Starcraft (v1.16 и ниже) взломать
Please read the message on top of this post.
Для этой игры доступны некоторые расширители разрешения (то есть увидеть больше карты, но с оригинальным разрешением):
Те должны иметь основные инструкции включены. Большинство из них требуют обновления StarCraft до последней не ремастированной версии (1.16.1).
Абсолютно Безумный Клудж
Это чистое безумие, но теоретически вы могли бы:
- заставить вашу видеокарту распознать несуществующий монитор
- заставьте вашу игру нарисовать картинку на своем экране (которую вы не увидите)
- получить средство захвата экрана DirectX (например, используемое для потоковой передачи видео на YouTube) для потоковой передачи невидимого экрана
- открыть видеопоток с помощью видеоплеера на обычном мониторе
- загрузить FFmpeg libmpcodecs '
hq2x
, 2xsai
или аналогичные фильтры (если они работают даже в ОС Windows)
- Разверните окно игрока в полноэкранный режим, а затем нажмите Alt + Tab для вашей реальной игры.
Затем вы бы посмотрели видеоплеер, транслирующий видео из вашей игры с вашего компьютера. Это не будет работать, если игра требует аппаратного курсора мыши, это также будет иметь небольшую задержку.
Я понимаю, что это смешно, и никогда не пробовал. Я совершенно не уверен, что это может сработать. Если так получилось, что есть кто-то, кто на самом деле думает, что этот метод даже стоит попробовать, пожалуйста, прокомментируйте.