Как лучше организовать поддержку различных разрешений в игре?
Всем привет! Оговорюсь что опыта в разработке игр у меня немного. Так вот. Пишу небольшую игру для PC, в жанре логических игр, и столкнулся с вопросом, как лучше организовать поддержку различных разрешений для игры. Хочу обеспечить поддержку большинства популярных на настоящий момент разрешений, хотелось бы так же иметь возможность корректно отобразить игру на мониторах как с соотношением сторон 4:3 так и с 16:9.
В настоящий момент попытался реализовать следующий подход: картинки были нарезаны исходя из разрешения 4К, потом из них "сверстал" игровые окна и меню, при запуске игры получаю соотношение ширины экрана в текущем разрешении к реальной ширине окон, затем делаю скейл для каждого игрового окна в полученном коэффициенте. Интерфейс при этом вписывается по ширине, но если разрешение монитора не пропорционально 16:9 то появляются белые полосы в верхней и нижней части экрана. Если попытаться высчитывать коэффициент для высоты и ширины отдельно и применять его к каждому элементу, то изображение при этом искажается, к тому же получаем проблемы со шрифтами.
Прошу вашего совета, как лучше решить эту задачу.
Спасибо за ответ, согласен что в том, что касается самого интерфейса, так будет логичнее всего. Но есть ещё один вопрос, уже относительно контента игры. Приведу конкретный пример. Одно из окон - таблица рекордов, там перечисление игроков и их результаты - время, кол-во очков, и т.д. У таблички отрисован собственный фон, различные графические элементы для строк, хидера, подвала таблицы, есть фон у самого окна. Всё это куча картинок, говоря в общем, внутреннее содержимое окна. Как с ним поступать при смене разрешения? Дело в том что я не использую какой либо движок, потому как рассудил что игра несложная и в визуальном плане могу обойтись только средствами QML.
Мне приходит в голову относительно контента только такая идея - рисовать окна таким образом, чтобы справа и слева были отступы, заполненные просто каким то фоном, не несущим функциональной нагрузки. И при смене разрешения делать скейл окон по высоте, позиционировать их по центру экрана, таким образом отрезая "лишний" фон справа и слева за краями экрана, и надеятся что ничего важного не оттяпано.. Но меня не покидает чувство что изобретаю велосипед.
flass: Можно глянуть как в VoltAir сделано, может там уже есть подобное. Я с играми не сталкивался, но мне кажется принципы верстки с кучей графических элементов для разных разрешений не сильно отличаются от таковых на сайтах.
Тут вариантов-то всего два, либо фиксированная таблица по центру, либо резиновая на всю ширину. Если оформление таблицы сложное и не повторяющееся, то растягивать не вариант.
Еще можно руками указать несколько диапазонов, которые будут влиять на Layout, например до 1024 по ширине делаем одно, а после 1600 третье.
Кстати, графику очень желательно делать в svg, экономит очень много сил и хорошо работает на дисплеях с любой плотностью пикселов, масштабируется без мыла, если попадать в пропорции.