Для тех, кто интересуется, почему это проблема пиксельной графики, вот небольшой пример использования сцены из Super Mario World:
Если мы просто масштабируем пиксельную игру с 720 до 1080 во время выполнения (как это делает обычная игровая камера), мы получаем артефакты из-за нецелого соотношения пикселей экрана на исходный тексель. Проверьте несоответствие в числах из масштабного примера справа, и как искаженный лист и ухо Марио выглядят.
Это играбельно, но он потерял эту очаровательную четкость пиксель-арта. И в движении эти артефакты могут ползти по спрайту , делая его мерцающим.
Использование режима фильтрации, который смешивает смежные пиксели, позволит избежать пульсации, но вместо этого размывает и размывает пиксельную графику, так что это также не очень желательно.
К сожалению, соотношение 1.5x между 720p и 1080p является худшим сценарием, с которым мы можем столкнуться.
Как вы заметили, масштабирование 1х слишком мало, а 2х слишком велико, с одинаковой шириной поля в обоих направлениях, и между ними нет целого коэффициента масштабирования с целыми числами .
Ваши варианты сводятся к:
Делайте масштаб 1x , показывая вашу игру в окне на 1/3 меньше экрана, добавляя декоративные рамки, если вам нужно заполнить пространство.
Возможно, вы сможете расширить кадрирование, показывая больше своей сцены за раз на экранах с высоким разрешением. Это уменьшает необходимые отступы / почтовые ящики, но вам придется оценить, влияет ли это на ход игры.
(например, дает ли это игрокам на некоторых устройствах несправедливое преимущество или позволяет им находить секреты, которые они не должны так легко увидеть?)
Увеличьте в 2 раза и обрежьте свою сцену , чтобы игрок видел меньше сцены за раз (примерно 3/4, насколько они могли видеть раньше).
Это также может повлиять на игру, например. из-за того, что игроку трудно увидеть места, в которых он должен совершить двойной прыжок.
Вы можете компенсировать это с помощью логики камеры, имея панораму просмотра, чтобы следить за игроком или предвидеть его, так что важный контент все еще виден на одном экране при меньшем кадрировании, но нет универсальной лучшей камеры для использования.
Если вы решите пойти по этому пути, попробуйте поделиться некоторыми подробностями вашего игрового процесса и текущей камеры, а также примером сцены. При этом мы могли бы помочь отрегулировать поведение камеры, чтобы компенсировать (или ваша игра может быть просто плоской требует большей видимости)
Создайте альтернативные активы с другим разрешением . (Да, это много работы, но дает вам больше возможностей для контроля внешнего вида игры)
Это не означает, что вы должны выбросить свои существующие активы, которые отлично смотрятся на 720p. В этой статье описывается контекстное переключение между различными наборами ресурсов для поддержки более широкого диапазона целевых разрешений (в Unity, но этот принцип можно применять и в играх, отличных от Unity).
Как вы заметили, перерисовка всех ваших активов в половину размера ( 16x16 плиток, 32x32 символа ) позволит вам обрабатывать 720p в 2x масштабе и 1080p в 3x масштабе с таким же количеством плиток, которое вы видите сейчас. Тем не менее, вы можете найти маленькое разрешение плитки более ограниченным визуально.
Вы также можете нарисовать альтернативный набор «большого формата», который на 150% больше ( 48x48 плиток, 96x96 символов ), который будет обрабатывать 1080p в масштабе 1x. (Вы использовали бы свои существующие активы для 720p или 1440 и т. Д.). Увеличенное разрешение должно помочь вам сохранить верность вашего текущего искусства, поэтому вам не нужно жертвовать стилем и деталями, которые у вас есть сейчас.
Третий вариант - нарисовать только немного меньший набор активов ( 24x24 плитки, 48x48 символов ), который может обрабатывать 1080p в масштабе 2x, и опять же может означать меньшую потерю деталей, чем вдвое все размеры ваших активов.
Все три из этих опций позволят вам сохранить ваши кадры и игровой процесс одинаковыми при 720 и 1080, но за счет примерно в два раза больше ресурсов.
Так что, к сожалению, здесь нет легкой победы, просто разные компромиссы.